Skip to content

v8#14927

Draft
jacob-ebey wants to merge 33 commits into
devfrom
v8
Draft

v8#14927
jacob-ebey wants to merge 33 commits into
devfrom
v8

Conversation

@jacob-ebey
Copy link
Copy Markdown
Member

@jacob-ebey jacob-ebey commented Mar 25, 2026

No description provided.

- updates jest
@jacob-ebey
Copy link
Copy Markdown
Member Author

Whoever PRs this branch next, please update the lock-file as part of your PR.

@brophdawg11 brophdawg11 marked this pull request as draft March 31, 2026 14:18
@github-actions
Copy link
Copy Markdown
Contributor

👋 We've moved away from Changesets to our own internal changes process. Please convert your changesets file to a change file in the proper package directory (i.e., packages/react-router/.changes/patch.fix-some-bug.md).

@github-actions github-actions Bot deleted a comment from changeset-bot Bot Apr 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

⚠️ No Change File Found

This PR doesn't include a change file which is used for automated release notes.
If your change affects users, please add one (or more) change files and commit the generated file(s).

pnpm run changes:add

This script requires Node 24+. If you are on a lower version, please add a file manually

Not every PR needs a change file — you can skip this step if the change is internal-only
(tests, tooling, docs)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

Preview Build Available

Preview builds have been created for this PR. You can install react-router using:

pnpm install "remix-run/react-router#preview/pr-14927&path:packages/react-router"

And/or install other packages via:

pnpm install "remix-run/react-router#preview/pr-14927&path:packages/react-router-dev"
pnpm install "remix-run/react-router#preview/pr-14927&path:packages/react-router-express"
pnpm install "remix-run/react-router#preview/pr-14927&path:packages/react-router-node"
pnpm install "remix-run/react-router#preview/pr-14927&path:packages/react-router-serve"

These preview builds will be updated automatically as you push new commits.

jacob-ebey and others added 16 commits May 12, 2026 15:41
# Conflicts:
#	packages/create-react-router/package.json
#	packages/react-router-architect/package.json
#	packages/react-router-cloudflare/package.json
#	packages/react-router-dev/package.json
#	packages/react-router-dom/package.json
#	packages/react-router-express/package.json
#	packages/react-router-fs-routes/package.json
#	packages/react-router-node/package.json
#	packages/react-router-remix-routes-option-adapter/package.json
#	packages/react-router-serve/package.json
#	packages/react-router/package.json
…rmProps (#14932)

* fix(types): remove deprecated FormEventHandler override from SharedFormProps

Closes #14795

* chore: sign CLA and add changeset
- removes Vite 6/non-environment support
- drops the React Router Cloudflare dev proxy in favor of @cloudflare/vite-plugin
- make unstable_previewServerPrerendering the default
- refactor: rename bin files to .cjs and update references
- fix: resolve Windows libuv assertion during prerendering by using node:http for internal requests

Co-authored-by: Copilot <copilot@github.com>
brophdawg11 and others added 2 commits May 21, 2026 11:39
* Remove `future.v8_middleware` flag and inline always-on codepaths

Middleware is now always enabled in v8. Removes the flag from the
runtime, dev config, typegen, server adapters, RSC, types, tests, and
docs. `getLoadContext` must return a `RouterContextProvider` instance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Fix integration test fixtures for always-on middleware context

Update EXPRESS_SERVER helper and vite-loader-context-test to provide a
RouterContextProvider instead of a plain object, since getLoadContext now
requires a RouterContextProvider after the v8_middleware flag removal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Fix remaining integration test fixtures for always-on middleware

Three more fixtures still passed plain objects as load context, which
the always-on middleware runtime now rejects:

- helpers/express.ts: dropped the leftover getLoadContext = () => ({}),
  no consumer (vite-dotenv-test, vite-hmr-hdr-test)
- vite-plugin-cloudflare-template: workers/app.ts now constructs a
  RouterContextProvider and sets a cloudflareContext key from a new
  shared app/cloudflare.ts; vite-plugin-cloudflare-test's route reads
  via context.get(cloudflareContext)
- vite-plugin-cloudflare-test: pass inspectorPort: false so parallel
  workers don't race on miniflare's inspector port 9229

Also drop vite-cloudflare-test.ts since @react-router/dev/vite/cloudflare
is being removed in v8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
brophdawg11 and others added 13 commits May 21, 2026 13:06
* feat: remove future.v8_passThroughRequests flag

Request passthrough is now the unconditional default. The raw incoming
`request` is always passed through to `loader`/`action`; use `url` for
the normalized URL without React Router-specific implementation details
(`.data` suffixes, `index`/`_routes` search params).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: update error message expectations for passthrough URLs

The 405/POST error message now contains the raw `.data` URL since the
request is passed through unmodified.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: update request URL expectations for passthrough

CSR navigations now see the raw `.data` URL on `request.url`, and SSR
POSTs to index routes see the `?index` query param that the form
submits with.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test: use normalized url in loaders for resource and single-fetch tests

With passthrough now the default, `request.url` includes `.data`/`_routes`
suffixes; switch loaders to the `url` arg or strip suffixes manually so
test intent is preserved.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Bump small-effort dependencies for v8

Patch and minor bumps across the workspace — no API-breaking changes.
Excludes react/vite/vitest/jest-family deps (handled separately) and
held-back risky bumps (wrangler, msw, @mdx-js/rollup transitive conflict).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Revert integration dedent to ^0.7.0

v1 changed escape handling in tagged templates, breaking
vite-presets-test.ts where the BUILD_END_META.js fixture
relies on `.join("\\n")` inside a String.raw template. Deferred
to its own PR (#3.5 in the v8 deps roadmap).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Bump integration dedent to ^1.7.2 to match react-router-dev

v1 stops interpreting backslash escapes in the function-call form,
so `String.raw\`...\\n...\`` now preserves both backslashes. Update
the one affected call site in vite-presets-test.ts to use a single
backslash so the joined newline survives to the written fixture.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Update wrangler dep

* Remove workerd/react-is overrides

* Add back react-is override needed for tests

* Add dependency bump change files

* Reset wrngler peerDeps to just ^4.0.0

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Make route module splitting default in v8

Move the v8 route module splitting option out of future flags and resolve it as a top-level config field that defaults to true. Update plugin consumers, docs, fixtures, and tests to use splitRouteModules for opt-out/enforce behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix lazy client middleware error boundaries

Load lazy route boundary metadata before bubbling client middleware errors that occur before route handlers run. This preserves route-level error boundaries when route module splitting loads middleware from a separate chunk.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Move route module splitting docs

Move the route module splitting explanation from the future flags page into the automatic code splitting guide.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Handle lazy boundary load errors in middleware

Convert lazy route load failures encountered while selecting client middleware error boundaries into data strategy error results instead of allowing them to escape the middleware pipeline.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Use optional catch binding for lazy boundary load

Simplify the error handler using an optional catch binding instead of an unused variable + eslint-disable comment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Polish split route modules config migration

Clean up the v8 route module splitting migration now that splitRouteModules defaults to true. Remove obsolete future flag warning coverage, mark the config change as major, and simplify test/playground configs that rely on the default behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update active packages and templates to use @types/node 22.19.x so the workspace matches the Node 22.12 runtime floor. Refresh the lockfile to collapse older Node 20 and 22.14 type resolutions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update misc type and tooling dependencies

* Update dev-time ESM dependencies
* Upgrade TypeScript to 6

* Migrate package builds to tsdown

* Use native tsdown config loading

* Enable tsdown unbundle mode

* Add change files for build tooling updates

* Remove unbundle because its dumb

* Fix snapshot

* chore: modernize TypeScript configs across workspace

* Consolidate shared tsconfig options to a base config
… APIs (#15104)

Use ESM path metadata in the absolute route typegen fixture, keep config loader resources alive through user `buildEnd` hooks, and avoid legacy SSR stack rewriting when using Vite runnable environments so native runner sourcemaps map correctly.

Avoid overriding server `dev.createEnvironment` so integrations like `@cloudflare/vite-plugin` can provide their own environment implementations, while keeping native runner stack handling intact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants