The journey,
beautifully clear.
A shipment timeline for the experience after checkout. Make every scan readable, every exception visible, and every uncertain update honest.
Built for real-world tracking data: carrier exceptions, customs scans, cached results, and local times without a timezone.
The component makes no requests and includes no telemetry. Bring your own data, or connect Trace on your server.
Example carrier
Shipment journey
DEMO-1042
Demo data · This is an illustrative shipment, not a live tracking result.
- Label created
- On the way
- Out for delivery
- Delivered
Scan history
4 eventsDelivered to the recipient
Latest reported eventExample destination
Out for delivery
Example delivery depot
Arrived at the sorting facility
Example sorting hub
Shipping label created
Example origin
Illustrative scenarios, including stale and unavailable states. No real parcel or estimated delivery is represented.
From clone to timeline.
Install the starter with Node 22+ and open localhost:3000. Local scenarios work immediately. The five-minute target covers the local demo; account verification and optional webhook setup take additional steps.
- 01 · Try the component. Switch states and themes without making API calls.
- 02 · Connect the sandbox. Add your key on the server and use a separate private-preview password.
- 03 · Use your own data. Map any provider, or connect a real shipment through Trace.
git clone https://github.com/traceapi-dev/trace-ui.git
cd trace-ui
npm ci
npm run dev
# Open http://localhost:3000
# No API key or database needed for the demo.Drop it into your app.
Use the complete timeline or compose summary, progress, history, freshness and exception primitives. Add split-order views, choose comfortable or compact density, and localize the interface into English, Spanish, French or Arabic. There is no Tailwind dependency or required Trace branding. The pinned download works while registry publication is being prepared.
npm install https://traceapi.dev/downloads/traceapi-timeline-0.2.0.tgz
import { ShipmentTimeline } from "@traceapi/timeline";
import "@traceapi/timeline/styles.css";
<ShipmentTimeline shipment={yourShipment} theme="light" />Signed updates, saved first.
The Next.js example includes a webhook receiver that verifies the raw body, persists it in a Postgres inbox, and deduplicates replayed events. Storage failure stays retryable. It does not send customer notifications or perform order actions.