Execution plan to finish and ship react-multistep@8.0.0, then drain the polish
and deferred backlog. Strategy and rationale live in ROADMAP.md; this file is
the task-level checklist. Phases are ordered; within a phase, items are
independent unless a dependency is noted.
Current state: all six "settle before ship" breaking foundations and the entire
additive-for-8.0.0 bucket are implemented and green (typecheck / lint / 83 tests /
build all pass; npm pack --dry-run produces a clean 31.7 kB tarball). What
remains is doc correctness, the release mechanics, and optional polish.
-
/simplifyrefactor: sharedfirstBlockingStepgate (src/gate.ts), singlecanCompletesnapshot, deadisNavigatingfield removed, redundant bounds check dropped, focus-fallback unified,directiontype reuse. (commit9dbfaef) - Dead
base.cssshim removed (commit824501a) and its two stale ROADMAP mentions scrubbed (commit0d80560). - CJS decision recorded: CommonJS is not supported - ESM only, no
requirecondition, no CJS bundle. Wording updated inREADME.md,CLAUDE.md,CHANGELOG.md. - Server module confirmed live:
react-multistep-serverexists locally at../react-multistep-serverand is pushed to GitHub (origin/main, in sync). It is a Deno-native project on Deno Deploy, not an npm package, so the README link resolves.
- Fix the contributors badge link -
README.md:20points atgithub.com/react-multistep/graphs/contributors(missing the owner). Change togithub.com/srdjan/react-multistep/graphs/contributors. One line. - Reword the server-module note -
README.md:681-683calls the extracted module a "separate package"; it is a Deno repository, not an npm package. Change "separate package" to "separate repository" (link unchanged - it is live). One line. - Verify or refresh the demo link -
README.md:6->http://srdjan.github.io/react-multistep/(plain http, served from thegh-pagesbranch, which predates the v8 headless rewrite). Either rebuildgh-pagesfromexamples/client-side, switch to https, or drop the link until refreshed. Manual check required. - Finalize the CHANGELOG -
CHANGELOG.md:3is## 8.0.0 (UNRELEASED). Replace(UNRELEASED)with the release date; read the Migration section (lines ~199-240) once against the final API and confirm it namesuseReportValidity,beforeStepChange,useReducedMotion, and theuseMultiStepA11ygetters. - Acceptance: every external link in
README.mdresolves; CHANGELOG carries a date and an accurate migration guide.
- Broaden examples. Today there is one example (
examples/client-side), and it already covers controlledactiveStep,mode="unmount", the asyncbeforeStepChangeguard, andonComplete. Add, in priority order:- a
keepMounted(default mode) example - the default is currently never demonstrated; - a schema-validation example (React Hook Form + Zod, or a Standard
Schema step) exercising
useReportValiditywith real field errors; - an SSR / Next.js App Router example proving
useId-derived ids and the no-useEffectreconciliation are SSR-safe. - Each is independent and additive; ship whichever are ready.
- a
- Test-harness ADR. Decide: adopt vitest + @testing-library + jsdom, or
keep
test/run.mjs+harness.tsand add async matchers (waitFor,findBy, call-count). Record the decision indocs/adr/either way. See the deferred-backlog row inROADMAP.md. - Acceptance: a consumer can copy an example for their actual stack (default mode, schema lib, SSR); the harness choice is written down, not implicit.
- Run the full gate:
npm run prepack(lint + typecheck + test + build). Already green; re-run immediately before tagging. - Confirm tarball contents:
npm pack --dry-run- expectdist/only (bundle + sourcemap + per-file.d.tsincludinggate.d.ts+ the three CSS files),README.md,LICENSE.md,package.json. - Tag and publish: finalize
version(already8.0.0),git tag v8.0.0,npm publish(public). Decide dist-tag:latestvs an initialnext. - Push the branch: there are currently ten unpushed commits on
master(the eight v8 commits plus today's refactor + docs).git pushcarries the whole v8 line; push tags too. - Coordinate the server repo:
react-multistep-serveris already on GitHub; if it should also be reachable as a package or have a tagged release, do that in its own repo so the README reference stays honest. - Refresh
gh-pagesif the demo link is kept (ties to Phase 1). - Acceptance:
npm view react-multistep@8.0.0resolves; a freshnpm install react-multistepin an ESM React 19.2 app imports and renders;masterand tags are on the remote.
Tracked in ROADMAP.md under "Post-v8.0.0 backlog (deferred, detailed)":
compound MultiStep.Step API; conditional / branch flow; controlled validity +
Standard Schema; React 19 form Actions; URL / history adapter; unstyled compound
chrome; three-context collapse (gated on a benchmark first); homegrown-harness
replacement. Each is an independent additive minor.
- Release date for the CHANGELOG, and
latestvsnextdist-tag for the first 8.0.0 publish. - Keep, rebuild, or drop the
gh-pagesdemo. - Which Phase 2 examples block the 8.0.0 announcement vs slip to 8.1.