Skip to content

Roadmap

See roadblocks.md for adoption blockers and real-tenant-validation.md for the tenant gate.

Current state

AreaState
Reference capture + AMD wrapperGround truth committed (reference/FORMATS.md, reference/sp-component-ids.json), byte-compatible define('<id>_<version>', …)
Foundation + packagingcore (zero deps), diagnostics, plugin-api, manifest-generator, sppkg-builder, sharepoint-runtime; plugin hooks wired into CLI
Compiler + CLIcompiler-rspack (SWC, SCSS, assets, dev server) + RSpfxPlugin / rspfxVite / rspfxRsbuild; new/dev/build/package/deploy/doctor/analyze/clean; templates + frameworks + examples
Dev mode:4321 HTTPS manifest server (/temp/manifests.js), workbench URL, auto-reload (/__rspfx_hot.json)
Fast refresh + local previewRefresh runtime (--refresh), react/preact/vue/svelte/solid preserved; local preview at http://localhost:4321/ + mock /_api (Rspack path; Vite/Rsbuild is workbench-only)
Frameworks + Fluentvanilla/react/solid/preact/vue/svelte + fluent-adapter
Bundler parityVite and Rsbuild ship same capture line + AMD header + CSS inlining + stats.json, verified by parity.test.ts; Turbopack not possible (no plugin API)
Real-tenant validationWeb part + extension + library .sppkg installed and rendered — see real-tenant-validation.md

Real-tenant validation

Tenant gate: scaffold → rspfx package → upload .sppkg to real app catalog → install → render in workbench with no console errors. Packaging correctness rests on byte-level assertions against reference/FORMATS.md + the gate.

Real-tenant CI matrix is planned across SPFx 1.20–1.24 (needs tenant credentials in CI secrets; env vars see commands.md#environment-variables).

Backlog

StatusItemNotes
✅ DoneSPFx output format locked inReference build output captured so SharePoint loads the bundle correctly (see reference/FORMATS.md).
✅ DoneCore build and packagingManifests and .sppkg generation working. Plugin hooks wired into the CLI.
✅ DoneCompilers and CLIRspack, Vite, and Rsbuild all produce the same output. Commands new, dev, build, package, deploy, doctor, analyze, and clean work.
✅ DoneDev serverLocal manifest server, workbench URL, and auto-reload.
✅ DoneFast refresh and local previewEdits keep component state for React, Preact, Vue, Svelte, and Solid. Local preview with mock API on Rspack; Vite/Rsbuild uses workbench.
✅ DoneFrameworks and Fluent UIVanilla, React, Solid, Preact, Vue, and Svelte supported with Fluent adapter.
✅ DoneBundler paritySame output across Rspack, Vite, and Rsbuild verified by tests.
✅ DoneTested on a real tenantWeb part, extension, and library installed from the app catalog and rendered.
❌ Not plannedTurbopackNo plugin API and no standalone CLI — can't be supported.
💡 FutureReact 19 + Fluent 8Need to check latest React with Fluent before we promise full support.
💡 FutureSpeed comparison with official toolchainTest harness exists, needs results on more machines.
💡 FutureAutomated tenant checks in CINeeds a Microsoft 365 test tenant and credentials.

Testing

LayerHow
Unitvitest, colocated
Integrationsrcdist.sppkg → manifest/zip validation vs reference/FORMATS.md
ParitySame fixture via Rspack/Vite/Rsbuild — byte-equal manifests, headers, no .css
TenantReal catalog install across SPFx targets (manual; CI planned)
Benchmarksbench/bench.mjs + bench/compare-official.mjs

Released under the MIT License.