React Deployment Pipeline
What passed, what's running, what's waiting on a human — and the one button that puts production back the way it was. A release board reduced to the four things you actually need at 2am.
Deploy v3.4.1
Awaiting approvala1c92f0· h.kursun
Installation
Props
| Prop | Type | Description |
|---|---|---|
| version | string | Version being deployed |
| commit | string | Commit SHA |
| author | string | Who triggered it |
| stages | PipelineStage[] | { id, name, status, durationMs?, approver?, detail? } |
| liveVersion | string | What's live now — enables rollback |
| onApprove | (stageId: string) => void | Fired when a gate is approved |
| onRollback | () => void | Fired on rollback |
Gates are a status, not a button somewhere else
gate is a first-class stage status. A pipeline paused for human approval is neither running nor failed, and showing it as either is how releases get forgotten mid-flight. It renders amber with an inline Approve button, and a banner names who is holding it — approving marks the gate passed and starts the next pending stage.
The header status is derived, in priority order: failed beats awaiting approval beats in progress beats deployed, so the most urgent state always wins. When a pipeline fails, the banner says which stage broke and reassures you what production is still running — the second half of that sentence is the one that lowers a pulse rate.
Rollback is deliberately always available whenever liveVersion is set, styled as a destructive-hover outline rather than a primary button: reachable in one click, never the thing you hit by accident.
New components every week
Get the week's new Kelvin UI components and templates in one short email. No spam, unsubscribe anytime.