A four-state timeline of instants — one lane per track, a shape per kind, marks that crowd into one counted cluster instead of overlapping, brush-or-keyboard zoom into any window, and a now marker from an injected instant.
Preview in your theme
Loading preview…
This component is part of Pro
The install command, prompt and concept map are included with a Pro license — one purchase unlocks every Pro component, forever.
status="ready" · a deploy day on four lanes. Every mark is one instant, so the long quiet morning and the four minutes in which everything happened are drawn at their real distance. At this width the afternoon burst arrives as ringed marks carrying counts, one per lane — drag across them, or put the cursor on one and press Enter, and it takes itself apart. Everything after the injected instant of 15:20 is drawn hollow — scheduled, not yet true — and the component never asks the clock to work that out. Both callbacks are wired below the card.
Release feed · payments
Deploys, alerts and database events on one axis.
30 events · 4 lanes · Mar 12 07:55 – Mar 12 19:07 (fitted to the feed)
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
info (18)
success (5)
warning (3)
critical (4)
several events, too close to separate
hollow: still ahead of the marked instant
now, from the injected instant
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. 8 events sit behind 3 marks because they land within 14px of each other — click one, or press Enter on it, to zoom in until they separate. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 30 events across 4 lanes, Mar 12 07:55 to Mar 12 19:07. The first is at Mar 12 08:20 and the last at Mar 12 18:42, 10h 23m apart. 8 of them sit behind 3 marks that stand for more than one event; every one is listed in the table below. The now marker sits at Mar 12 15:20, with 7 marks still ahead of it.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
web 4.12.0 canary
Deploy
Mar 12 09:05
success
1% of traffic · eu-west-1
its own mark
web 4.12.0 to 25%
Deploy
Mar 12 09:40
success
25% of traffic
its own mark
web 4.12.0 to 100%
Deploy
Mar 12 10:30
success
all regions
its own mark
Connection pool raised
Deploy
Mar 12 12:15
info
pool 40 → 120
its own mark
Rollback web 4.12.0
Deploy
Mar 12 14:50
critical
back to 4.11.6
its own mark
web 4.12.1 canary
Deploy
Mar 12 17:30
info
scheduled · 1% of traffic
its own mark, ahead of the marked instant
index rebuild opsn
API
Mar 12 08:29
info
315 ms · eu-west-1
its own mark
cache warm jd21
API
Mar 12 09:23
info
242 ms · ap-south-1
its own mark
token rotation emh7
API
Mar 12 09:42
info
864 ms · us-east-1
its own mark
index rebuild 5o2i
API
Mar 12 10:51
info
326 ms · us-east-1
its own mark
index rebuild 6t8z
API
Mar 12 11:42
info
316 ms · eu-west-1
its own mark
index rebuild ysyx
API
Mar 12 12:10
info
407 ms · eu-west-1
its own mark
cache warm h1x9
API
Mar 12 12:56
info
460 ms · us-east-1
its own mark
cache warm e70d
API
Mar 12 14:04
info
545 ms · ap-south-1
its own mark
scale down 0d76
API
Mar 12 14:28
info
363 ms · eu-west-1
one of 4 events on a shared mark, spanning 8 minutes
5xx rate 12%
API
Mar 12 14:34
critical
checkout · 12%
one of 4 events on a shared mark, spanning 8 minutes
Connection pool exhausted
API
Mar 12 14:35
critical
pool exhausted
one of 4 events on a shared mark, spanning 8 minutes
Circuit opened
API
Mar 12 14:36
warning
checkout · 30 s
one of 4 events on a shared mark, spanning 8 minutes
cache warm d241
API
Mar 12 15:24
info
320 ms · eu-west-1
its own mark, ahead of the marked instant
index rebuild jzer
API
Mar 12 16:00
info
279 ms · us-east-1
its own mark, ahead of the marked instant
cache warm qp0s
API
Mar 12 16:46
info
348 ms · us-east-1
its own mark, ahead of the marked instant
scale up y0kd
API
Mar 12 17:46
info
467 ms · ap-south-1
its own mark, ahead of the marked instant
scale down t3n1
API
Mar 12 18:42
info
463 ms · ap-south-1
its own mark, ahead of the marked instant
Vacuum finished
Database
Mar 12 08:20
info
48 GB reclaimed
its own mark
Failover to replica
Database
Mar 12 14:36
critical
primary → replica-2
one of 2 events on a shared mark, spanning 2 minutes
Replica promoted
Database
Mar 12 14:37
success
replica-2 promoted
one of 2 events on a shared mark, spanning 2 minutes
Maintenance window opens
Database
Mar 12 18:00
info
scheduled · 40 minutes
its own mark, ahead of the marked instant
p95 above SLO
Alerts
Mar 12 14:33
warning
p95 1.9 s
one of 2 events on a shared mark, spanning 53 seconds
Paging on-call
Alerts
Mar 12 14:34
warning
@oncall-payments
one of 2 events on a shared mark, spanning 53 seconds
Alert cleared
Alerts
Mar 12 15:02
success
p95 back to 340 ms
its own mark
onEventSelect → nothing selected · onWindowChange → the full window
status="empty" · a valid contract with no events at all, worded so it cannot be mistaken for a failed fetch.
Release feed · payments
Deploys, alerts and database events on one axis.
Nothing has happened yet
Marks appear here once an event carries an instant this chart can place.
status="loading" · three skeleton lanes, aria-hidden, honouring prefers-reduced-motion, with no timer involved.
Release feed · payments
Deploys, alerts and database events on one axis.
Loading events
status="error" · the fetch failed. Try again only appears when onRetry is passed, and clicking it flips the card to ready.
Release feed · payments
Deploys, alerts and database events on one axis.
Couldn't load these events
The data source didn't respond.
Awkward feed · three rows carry a timestamp that is not one (“yesterday”, the 30th of February, a day-first date) and one row repeats an id already used; all four are counted on the card and none of them is drawn. One row carries a calendar day and no clock time, which is legal and lands at midnight — that is why the window opens where it does, and not a guess. Fourteen shards were reindexed on the same second, so they become one mark carrying a 14 that no zoom can separate — the count is the honest answer, and all fourteen are still rows in the data table. The declared “Retired shard” lane was measured and stayed empty, so it keeps its track instead of vanishing, and both the long label and the long lane name elide with the full text in the readout.
Batch jobs · 12 March
One feed carrying every kind of awkward row.
18 events · 3 lanes · Mar 11 23:23 – Mar 12 15:51 (fitted to the feed)
3 rows carry a timestamp this chart cannot place · 1 duplicate id — not drawn.
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
info (15)
success (1)
warning (2)
several events, too close to separate
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. 14 events sit behind 1 mark because they land within 14px of each other — click one, or press Enter on it, to zoom in until they separate. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 18 events across 3 lanes, Mar 11 23:23 to Mar 12 15:51. The first is at Mar 12 00:00 and the last at Mar 12 15:15, 15h 15m apart. 14 of them sit behind 1 mark that stand for more than one event; every one is listed in the table below. No reference instant was supplied, so there is no now marker.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
Date with no time
Jobs
Mar 12 00:00
info
no clock time, so it lands at midnight
its own mark
Canary green
Jobs
Mar 12 09:12
success
first run
its own mark
This one parses
Jobs
Mar 12 11:05
warning
the three rows after it are not
its own mark
Rotate the payments service signing key across every region and revoke the old one
Jobs
Mar 12 15:15
warning
the readout and the table keep the whole thing
its own mark
Shard 1 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 1 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 2 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 2 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 11 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 11 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 12 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 12 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 13 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 13 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 14 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 14 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 3 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 3 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 4 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 4 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 5 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 5 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 6 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 6 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 7 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 7 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 8 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 8 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 9 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 9 of 14
one of 14 events on a shared mark, spanning the same instant
Shard 10 reindexed
Batch reindex (nightly, sharded)
Mar 12 14:02
info
shard 10 of 14
one of 14 events on a shared mark, spanning the same instant
One event · a feed with a single row has no span to fit an axis to, so the window opens half an hour either side of it instead of collapsing to a division by zero. Here the injected instant is that same moment, so the now line runs exactly through the mark and the mark is filled — nothing about the picture is ahead of it.
Release feed · new service
A feed that has produced exactly one row so far.
1 event · 1 lane · Mar 12 11:17:30 – Mar 12 12:17:30 (fitted to the feed)
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
success (1)
now, from the injected instant
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 1 event across 1 lane, Mar 12 11:17:30 to Mar 12 12:17:30. The first is at Mar 12 11:47:30 and the last at Mar 12 11:47:30, the same instant apart. Every event has its own mark. The now marker sits at Mar 12 11:47:30.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
First deploy
Deploy
Mar 12 11:47:30
success
the only row the feed returned
its own mark
variant="flag" · a quarter of milestones, few enough that every mark can wear its name. Labels are packed into as few rows as they fit in, per lane, and a lane is only as tall as its own names needed; a label that fits no row is dropped and counted rather than drawn over its neighbour. The four marks after the injected instant are hollow, which is the same distinction the “ahead” note in the table makes in words.
Launch plan · Q1
One quarter, one flag per milestone.
8 events · 3 lanes · Feb 7, 2026 – Apr 9, 2026 (fitted to the feed)
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
info (4)
success (3)
warning (1)
hollow: still ahead of the marked instant
now, from the injected instant
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 8 events across 3 lanes, Feb 7, 2026 to Apr 9, 2026. The first is at Feb 10, 2026 and the last at Apr 7, 2026, 56 days apart. Every event has its own mark. The now marker sits at Mar 12, 2026, with 4 marks still ahead of it.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
Kick-off
Product
Feb 10, 2026
success
—
its own mark
Private alpha
Product
Feb 24, 2026
success
42 invited
its own mark
Open beta
Product
Mar 16, 2026
info
waitlist opens
its own mark, ahead of the marked instant
General availability
Product
Apr 7, 2026
info
all regions
its own mark, ahead of the marked instant
Pen test
Platform
Mar 10, 2026
warning
3 findings, all closed
its own mark
SOC 2 report
Platform
Mar 23, 2026
info
—
its own mark, ahead of the marked instant
Pricing page
Growth
Mar 3, 2026
success
—
its own mark
Press embargo lifts
Growth
Mar 24, 2026
info
—
its own mark, ahead of the marked instant
Ninety seconds of the same incident · the axis drops to seconds on its own and the marks that stood for the whole burst on the day view come apart, which is how the order of the first three — 5xx, then the pool, then the primary going away — becomes readable, and that order is the one thing a postmortem needs. clusterDistance=4 asks for less merging than the default 14, so on a wide card even events a second apart keep their own glyph.
Incident 2026-03-12 · payments
Ninety seconds around the failover, from the same feed.
15 events · 4 lanes · Mar 12 14:33:57 – Mar 12 14:36:04 (fitted to the feed)
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
info (9)
success (1)
warning (1)
critical (4)
now, from the injected instant
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 15 events across 4 lanes, Mar 12 14:33:57 to Mar 12 14:36:04. The first is at Mar 12 14:34:02 and the last at Mar 12 14:35:18, 1 minute apart. Every event has its own mark. The now marker sits at Mar 12 14:36:00.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
health probe p9g
API
Mar 12 14:34:02
info
44 in flight
its own mark
5xx rate 12%
API
Mar 12 14:34:05
critical
checkout · 12%
its own mark
Pool exhausted
API
Mar 12 14:34:06
critical
pool exhausted
its own mark
health probe n08
API
Mar 12 14:34:11
info
58 in flight
its own mark
health probe znn
API
Mar 12 14:34:20
info
4 in flight
its own mark
health probe j88
API
Mar 12 14:34:31
info
30 in flight
its own mark
health probe 0em
API
Mar 12 14:34:41
info
34 in flight
its own mark
health probe 02m
API
Mar 12 14:34:49
info
10 in flight
its own mark
health probe vdj
API
Mar 12 14:34:58
info
34 in flight
its own mark
health probe 0iu
API
Mar 12 14:35:07
info
13 in flight
its own mark
health probe btx
API
Mar 12 14:35:17
info
33 in flight
its own mark
Circuit opened
API
Mar 12 14:35:18
warning
checkout · 30 s
its own mark
Primary unreachable
Database
Mar 12 14:34:06
critical
primary unreachable
its own mark
Failover started
Database
Mar 12 14:34:42
critical
primary → replica-2
its own mark
Replica promoted
Database
Mar 12 14:35:06
success
replica-2 promoted
its own mark
Fixed window + density="compact" · the same release feed pinned to 09:00–16:00. Rows outside that window are not drawn and the card counts them out loud, because a window that quietly swallows the evening is how a timeline comes to lie. Compact lanes are 22px instead of 30px, for a sidebar. Zooming stays inside the pinned window, and Show everything returns to it rather than to the feed's full span.
Release feed · payments
Deploys, alerts and database events on one axis.
22 events · 4 lanes · Mar 12 09:00 – Mar 12 16:00 (fixed window)
8 rows fall outside this window — not drawn.
Drag across the plot to zoom, or press + and − from the keyboard.
Point at a mark — or press Tab and use the arrow keys — to read it.
info (10)
success (5)
warning (3)
critical (4)
several events, too close to separate
hollow: still ahead of the marked instant
now, from the injected instant
Every mark is one instant, not a span: the distance between two of them is real elapsed time, and a lane only looks busy where the feed was. 8 events sit behind 3 marks because they land within 14px of each other — click one, or press Enter on it, to zoom in until they separate. Arrow keys walk a lane, up and down change lane, + and − zoom around the cursor, 0 shows everything.
Event timeline: 22 events across 4 lanes, Mar 12 09:00 to Mar 12 16:00. The first is at Mar 12 09:05 and the last at Mar 12 15:24, 6h 20m apart. 8 of them sit behind 3 marks that stand for more than one event; every one is listed in the table below. The now marker sits at Mar 12 15:20, with 1 mark still ahead of it.
Every event in the drawn window, lane by lane and in time order. Events that share a mark on the chart each keep their own row here, so nothing is only reachable by zooming.
Event
Lane
When
Kind
Detail
Drawn as
web 4.12.0 canary
Deploy
Mar 12 09:05
success
1% of traffic · eu-west-1
its own mark
web 4.12.0 to 25%
Deploy
Mar 12 09:40
success
25% of traffic
its own mark
web 4.12.0 to 100%
Deploy
Mar 12 10:30
success
all regions
its own mark
Connection pool raised
Deploy
Mar 12 12:15
info
pool 40 → 120
its own mark
Rollback web 4.12.0
Deploy
Mar 12 14:50
critical
back to 4.11.6
its own mark
cache warm jd21
API
Mar 12 09:23
info
242 ms · ap-south-1
its own mark
token rotation emh7
API
Mar 12 09:42
info
864 ms · us-east-1
its own mark
index rebuild 5o2i
API
Mar 12 10:51
info
326 ms · us-east-1
its own mark
index rebuild 6t8z
API
Mar 12 11:42
info
316 ms · eu-west-1
its own mark
index rebuild ysyx
API
Mar 12 12:10
info
407 ms · eu-west-1
its own mark
cache warm h1x9
API
Mar 12 12:56
info
460 ms · us-east-1
its own mark
cache warm e70d
API
Mar 12 14:04
info
545 ms · ap-south-1
its own mark
scale down 0d76
API
Mar 12 14:28
info
363 ms · eu-west-1
one of 4 events on a shared mark, spanning 8 minutes
5xx rate 12%
API
Mar 12 14:34
critical
checkout · 12%
one of 4 events on a shared mark, spanning 8 minutes
Connection pool exhausted
API
Mar 12 14:35
critical
pool exhausted
one of 4 events on a shared mark, spanning 8 minutes
Circuit opened
API
Mar 12 14:36
warning
checkout · 30 s
one of 4 events on a shared mark, spanning 8 minutes
cache warm d241
API
Mar 12 15:24
info
320 ms · eu-west-1
its own mark, ahead of the marked instant
Failover to replica
Database
Mar 12 14:36
critical
primary → replica-2
one of 2 events on a shared mark, spanning 2 minutes
Replica promoted
Database
Mar 12 14:37
success
replica-2 promoted
one of 2 events on a shared mark, spanning 2 minutes
p95 above SLO
Alerts
Mar 12 14:33
warning
p95 1.9 s
one of 2 events on a shared mark, spanning 53 seconds
Paging on-call
Alerts
Mar 12 14:34
warning
@oncall-payments
one of 2 events on a shared mark, spanning 53 seconds