Introducing Status Page Components | openstatus

Introducing Status Page Components

Jan 30, 2026 | by Maximilian Kaske | [company]

Status pages started simple for us: a page showed the uptime of a monitor. That assumption shaped our entire data model - and eventually became our biggest limitation.

We embraced this tight coupling early on because it let us move fast. The downside? It made us move slow when requirements evolved.

Over the year, we've received requests from users wanting to share status reports without any uptime monitoring attached. We tried addressing this with the page.configuration object - you could choose between bar type, card value, and showing uptime - but that was us duct-taping a more fundamental problem: status page components were tightly coupled to monitors.

The Solution

From the ground up, we've reworked the relationships between status reports, maintenances, pages, and monitors. The result: page components - a flexible new architecture that decouples status pages from monitors.

┌──────────────────────────────────────────────────────────────┐
│                 BEFORE (monitors_to_pages)                   │
└──────────────────────────────────────────────────────────────┘

incidents ───▶ monitors ◀─── maintenances
                    │     ◀─── status_reports
                    │
                    ▼
            monitors_to_pages (m-to-m)
                    │
                    ▼
                  pages

┌──────────────────────────────────────────────────────────────┐
│                  AFTER (page_components)                     │
└──────────────────────────────────────────────────────────────┘

incidents ───▶ monitors
                    │
                    │ (optional)
                    ▼
            page_components ◀─── maintenances
                    │       ◀─── status_reports
                    ▼
                  pages

Component Types

A page component has a type that determines its behavior:

Future Types

These types can be extended. We see third-party as a big third pillar where status updates from third-party services can be displayed in near real-time. Feel free to reach out to us if you're interested in those components.

Page components form, grouped by regions

Key Benefits

This architectural change brings several advantages:

Pricing and Plan Limits

Page components are counted across your workspace based on your plan tier:

The flexibility of static components means you can now maximize your plan limits more effectively. Previously, every component required a monitor (which counts against your monitor limit). Now you can:

Migration Approach

Our strategy was to sync the legacy database while incrementally migrating every part of our stack:

This allowed us to step by step test and merge changes to production without having to pause the migration.

API Compatibility

For existing integrations, the v1 API maintains backward compatibility. Status page responses continue to include the legacy monitorIds and monitors fields to prevent breaking changes. However, these fields now only return page components of type monitor - the static components are excluded from these legacy fields.

Looking ahead: Future API versions will use the pageComponents structure as the primary interface. Thibault is already cooking our v2 API version including an SDK to improve the DX around openstatus!