Zum Inhalt springen

Remix Release Notes

5 Einträge aus 1 Quelle. Zuletzt aktualisiert:

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

React Router von Remix

React Router: Weniger Re-renders von Route-Komponenten (2026-09-15)

Der Eintrag vom 2026-09-15 kündigt unter „Reduced Route Component Re-renders“ weniger unnötige Re-renders von Route-Komponenten an, nennt aber noch keine Details.

What's Changed

Reduced Route Component Re-renders

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum des passenden GitHub-Releases.

Erstmals gesehen am .

React Router von Remix

React Router Version 8.4.0: Granularere Router-Contexts, weniger Re-renders

Seit Version 8.4.0 sind die internen Data-Router-Contexts granularer, sodass Komponenten, die nur Teile des Router-Zustands per Hook nutzen, seltener neu rendern, und im Data Mode kann optional ein effizienterer, auf @remix-run/route-pattern basierender Route-Matcher samt neuem Feld unstable_validateParams genutzt werden.

  • Current location info (useLocation, useSearchParams, useMatches)
  • Pending navigation/revalidation info (useNavigation, useRevalidation)
  • Router loader/action data (useLoaderData, useActionData)
  • Fetcher info (useFetcher, useFetchers)

More Efficient Route Matching (unstable)

Data Mode can now opt into a more efficient route matcher powered by @remix-run/route-pattern. Synthetic Chromium benchmarks reduced navigation and fetcher completion times by ~19–38% with 100 routes and ~71–88% with 1,000 routes, excluding network latency and React rendering.

Route definitions and path generation APIs such as generatePath and href continue to use React Router path syntax. Before enabling the flag, call unstable_preloadRoutePattern() so applications that do not opt in avoid downloading the new matcher.

This also comes with a new unstable_validateParams route field that accepts keyed regular expressions. When a parameter fails validation, matching continues to later routes. Optional parameters that are not present are not validated.

import { createBrowserRouter } from "react-router";
import { unstable_preloadRoutePattern } from "react-router/route-pattern";

unstable_preloadRoutePattern();

let router = createBrowserRouter(
  [
    {
      path: "/:drink",
      unstable_validateParams: {
        drink: /^(wines|whiskeys|sakes|beers)$/,
      },
    },
    {
      path: "/:food",
      unstable_validateParams: { …

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

React Router von Remix

React Router: Fehlerbehebungen und bessere Routing-Performance (2026-08-27)

Die Patch-Version behebt mehrere Fehler in react-router, darunter den Fehler „Expected fetcher“, fehlerhaftes Lazy Route Discovery Caching, <ScrollRestoration> nach bfcache-Restore und die relative-Option in useSubmit/fetcher.submit, und verbessert die Routing-Performance bei langen Pfaden sowie die Validierung von Action-Request-Origins.

Patch Changes

  • react-router - Fix Expected fetcher: <key> error thrown on navigation when a fetcher is aborted during its post-action revalidation (#15365)
  • react-router - Fix lazy route discovery caching a path as discovered when the triggering navigation was aborted after the manifest response settled but before the route tree was patched, which permanently (for the session) shadowed the real route behind a catch-all or produced 404s on every subsequent visit (#15399)
  • react-router - Improve route matching performance for long paths (#15417)
  • react-router - Improve validation of action request origins (#15419)
  • react-router - Fix <ScrollRestoration> leaving history.scrollRestoration set to "auto" after a bfcache restore, which let the browser restore scroll on subsequent history traversals before the destination route had rendered (#15397)
  • react-router - Properly respect the relative option in useSubmit/fetcher.submit when resolivng the action path (#15400) …

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

React Router von Remix

React Router: RSC-Entry-Änderungen und RFC-3986-Kodierung (2026-07-22)

Das Release bringt Änderungen an den Entry-Dateien für unstable RSC-Apps mit eigenen Entries, startet react-router dev bei Bedarf mit --conditions=development neu, kodiert Pfadparameter in href/generatePath nach RFC 3986 und nutzt crypto.randomUUID() für Session-IDs in createMemorySessionStorage.

What's Changed

RSC Entry Updates

This release includes several updates for unstable RSC apps that use custom entry files. Apps using the default RSC Framework entries do not need any changes.

If you maintain custom RSC entries, review the generated unstable change notes for the new client version, subresource integrity, and CSP nonce wiring. Custom entry.rsc.tsx files should pass the generated client version to unstable_matchRSCServerRequest, and custom entry.ssr.tsx files may need to pass the generated import map integrity data and request nonce through React's HTML renderer.

Minor Changes

  • @react-router/dev - Restart react-router dev with --conditions=development when not already configured (#15291)

Patch Changes

  • react-router - Encode path params in href/generatePath per RFC 3986 path-segment rules instead of encodeURIComponent (#15310)
    • Characters that are valid literally in a path segment ($ & + , ; = : @ — RFC 3986 pchar) are no longer percent-encoded, so values like a semver build 1.0.0+1 interpolate unchanged instead of becoming 1.0.0%2B1
    • Structural/unsafe characters (/ ? # %, whitespace, non-ASCII) are still escaped exactly as before
  • react-router - Use crypto.randomUUID() for createMemorySessionStorage session ids (#15302) …

Originalquelle(öffnet in neuem Tab)Problem melden

Angaben zum Datum

Datum aus der Quelle.

Erstmals gesehen am .

React Router von Remix

React Router: Standard-Entry für Web Streams im Framework Mode (2026-07-08)

Framework-Mode-Apps ohne Node-Runtime benötigen keine eigene entry.server.tsx mit renderToReadableStream mehr, und Node-Apps können das Web-Streams-Standardentry über das neue Flag future.unstable_enableNodeReadableStream aktivieren.

What's Changed

Web Streams Default Server Entry

Non-Node runtime Framework Mode apps no longer need a custom entry.server.tsx file using React's renderToReadableStream API. Apps with @react-router/{node,express,serve} dependencies will continue to default to renderToPipeableStream, while non-Node apps default to renderToReadableStream.

Because Web Streams are stable in Node 22+, Node apps can also opt-into the Web Streams default entry with the new future.unstable_enableNodeReadableStream flag:

import type { Config } from "@react-router/dev/config";

export default {
  future: {
    unstable_enableNodeReadableStream: true,
  },
} satisfies Config;

This flag has no effect if you have a custom entry.server.tsx keep using their custom entry file. It only applies to the default entry used if one doesn't exist.

Node apps opting-into the Web Streams API might even see a small performance boost because React Router already uses Web Streams internally, so this avoids additional conversions between Web/Node streams. If you see perf changes one way or another upon adopting this flag, please let us know!

Minor Changes

  • @react-router/dev - Add a Web Streams default server entry for non-Node Framework mode apps (#15290) …

Originalquelle(öffnet in neuem Tab)Problem melden