North star: maximize React on Rails Pro adoption (trust-based license) through three funnels — new-app adoption (primary), migrations from Inertia/Next , and OSS→Pro upgrades . Public direction: ROADMAP.md . Strategy language: internal/planning/CONTEXT.md. Vite decision: internal/adr/0001-rspack-answers-vite.md.
Headline themes (all P0/P1 work maps to one): 🏎 Provable performance (every claim gets a public reproducible artifact) · 🚀 Onboarding simplicity (neutralize Inertia's "one command" edge) · 🤖 Agent-native development .
Supersedes #3864 (June 30-day plan — 12/16 children shipped; retrospective on that issue). This umbrella + the 17.0.x / 17.1 / 17.2 / 18.0 milestones are the scheduling surface; roadmap:17x marks this roadmap generation.
Produced by the 2026-07-11 whole-backlog triage: 115 open issues dispositioned (6 review-only agents, evidence-verified per issue; rubric: customer/CI evidence outranks AI-analysis findings; needs-customer-feedback never scheduled without evidence).
🔴 17.0.x — release-line must-fix (milestone 17.0.x )
Issue
What
Why it gates
#4357
Adopt stable react-on-rails-rsc 19.2.1
Final-blocking; awaits upstream npm publish (rc.1 pinned meanwhile). Carries the RSC CVE-train fixes (bundles react-server-dom-webpack ~19.2.7)
#4567
Land #4594 backport, close rsc#187
Final-blocking merge mechanics
#4536
Changelog entry for #4531
Must land before final stamps the changelog
#4571
Renderer per-thread connection semantics + stale doc
Ships in final via #4394 ; bounded-reuse fix in 17.0.x patch
#4581
Streaming caches persist error chunks (cache poisoning)
Sibling of fixed #4550 /#4551 ; needs failing-boundary spec
(Release execution itself: #4569 + gate #3823 — tracking issues, not roadmap items.)
🚀 17.1 — onboarding + agent-native headline (milestone 17.1 , ~6–8 wks after final)
Headliners: #4557 FOUC pipeline: prod CI gate + layer deletion (step 0 shipped in 17.0.0 — P0) · #4602 agent-legible doctor (--format=json, copy-promptable fixes) · #4603 agent-builds-the-app tutorial + scripted eval · #4553 Pro license token via Rails credentials (customer-requested) · #4604 existing-app installer Pro prompt (OSS→Pro funnel).
Modern-React quick wins: #3883 <Activity> phase 2a · #3885 cacheSignal test+docs · #3886 19.2 reveal-batching validation (P1).
Bug/quick-win cluster (2026-07 reviews): #4329 perf-marks queue leak · #4572 Redux store rebind on hydrate_on · #4582 html_options mutation (FrozenError) · #4583 stale RailsContext after Turbo nav (core) · #4584 HTTP bundle charset/status · #4585 domId selector metachars · #4565 jest exclusion residual · #4561 CSS test fixture shapes (fold into #4557 ).
Security cluster (maintainer-filed): #4595 RSC payload endpoint authorization (P1 — docs warning can ship in 17.0.x) · #4596 node-renderer hardening (pre-auth multipart cap first) · #4597 secret/PII log hygiene (renderer_url userinfo-stripping first).
Docs/content: #3805 OSS core-concepts SVGs · #3897 versioned docs + search (site repo) · #3898 demo fleet currency (bump pass at final).
🏎 17.2 — provable performance headline (milestone 17.2 )
PPR is the headline: #3571 Track B implementation (promoted P1; plan: internal/planning/ppr-implementation-plan.md; stable React 19.2 prerender/resume) with #3485 Turbo interaction. Proof: #3169 benchmark CI re-enabled as gate · #4073 dedicated-hardware benchmark runner (root of the perf-regression noise cluster) · #3492 A/B benchmark mode.
Also: #3488 Rspack RSC production path (P1; native RSCRspackPlugin pivot — upstream Rspack 2.x native RSC informs it) · #4600 Rspack DX parity benchmarks vs Vite · #4601 "Why Rspack (and not Vite)" page (after #4600 numbers) · #4605 agent toolchain v2 — Skills-in-package + slim-MCP re-eval (maintainer decision needed : #3870 was closed NOT_PLANNED 2026-06-18; new ecosystem evidence in the issue) · #4385 selective hydration investigation (active, PR #4593 ).
💥 18.0 — breaking batch (milestone 18.0 , unscheduled)
#4271 / #4274 / #4279 Redux phase-out (17.x deprecation shipped; removal batch) · #2552 bundler-neutral config renames. Breaking changes accumulate here per the post-RC lock.
🗂 Roadmap, unscheduled (roadmap:17x, no milestone)
#3253 +#3263 Gumroad staging benchmark artifacts (consolidate) · #3497 rsc monorepo move (de-risks every RSC release; pain behind #4357 ) · #3804 Pro SSR SVG diagrams · #3832 agent-eval harness Part B (funding decision; pairs with #4603 ) · #3873 routing prefetch leg (Inertia <Link> answer; unblocked) · #3891 SSG on PPR shells (after #3571 ) · #3920 Compiler follow-ups · #4049 Server-Component CSS delivery (design unsettled; upstream rsc#180) · #4133 i18n TS types (API decision first) · #4577 Pro CI dual-version matrix (lockfile quick-win available).
🅿️ Parked (25 — parked label; valid but off-roadmap)
Awaiting customer evidence: #3811 component identity RFC · #3874 image helper (docs recipe shipped #3955 ) · #3877 RUM hooks (docs shipped #3954 ) · #3921 font follow-ups · #4236 error-value retry semantics · #4313 source-map caps · #4325 AsyncPropsEmitter log level.
Blocked/sequenced: #3572 CDN edge-resume (needs #3571 phase 6) · #3582 renderer transport cluster root (needs Phase 0 materiality profiling).
Ride-alongs: #4321 benchmark shim debt (with #3169 ) · #4498 contract-pair guards · #4499 workflow concurrency · #4502 /#4503 /#4504 /#4506 Pro hardening residuals · #4505 knip hygiene.
Deliberately deferred: #2018 AI security scanners · #3266 security@ alias (org email task) · #3373 Vite adapter (ADR-0001; revisit 18.0) · #3449 zizmor · #4079 llms-full required-check (revisit trigger: drift reaches main) · #4127 batch-QA lane · #4322 pr-ci-readiness diagnosability · #4576 merge-ledger evidence gate (agent-workflows scope).
✅ Closed by this triage (evidence on each)
#2169 , #2678 , #3240 , #3896 (llms-full: live + drift-guarded), #3908 , #3952 , #4111 , #4292 , #4426 , #4560 , #4566 — plus #3864 (retrospective) and #3788 (superseded by this triage).
✅ Close candidates — maintainer-approved and executed 2026-07-12 (20 closed)
All 20 closed with reason comments. Evidence preserved: #4323 re-filed upstream as shakacode/agent-workflows#144 ; #3553 's docs residual spun out as #4609 (17.1); #4598 's unverified claims transferred onto #4557 .
#2180 (pnpm catalogs) · #2572 (ECC patterns) · #3128 (Gumroad hub → consolidate into #3144 ) · #3553 (client-refs RFC: implemented; docs residual) · #3583 (UDS: evaluated-negative) · #3584 (wire encoding: same gate) · #3974 (coordination umbrella: children carry the work) · #3999 (capacity-AI posture → superseded by scale-to-zero) · #4228 (skills dogfood: satisfied by usage) · #4230 /#4434 /#4476 /#4486 (GHA exercise chores) · #4284 (4th AI reviewer) · #4315 (self-described borderline-wontfix) · #4323 (re-file in agent-workflows) · #4347 /#4453 /#4537 (batch-QA bookkeeping) · #4598 (FOUC simplify — verify unique claims, fold into #4557 ; @AbanoubGhadban ).
📌 Tracking issues that stay open
#3823 release gate (P0) · #4569 final assembly · #4346 pre-release review ledger · #4010 audit ledger · #3865 React 19.2 umbrella (P0) · #3125 migration PRs · #3144 Gumroad narrative (canonical) · #3355 Inertia demo ports · #3802 SVG umbrella (close when #3804 /#3805 done) · #4187 dependabot ledger (migrate to rsc repo after final) · #4507 housekeeping (near-done: #4426 closed by this pass).
Maintainer decisions queued
Agent toolchain v2 (17.2): ship Skills in-package + version-matched bundled docs; slim MCP deferred pending #4603 eval #4605 — Skills-in-package + slim-MCP: does the RFC + build: a React on Rails MCP server (doctor-as-JSON, generators, component scaffold, doc & error-code search) #3870 ruling extend? (Recommend: Skills yes, MCP waits for Tutorial + scripted eval: an AI agent builds a React on Rails Pro app end-to-end, unaided #4603 eval evidence.)
Close-candidate list above (20 issues) — bulk sign-off or per-issue.
19 stale empty milestones (1.0…16.2.0) — close them (blocked for the triage agents; one-time admin sweep).
PPR Track B: RSC + use cache partial pre-rendering — implementation #3571 P1 promotion applied; confirm PPR as the 17.2 headline bet.
Triage provenance: 6 parallel review-only agents over chunks #2018 –#4598 , coordinator-executed mutations, 2026-07-11. Rubric per $plan-issue-triage. Every disposition carries evidence in the agents' records; dispositions embedded here are the executed state.
North star: maximize React on Rails Pro adoption (trust-based license) through three funnels — new-app adoption (primary), migrations from Inertia/Next, and OSS→Pro upgrades. Public direction: ROADMAP.md. Strategy language:
internal/planning/CONTEXT.md. Vite decision:internal/adr/0001-rspack-answers-vite.md.Headline themes (all P0/P1 work maps to one): 🏎 Provable performance (every claim gets a public reproducible artifact) · 🚀 Onboarding simplicity (neutralize Inertia's "one command" edge) · 🤖 Agent-native development.
Supersedes #3864 (June 30-day plan — 12/16 children shipped; retrospective on that issue). This umbrella + the 17.0.x / 17.1 / 17.2 / 18.0 milestones are the scheduling surface;
roadmap:17xmarks this roadmap generation.Produced by the 2026-07-11 whole-backlog triage: 115 open issues dispositioned (6 review-only agents, evidence-verified per issue; rubric: customer/CI evidence outranks AI-analysis findings;
needs-customer-feedbacknever scheduled without evidence).🔴 17.0.x — release-line must-fix (milestone 17.0.x)
(Release execution itself: #4569 + gate #3823 — tracking issues, not roadmap items.)
🚀 17.1 — onboarding + agent-native headline (milestone 17.1, ~6–8 wks after final)
Headliners: #4557 FOUC pipeline: prod CI gate + layer deletion (step 0 shipped in 17.0.0 — P0) · #4602 agent-legible doctor (
--format=json, copy-promptable fixes) · #4603 agent-builds-the-app tutorial + scripted eval · #4553 Pro license token via Rails credentials (customer-requested) · #4604 existing-app installer Pro prompt (OSS→Pro funnel).Modern-React quick wins: #3883
<Activity>phase 2a · #3885 cacheSignal test+docs · #3886 19.2 reveal-batching validation (P1).Bug/quick-win cluster (2026-07 reviews): #4329 perf-marks queue leak · #4572 Redux store rebind on
hydrate_on· #4582 html_options mutation (FrozenError) · #4583 stale RailsContext after Turbo nav (core) · #4584 HTTP bundle charset/status · #4585 domId selector metachars · #4565 jest exclusion residual · #4561 CSS test fixture shapes (fold into #4557).Security cluster (maintainer-filed): #4595 RSC payload endpoint authorization (P1 — docs warning can ship in 17.0.x) · #4596 node-renderer hardening (pre-auth multipart cap first) · #4597 secret/PII log hygiene (renderer_url userinfo-stripping first).
Docs/content: #3805 OSS core-concepts SVGs · #3897 versioned docs + search (site repo) · #3898 demo fleet currency (bump pass at final).
🏎 17.2 — provable performance headline (milestone 17.2)
PPR is the headline: #3571 Track B implementation (promoted P1; plan:
internal/planning/ppr-implementation-plan.md; stable React 19.2prerender/resume) with #3485 Turbo interaction. Proof: #3169 benchmark CI re-enabled as gate · #4073 dedicated-hardware benchmark runner (root of the perf-regression noise cluster) · #3492 A/B benchmark mode.Also: #3488 Rspack RSC production path (P1; native RSCRspackPlugin pivot — upstream Rspack 2.x native RSC informs it) · #4600 Rspack DX parity benchmarks vs Vite · #4601 "Why Rspack (and not Vite)" page (after #4600 numbers) · #4605 agent toolchain v2 — Skills-in-package + slim-MCP re-eval (maintainer decision needed: #3870 was closed NOT_PLANNED 2026-06-18; new ecosystem evidence in the issue) · #4385 selective hydration investigation (active, PR #4593).
💥 18.0 — breaking batch (milestone 18.0, unscheduled)
#4271 / #4274 / #4279 Redux phase-out (17.x deprecation shipped; removal batch) · #2552 bundler-neutral config renames. Breaking changes accumulate here per the post-RC lock.
🗂 Roadmap, unscheduled (
roadmap:17x, no milestone)#3253+#3263 Gumroad staging benchmark artifacts (consolidate) · #3497 rsc monorepo move (de-risks every RSC release; pain behind #4357) · #3804 Pro SSR SVG diagrams · #3832 agent-eval harness Part B (funding decision; pairs with #4603) · #3873 routing prefetch leg (Inertia
<Link>answer; unblocked) · #3891 SSG on PPR shells (after #3571) · #3920 Compiler follow-ups · #4049 Server-Component CSS delivery (design unsettled; upstream rsc#180) · #4133 i18n TS types (API decision first) · #4577 Pro CI dual-version matrix (lockfile quick-win available).parkedlabel; valid but off-roadmap)Awaiting customer evidence: #3811 component identity RFC · #3874 image helper (docs recipe shipped #3955) · #3877 RUM hooks (docs shipped #3954) · #3921 font follow-ups · #4236 error-value retry semantics · #4313 source-map caps · #4325 AsyncPropsEmitter log level.
Blocked/sequenced: #3572 CDN edge-resume (needs #3571 phase 6) · #3582 renderer transport cluster root (needs Phase 0 materiality profiling).
Ride-alongs: #4321 benchmark shim debt (with #3169) · #4498 contract-pair guards · #4499 workflow concurrency · #4502/#4503/#4504/#4506 Pro hardening residuals · #4505 knip hygiene.
Deliberately deferred: #2018 AI security scanners · #3266 security@ alias (org email task) · #3373 Vite adapter (ADR-0001; revisit 18.0) · #3449 zizmor · #4079 llms-full required-check (revisit trigger: drift reaches main) · #4127 batch-QA lane · #4322 pr-ci-readiness diagnosability · #4576 merge-ledger evidence gate (agent-workflows scope).
✅ Closed by this triage (evidence on each)
#2169, #2678, #3240, #3896 (llms-full: live + drift-guarded), #3908, #3952, #4111, #4292, #4426, #4560, #4566 — plus #3864 (retrospective) and #3788 (superseded by this triage).
✅ Close candidates — maintainer-approved and executed 2026-07-12 (20 closed)
All 20 closed with reason comments. Evidence preserved: #4323 re-filed upstream as shakacode/agent-workflows#144; #3553's docs residual spun out as #4609 (17.1); #4598's unverified claims transferred onto #4557.
#2180 (pnpm catalogs) · #2572 (ECC patterns) · #3128 (Gumroad hub → consolidate into #3144) · #3553 (client-refs RFC: implemented; docs residual) · #3583 (UDS: evaluated-negative) · #3584 (wire encoding: same gate) · #3974 (coordination umbrella: children carry the work) · #3999 (capacity-AI posture → superseded by scale-to-zero) · #4228 (skills dogfood: satisfied by usage) · #4230/#4434/#4476/#4486 (GHA exercise chores) · #4284 (4th AI reviewer) · #4315 (self-described borderline-wontfix) · #4323 (re-file in agent-workflows) · #4347/#4453/#4537 (batch-QA bookkeeping) · #4598 (FOUC simplify — verify unique claims, fold into #4557; @AbanoubGhadban).
📌 Tracking issues that stay open
#3823 release gate (P0) · #4569 final assembly · #4346 pre-release review ledger · #4010 audit ledger · #3865 React 19.2 umbrella (P0) · #3125 migration PRs · #3144 Gumroad narrative (canonical) · #3355 Inertia demo ports · #3802 SVG umbrella (close when #3804/#3805 done) · #4187 dependabot ledger (migrate to rsc repo after final) · #4507 housekeeping (near-done: #4426 closed by this pass).
Maintainer decisions queued
use cachepartial pre-rendering — implementation #3571 P1 promotion applied; confirm PPR as the 17.2 headline bet.Triage provenance: 6 parallel review-only agents over chunks #2018–#4598, coordinator-executed mutations, 2026-07-11. Rubric per
$plan-issue-triage. Every disposition carries evidence in the agents' records; dispositions embedded here are the executed state.