"React interop migration backlog (2026)"

React interop backlog (2026)

This file tracks expandable workstream tasks (T001–T260). The authoritative wave order is in react-interop-migration-charter-2026.md and the Cursor plan react-interop-full-repo-migration-2026.

How to use

  • Agents: pick the lowest incomplete WSxx row; complete all T tasks in that row before moving on.
  • Humans: use this as a merge checklist; link PRs next to completed rows.

WS01–WS10 (routing + client + scaffold)

WSRangeTheme
WS01T001–T010Governance / charter / risk register
WS02T011–T020Parser: routes with, nesting, not_found / error
WS03T021–T030Typecheck: loader/pending resolution, duplicate paths
WS04T031–T040HIR: de-deprecation, ownership map
WS05T041–T050route_manifest.rs core
WS06T051–T060Manifest interop helpers / adapters
WS07T061–T070vox-client.ts emitter
WS08T071–T080Remove TanStack tree + serverFns
WS09T081–T090Scaffold emitter (one-time files)
WS10T091–T100SPA + SSR adapter templates

(Full T001–T260 table lives in the accepted Cursor plan artifact; this doc is the repo-local index so links from the implementation plan resolve.)

WS11–WS26

WSRangeTheme
WS11T101–T110Islands / hydration contracts
WS12T111–T120v0 / shadcn doctor + compatibility
WS13T121–T130Tailwind v4 scaffold
WS14T131–T140CLI build/run/bundle
WS15T141–T150Axum static + SPA fallback
WS16T151–T160WebIR parity / single emitter
WS17T161–T170Contracts / registries
WS18T171–T180Golden tests
WS19T181–T190CI jobs
WS20T191–T200Docs / education
WS21T201–T210vox-vscode
WS22T211–T220tools/visualizer
WS23T221–T230tree-sitter-vox
WS24T231–T240vox migrate tooling
WS25T241–T250Perf / telemetry
WS26T251–T260Cutover / delete legacy

Done in repo (update as you land work)

  • Charter + backlog stubs linked from architecture index
  • routes.manifest.ts default emission (routes { } → manifest emitter)
  • vox-client.ts default emission (POST JSON parity with Axum handlers)
  • Removal of App.tsx / VoxTanStackRouter.tsx / serverFns.ts from compiler codegen; TanStack Start scaffold uses file routes + routes.manifest.ts only
  • Optional scaffold via VOX_WEB_EMIT_SCAFFOLD + codegen_ts::scaffold
  • Lexer: # line comments (fixture / shell style)
  • Parser: @v0 from "asset.png" image hint form + V0ComponentDecl.image_path
  • Typecheck: retired context / @hook / @provider / PageError; @component fnparse error by default; escape hatch VOX_ALLOW_LEGACY_COMPONENT_FN=1 for transitional sources
  • Docs: VOX_WEB_* env registry rows; docs/src/adr/README.md for CI gate paths; vox-codegen-ts.md cross-links
  • vox migrate web — scan .vox sources and report migration lint codes (lint.legacy_*, lint.retired_*) + JSON output
  • vox doctor — pnpm/node + optional components.json rsc:false check (v0/shadcn client interop)
  • WebIR WebIrLowerSummary — route manifest parity counters (loaders, pending, not_found / error blocks)
  • Removed dead tanstack_programmatic_routes.rs emitter module
  • WebIR consolidation (platform)
    • Single-emitter default: retire or gate parallel JSX / hir_emit paths per internal-web-ir-implementation-blueprint.md acceptance gates — reduces drift between “legacy emit” and WebIR-validated manifests.
    • Autofix migrations + CI hybrid matrix: follow blueprint §CI / autofix notes when flipping the default emitter (keeps golden + integration matrix green).
    • tree-sitter-vox routes grammar: extend tree-sitter-vox/ (grammar.js) so editor + corpus parsers match tail.rs surface (with loader:, nested routes, not_found: / error:).