Q1 2025
DoneA calmer foundation
A new workspace architecture makes every project faster to navigate and easier to share.
A free animated roadmap component React and Next.js teams can use for product milestones.
Product roadmap
What we have shipped, what we are refining now, and the foundations already taking shape for what comes next.
Q1 2025
DoneA new workspace architecture makes every project faster to navigate and easier to share.
Q2 2025
DoneLive presence, focused review threads, and durable hand-offs bring teams into one clear flow.
Q3 2025
CurrentFlexible stages now respond to the way each team plans, reviews, and ships its best work.
Q4 2025
NextPublic APIs, event streams, and composable automations open the workspace to every tool.
Early 2026
Context-aware assistance will turn project history into useful briefs, decisions, and next steps.
Roadmap Cards is a free roadmap component React and Next.js teams can use to present shipped, current, and upcoming milestones. When the roadmap has room, cards alternate around a centre spine and enter from their own side. In a narrower space, the same chronology becomes one readable column beside a left spine. The layout follows the roadmap's own width rather than the screen's, so it also fits a sidebar or a narrow column.
Pass three to eight items in chronological order and the component handles the responsive layout and scroll choreography. Each milestone reveals once, as it scrolls into view, and stays revealed. It uses one semantic ordered list, visible status labels, and aria-current on the active step. Reduced-motion visitors see the complete roadmap at rest from the start, with nothing animating, while standard motion uses transform and opacity only.
Add the @te registry to your components.json once:
{
"registries": {
"@te": "https://templateempire.io/r/{name}.json"
}
}Then install the component:
npx shadcn@latest add @te/timeline-roadmapimport { TimelineRoadmap } from "@/components/timeline-roadmap";
export default function Page() {
return (
<TimelineRoadmap
items={[
{ id: "foundation", period: "Q1", title: "Foundation", description: "The new workspace ships.", status: "done" },
{ id: "workflows", period: "Q2", title: "Workflows", description: "Adaptive planning enters beta.", status: "now" },
{ id: "platform", period: "Q3", title: "Platform", description: "Public APIs arrive next.", status: "next" },
]}
className="mx-auto max-w-5xl"
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
| items | { id: string; period: string; title: string; description: string; status?: "done" | "now" | "next" }[] | required | Three to eight milestones in chronological order. IDs must remain stable across updates, and at most one item should use the now status. |
| className | string | undefined | Additional classes merged onto the roadmap section root. |
Roadmap Cards deliberately keeps its reveal distances, timing, breakpoint (48rem of its own width), and geometry fixed. Use className for outer width and spacing, and customise the standard semantic colour tokens in your theme to restyle the cards, spine, markers, and status accents without changing the component API.
:root {
--surface: color-mix(in oklch, var(--primary) 6%, var(--background));
--border: color-mix(in oklch, var(--foreground) 16%, transparent);
}
<TimelineRoadmap items={items} className="mx-auto max-w-6xl" />