Audience: Leadership, product, engineering
Purpose: Boss-facing timeline anchored to Application Flow publish in 1–2 weeks, then realistic 2-week iteration waves
Last updated: June 2026
Planning anchor date: June 29, 2026
Executive summary
| Milestone | Target | What ships |
|---|---|---|
| M1 — AppFlow publish | Jul 13, 2026 (1–2 weeks) | Clickable end-to-end prototype, stakeholder-ready |
| M2 — Internal validation | Jul 27, 2026 | Designer + stakeholder + developer sign-off cycle |
| M3 — Architecture aligned | Aug 10, 2026 | Dev/DevOps RFC approved; CI + manual QA green |
| M4 — Injectable DS proven | Aug 31, 2026 | 2 pilot integrations; adoption guide |
| M5 — Playground operational | Sep 21, 2026 | Vibe-code workflow + graduation path |
| M6 — Multi-brand demo | Oct 12, 2026 | Theme switcher + Foundation brand pilot |
Principle: Publish first. Iterate in 2-week waves. Do not start rebranding or external npm publish until M3–M4 gates pass.
Roadmap at a glance
gantt
title Spring Design Library Roadmap
dateFormat YYYY-MM-DD
section Publish
P0Sprint :p0, 2026-06-29, 14d
M1AppFlowPublish :milestone, m1, 2026-07-13, 0d
section Wave1
InternalValidation :w1, 2026-07-14, 14d
M2ValidationComplete :milestone, m2, 2026-07-27, 0d
section Wave2
ArchitectureDevOps :w2, 2026-07-28, 14d
M3ArchAligned :milestone, m3, 2026-08-10, 0d
section Wave3
InjectableDS :w3, 2026-08-11, 21d
M4InjectableProven :milestone, m4, 2026-08-31, 0d
section Wave4
PlaygroundVibeCoding :w4, 2026-09-01, 21d
M5PlaygroundLive :milestone, m5, 2026-09-21, 0d
section Wave5
MultiBrandTheming :w5, 2026-09-22, 21d
M6ThemeDemo :milestone, m6, 2026-10-12, 0d
Milestone detail
M1 — Application Flow publish (Jun 29 – Jul 13, 2026)
Duration: 1–2 weeks
Outcome: Stakeholders can click through the full Personal Loan flow without engineering assistance.
Exit criteria:
-
startlanding screen built (not placeholder) -
analyzing-applicationroutes to success / declined / foundation outcomes -
verify-bankhas prototype Continue →verify-identity - Gallery + standalone app both serve the flow
- Component coverage audit ≥90% DS usage
- Manual walkthrough checklist signed
-
npm run lint && npm run buildpass
Publish URLs:
| Channel | URL |
|---|---|
| Gallery | /library/page/appflow/personal-loan/start |
| Standalone | /personal-loans/start |
| Playground embed | /library/playground/projects/live-prototyping/application-flow-live-prototype |
Scope lock: P0 only. Defer P1 items (mobile pass, recovery screen) if needed to hit date.
M2 — Internal validation complete (Jul 14 – Jul 27, 2026)
Duration: 2 weeks
Outcome: Prioritized backlog from three review audiences, ranked by Inspired four-risk model.
Exit criteria:
- Designer review session completed → design sign-off or change list
- Stakeholder demo session completed → go/no-go for broader sharing
- Developer architecture review completed → notes feed Wave 2 RFC
- Backlog updated with risk tags (value / usability / feasibility / viability)
- Master plan status updated
Parallel delivery: Begin P1 spec items (skip/recovery paths, promote loan-amount/purpose-of-loan to ready).
M3 — Architecture aligned (Jul 28 – Aug 10, 2026)
Duration: 2 weeks
Outcome: Engineering and DevOps agree on how the DS and AppFlow are built, tested, and deployed.
Exit criteria:
- Architecture RFC signed (package boundaries, consumption model, publish path)
- CI runs lint + build for both apps
- manual QA smoke test in CI:
start → analyzing → application-success - Deployment doc for gallery vs personal-loan app
M4 — Injectable DS proven (Aug 11 – Aug 31, 2026)
Duration: 3 weeks
Outcome: Spring look-and-feel can be applied to an external host app in <4 hours using tokens alone.
Exit criteria:
- Injectable DS guide published (
injectable-ds-guide.md) - Pilot A: blank Next.js + tokens only — pass
- Pilot B: vibe-coded page + L1+L2 layers — pass
- Pilot C: personal-loan standalone confirmed outside gallery chrome
- Component gap matrix documented (what exists vs fallback)
Gate: Do not npm-publish until M3 RFC approved.
M5 — Playground operational (Sep 1 – Sep 21, 2026)
Duration: 3 weeks
Outcome: Anyone can start a vibe-coded experiment in the Playground with a clear path to package graduation.
Exit criteria:
- Submission workflow documented (owner, status, approval goal)
- Graduation path tested: playground → package PR → gallery doc
- ≥1 playground project graduates to
@spring/ds-react - Embed preview URLs work for stakeholder review (
?embed=1)
M6 — Multi-brand theme demo (Sep 22 – Oct 12, 2026)
Duration: 3 weeks
Outcome: Theme switching demonstrated in gallery; partner override spec for DPP flows.
Exit criteria:
- Theme provider pattern implemented (
data-themeCSS variable swap) - Gallery theme switcher on foundation + AppFlow demo
- Foundation flow as second-brand pilot
- Partner override spec documented (token overrides, not forked components)
- Screenshot diff on 3 screens per theme
Gate: M4 injectable guide validated; AppFlow publish-quality at M1.
Dependency map
flowchart TD
m1[M1AppFlowPublish]
m2[M2InternalValidation]
m3[M3ArchitectureAligned]
m4[M4InjectableDS]
m5[M5Playground]
m6[M6MultiBrand]
m1 --> m2
m2 --> m3
m3 --> m4
m4 --> m6
m2 --> m5
m4 --> m5
- M1 blocks everything — no meaningful iteration without a walkable prototype.
- M3 blocks external npm publish — feasibility must be resolved first.
- M4 blocks M6 — rebranding before injectability creates duplicate token systems.
- M5 can start after M2 but benefits from M4 adoption patterns.
What we defer (explicitly out of 15-week scope)
| Item | Why deferred | Revisit when |
|---|---|---|
| Production APIs / Flinks / Twilio | Gallery is visual prototype | Production product team |
| Full mobile pass (20 screens) | P1 after publish | Wave 1 prioritization |
| External npm public registry | Needs M3 architecture | After M3 RFC |
| Turborepo / monorepo tooling | Low priority at 2 apps | When >3 workspaces |
| Code Connect gallery-side migration | Medium debt, not blocking | Dedicated pass post-M3 |
Reporting cadence (for leadership)
| When | Format | Content |
|---|---|---|
| Daily (publish sprint only) | Standup / Slack | P0 task status, blockers |
| End of each wave | 30-min review | Milestone exit criteria checklist |
| Bi-weekly | Roadmap update | Milestone status, risk register, next wave scope |
Risk register
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| 1–2 week publish missed | Medium | High | Scope-lock P0; defer P1 |
| "Publish" confused with production | Medium | High | Label all URLs as prototype |
| Injectable DS blocked without npm | Low | Medium | L1+L2 works via CSS import |
| Rebranding started too early | Medium | High | Gate to M6; document in decision framework |
| Team capacity split across waves | Medium | Medium | Parallel tracks only where dependencies allow |
Related documents
| Document | Role |
|---|---|
| 01-project-overview-and-goals.md | Vision, OKRs, Inspired framework |
| 03-phase-playbook.md | Detailed tasks and testing per wave |
| 04-product-decision-framework.md | When to rebrand vs feature vs UX |
| personal-loan-appflow-master-plan.md | P0/P1/P2 engineering tasks |