chore: Update version for release #12344
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to release-next, this PR will be updated.
Releases
[email protected]
Major Changes
Remove the original
deferimplementation in favor of using raw promises via single fetch andturbo-stream. This removes these exports from React Router: (#11744)deferAbortedDeferredErrortype TypedDeferredDataUNSAFE_DeferredDataUNSAFE_DEFERRED_SYMBOL,@remix-run/routerintoreact-router(#11505)react-router-domintoreact-router@remix-run/server-runtimeintoreact-router@remix-run/testingintoreact-routerRemove single_fetch future flag. (#11522)
Drop support for Node 16, React Router SSR now requires Node 18 or higher (#11391)
Remove
future.v7_startTransitionflag (#11696)useNavigate()useSubmituseFetcher().loaduseFetcher().submituseRevalidator.revalidateRemove
future.v7_normalizeFormMethodfuture flag (#11697)For Remix consumers migrating to React Router, the
cryptoglobal from the Web Crypto API is now required when using cookie and session APIs. This means that the following APIs are provided fromreact-routerrather than platform-specific packages: (#11837)createCookiecreateCookieSessionStoragecreateMemorySessionStoragecreateSessionStorageFor consumers running older versions of Node, the
installGlobalsfunction from@remix-run/nodehas been updated to defineglobalThis.crypto, using Node'srequire('node:crypto').webcryptoimplementation.Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed:
createCookieFactorycreateSessionStorageFactorycreateCookieSessionStorageFactorycreateMemorySessionStorageFactoryImports/Exports cleanup (#11840)
@remix-run/routerAgnosticDataIndexRouteObjectAgnosticDataNonIndexRouteObjectAgnosticDataRouteMatchAgnosticDataRouteObjectAgnosticIndexRouteObjectAgnosticNonIndexRouteObjectAgnosticRouteMatchAgnosticRouteObjectTrackedPromiseunstable_AgnosticPatchRoutesOnMissFunctionAction-> exported asNavigationTypeviareact-routerRouterexported asDataRouterto differentiate from RR's<Router>getToPathname(@private)joinPaths(@private)normalizePathname(@private)resolveTo(@private)stripBasename(@private)createBrowserHistory-> in favor ofcreateBrowserRoutercreateHashHistory-> in favor ofcreateHashRoutercreateMemoryHistory-> in favor ofcreateMemoryRoutercreateRoutercreateStaticHandler-> in favor of wrappercreateStaticHandlerin RR DomgetStaticContextFromErrorreact-routerHashPathnameSearchupdate minimum node version to 18 (#11690)
Remove
future.v7_prependBasenamefrom the ionternalized@remix-run/routerpackage (#11726)Migrate Remix type generics to React Router (#12180)
Route.*typesRoute.*typesuseFetcherpreviously had an optional generic (used primarily by Remix v2) that expected the data typetypeof loader/typeof action)useFetcher<LoaderData>()useFetcher<typeof loader>()Remove
future.v7_throwAbortReasonfrom internalized@remix-run/routerpackage (#11728)Add
exportsfield to all packages (#11675)node package no longer re-exports from react-router (#11702)
renamed RemixContext to FrameworkContext (#11705)
updates the minimum React version to 18 (#11689)
PrefetchPageDescriptor replaced by PageLinkDescriptor (#11960)
@remix-run/router,@remix-run/server-runtime, and@remix-run/reactnow that they all live inreact-router(#12177)LoaderFunction,LoaderFunctionArgs,ActionFunction,ActionFunctionArgs,DataFunctionArgs,RouteManifest,LinksFunction,Route,EntryRouteRouteManifesttype used by the "remix" code is now slightly stricter because it is using the former@remix-run/routerRouteManifestRecord<string, Route> -> Record<string, Route | undefined>AppDatatype in favor of inliningunknownin the few locations it was usedServerRuntimeMeta*types in favor of theMeta*types they were duplicated fromfuture.v7_partialHydrationflag (#11725)<RouterProvider fallbackElement>propfallbackElementto ahydrateFallbackElement/HydrateFallbackon your root routefuture.v7_partialHydration(when usingfallbackElement),state.navigationwas populated during the initial loadfuture.v7_partialHydration,state.navigationremains in an"idle"state during the initial loadRemove
v7_relativeSplatPathfuture flag (#11695)Drop support for Node 18, update minimum Node vestion to 20 (#12171)
installGlobals()as this should no longer be necessaryRemove remaining future flags (#11820)
v7_skipActionErrorRevalidationv3_fetcherPersist,v3_relativeSplatPath,v3_throwAbortReasonrename createRemixStub to createRoutesStub (#11692)
Remove
@remix-run/routerdeprecateddetectErrorBoundaryoption in favor ofmapRouteProperties(#11751)Add
react-router/domsubpath export to properly enablereact-domas an optionalpeerDependency(#11851)import ReactDOM from "react-dom"in<RouterProvider>in order to accessReactDOM.flushSync(), since that would breakcreateMemoryRouteruse cases in non-DOM environmentsreact-router/domto get the proper component that makesReactDOM.flushSync()available:entry.client.tsx:import { HydratedRouter } from 'react-router/dom'createBrowserRouter/createHashRouter:import { RouterProvider } from "react-router/dom"Remove
future.v7_fetcherPersistflag (#11731)Update
cookiedependency to^1.0.1- please see the release notes for any breaking changes (#12172)Minor Changes
prerenderconfig in the React Router vite plugin, to support existing SSG use-cases (#11539)prerenderconfig to pre-render your.htmland.datafiles at build time and then serve them statically at runtime (either from a running server or a CDN)prerendercan either be an array of string paths, or a function (sync or async) that returns an array of strings so that you can dynamically generate the paths by talking to your CMS, etc.[REMOVE] Allow returning undefined from loaders/actions part 2 (#12057)
Params, loader data, and action data as props for route component exports (#11961)
Remove duplicate
RouterProviderimpliementations (#11679)Typesafety improvements (#12019)
React Router now generates types for each of your route modules.
You can access those types by importing them from
./+types.<route filename without extension>.For example:
This initial implementation targets type inference for:
Params: Path parameters from your routing config inroutes.tsincluding file-based routingLoaderData: Loader data fromloaderand/orclientLoaderwithin your route moduleActionData: Action data fromactionand/orclientActionwithin your route moduleIn the future, we plan to add types for the rest of the route module exports:
meta,links,headers,shouldRevalidate, etc.We also plan to generate types for typesafe
Links:Check out our docs for more:
Stabilize
unstable_dataStrategy(#11969)Stabilize
unstable_patchRoutesOnNavigation(#11970)Patch Changes
No changes (
506329c4e)[REMOVE] Changeset to bump pre.4 release (#11871)
chore: re-enable development warnings through a
developmentexports condition. (#12269)Remove unstable upload handler. (#12015)
[PRERELEASE] Fix typegen for routes with a client loader but no server loader (#12117)
Remove unneeded dependency on @web3-storage/multipart-parser (#12274)
Fix redirects returned from loaders/actions using
data()(#12021)react-router-servehandling of prerendered HTML files by removing theredirect: falseoption so it now falls back on the defaultredirect: truebehavior of redirecting from/folder->/folder/which will then pick up/folder/index.htmlfrom disk. See https://expressjs.com/en/resources/middleware/serve-static.html (#12071)fix(react-router): (v7) fix static prerender of non-ascii characters (#12161)
[REMOVE] Rename RemixRouter->DataRouter (#12062)
Replace
substrwithsubstring(#12080)Remove the deprecated
jsonutility (#12146)Response.jsonif you still need to construct JSON responses in your appRemove unneeded dependency on source-map (#12275)
@react-router/[email protected]
Major Changes
For Remix consumers migrating to React Router, the
cryptoglobal from the Web Crypto API is now required when using cookie and session APIs. This means that the following APIs are provided fromreact-routerrather than platform-specific packages: (#11837)createCookiecreateCookieSessionStoragecreateMemorySessionStoragecreateSessionStorageFor consumers running older versions of Node, the
installGlobalsfunction from@remix-run/nodehas been updated to defineglobalThis.crypto, using Node'srequire('node:crypto').webcryptoimplementation.Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed:
createCookieFactorycreateSessionStorageFactorycreateCookieSessionStorageFactorycreateMemorySessionStorageFactoryPatch Changes
[email protected]@react-router/[email protected]@react-router/[email protected]
Major Changes
For Remix consumers migrating to React Router, all exports from
@remix-run/cloudflare-pagesare now provided for React Router consumers in the@react-router/cloudflarepackage. There is no longer a separate package for Cloudflare Pages. (#11801)For Remix consumers migrating to React Router, the
cryptoglobal from the Web Crypto API is now required when using cookie and session APIs. This means that the following APIs are provided fromreact-routerrather than platform-specific packages: (#11837)createCookiecreateCookieSessionStoragecreateMemorySessionStoragecreateSessionStorageFor consumers running older versions of Node, the
installGlobalsfunction from@remix-run/nodehas been updated to defineglobalThis.crypto, using Node'srequire('node:crypto').webcryptoimplementation.Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed:
createCookieFactorycreateSessionStorageFactorycreateCookieSessionStorageFactorycreateMemorySessionStorageFactoryMinor Changes
@remix-run/cloudflare-workerspackage has been deprecated. Remix consumers migrating to React Router should use the@react-router/cloudflarepackage directly. For guidance on how to use@react-router/cloudflarewithin a Cloudflare Workers context, refer to the Cloudflare Workers template. (#11801)Patch Changes
[email protected]@react-router/[email protected]
Major Changes
For Remix consumers migrating to React Router, the
vitePluginandcloudflareDevProxyVitePluginexports have been renamed and moved. (#11904)Remove single_fetch future flag. (#11522)
update minimum node version to 18 (#11690)
Add
exportsfield to all packages (#11675)node package no longer re-exports from react-router (#11702)
For Remix consumers migrating to React Router who used the Vite plugin's
buildEndhook, the resolvedreactRouterConfigobject no longer contains apublicPathproperty since this belongs to Vite, not React Router. (#11575)For Remix consumers migrating to React Router, the Vite plugin's
manifestoption has been removed. (#11573)The
manifestoption been superseded by the more powerfulbuildEndhook since it's passed thebuildManifestargument. You can still write the build manifest to disk if needed, but you'll most likely find it more convenient to write any logic depending on the build manifest within thebuildEndhook itself.If you were using the
manifestoption, you can replace it with abuildEndhook that writes the manifest to disk like this:@remix-run/router,@remix-run/server-runtime, and@remix-run/reactnow that they all live inreact-router(#12177)LoaderFunction,LoaderFunctionArgs,ActionFunction,ActionFunctionArgs,DataFunctionArgs,RouteManifest,LinksFunction,Route,EntryRouteRouteManifesttype used by the "remix" code is now slightly stricter because it is using the former@remix-run/routerRouteManifestRecord<string, Route> -> Record<string, Route | undefined>AppDatatype in favor of inliningunknownin the few locations it was usedServerRuntimeMeta*types in favor of theMeta*types they were duplicated fromUpdate default
isbotversion to v5 and drop support forisbot@3(#11770)isbot@4orisbot@5in yourpackage.json:isbot@3in yourpackage.jsonand you have your ownentry.server.tsxfile in your repoisbot@5independent of the React Router v7 upgradeisbot@3in yourpackage.jsonand you do not have your ownentry.server.tsxfile in your repoisbot@5in yourpackage.jsonDrop support for Node 18, update minimum Node vestion to 20 (#12171)
installGlobals()as this should no longer be necessaryFor Remix consumers migrating to React Router, Vite manifests (i.e.
.vite/manifest.json) are now written within each build subdirectory, e.g.build/client/.vite/manifest.jsonandbuild/server/.vite/manifest.jsoninstead ofbuild/.vite/client-manifest.jsonandbuild/.vite/server-manifest.json. This means that the build output is now much closer to what you'd expect from a typical Vite project. (#11573)Originally the Remix Vite plugin moved all Vite manifests to a root-level
build/.vitedirectory to avoid accidentally serving them in production, particularly from the client build. This was later improved with additional logic that deleted these Vite manifest files at the end of the build process unless Vite'sbuild.manifesthad been enabled within the app's Vite config. This greatly reduced the risk of accidentally serving the Vite manifests in production since they're only present when explicitly asked for. As a result, we can now assume that consumers will know that they need to manage these additional files themselves, and React Router can safely generate a more standard Vite build output.Minor Changes
Params, loader data, and action data as props for route component exports (#11961)
Remove internal entry.server.spa.tsx implementation (#11681)
Add
prefixroute config helper to@react-router/dev/routes(#12094)Typesafety improvements (#12019)
React Router now generates types for each of your route modules.
You can access those types by importing them from
./+types.<route filename without extension>.For example:
This initial implementation targets type inference for:
Params: Path parameters from your routing config inroutes.tsincluding file-based routingLoaderData: Loader data fromloaderand/orclientLoaderwithin your route moduleActionData: Action data fromactionand/orclientActionwithin your route moduleIn the future, we plan to add types for the rest of the route module exports:
meta,links,headers,shouldRevalidate, etc.We also plan to generate types for typesafe
Links:Check out our docs for more:
Patch Changes
developmentexports condition. (#12269)react-router-servehandling of prerendered HTML files by removing theredirect: falseoption so it now falls back on the defaultredirect: truebehavior of redirecting from/folder->/folder/which will then pick up/folder/index.htmlfrom disk. See https://expressjs.com/en/resources/middleware/serve-static.html (#12071)index.htmlfor hydration (#12268)[email protected]@react-router/[email protected]@react-router/[email protected][email protected]
Major Changes
Remove the original
deferimplementation in favor of using raw promises via single fetch andturbo-stream. This removes these exports from React Router: (#11744)deferAbortedDeferredErrortype TypedDeferredDataUNSAFE_DeferredDataUNSAFE_DEFERRED_SYMBOL,Use
createRemixRouter/RouterProviderinentry.clientinstead ofRemixBrowser(#11469)Remove single_fetch future flag. (#11522)
Remove
future.v7_startTransitionflag (#11696)Remove
future.v7_normalizeFormMethodfuture flag (#11697)Allow returning
undefinedfrom actions and loaders (#11680)update minimum node version to 18 (#11690)
Remove
future.v7_prependBasenamefrom the ionternalized@remix-run/routerpackage (#11726)Remove
future.v7_throwAbortReasonfrom internalized@remix-run/routerpackage (#11728)Add
exportsfield to all packages (#11675)node package no longer re-exports from react-router (#11702)
updates the minimum React version to 18 (#11689)
future.v7_partialHydrationflag (#11725)<RouterProvider fallbackElement>propfallbackElementto ahydrateFallbackElement/HydrateFallbackon your root routefuture.v7_partialHydration(when usingfallbackElement),state.navigationwas populated during the initial loadfuture.v7_partialHydration,state.navigationremains in an"idle"state during the initial loadRemove
future.v7_fetcherPersistflag (#11731)Minor Changes
Link/NavLinkwhen using Remix SSR (#11402)ScrollRestorationso it can restore properly on an SSR'd document load (#11401)RouterProvider. When running from a Remix-SSR'd HTML payload with the properwindowvariables (__remixContext,__remixManifest,__remixRouteModules), you don't need to pass arouterprop andRouterProviderwill create therouterfor you internally. (#11396) (#11400)Patch Changes
RouterProviderinternals to reduce uneccesary re-renders (#11817)[email protected]@react-router/[email protected]
Major Changes
Remove single_fetch future flag. (#11522)
update minimum node version to 18 (#11690)
Add
exportsfield to all packages (#11675)node package no longer re-exports from react-router (#11702)
Drop support for Node 18, update minimum Node vestion to 20 (#12171)
installGlobals()as this should no longer be necessaryPatch Changes
[email protected]@react-router/[email protected]@react-router/[email protected]
Major Changes
Remove single_fetch future flag. (#11522)
For Remix consumers migrating to React Router, the
cryptoglobal from the Web Crypto API is now required when using cookie and session APIs. This means that the following APIs are provided fromreact-routerrather than platform-specific packages: (#11837)createCookiecreateCookieSessionStoragecreateMemorySessionStoragecreateSessionStorageFor consumers running older versions of Node, the
installGlobalsfunction from@remix-run/nodehas been updated to defineglobalThis.crypto, using Node'srequire('node:crypto').webcryptoimplementation.Since platform-specific packages no longer need to implement this API, the following low-level APIs have been removed:
createCookieFactorycreateSessionStorageFactorycreateCookieSessionStorageFactorycreateMemorySessionStorageFactoryupdate minimum node version to 18 (#11690)
Add
exportsfield to all packages (#11675)node package no longer re-exports from react-router (#11702)
Drop support for Node 18, update minimum Node vestion to 20 (#12171)
installGlobals()as this should no longer be necessaryPatch Changes
[email protected]@react-router/[email protected]
Major Changes
exportsfield to all packages (#11675)Patch Changes
react-router-servehandling of prerendered HTML files by removing theredirect: falseoption so it now falls back on the defaultredirect: truebehavior of redirecting from/folder->/folder/which will then pick up/folder/index.htmlfrom disk. See https://expressjs.com/en/resources/middleware/serve-static.html (#12071)Update
express.staticconfigurations to support prerendering (#11547)build/client/assetsfolder are served as before, with a 1-year immutableCache-Controlheader.htmland.datafiles are not served with a specificCache-Controlheader.datafiles are served withContent-Type: text/x-turboexpress.static, it seems to also add aCache-Control: public, max-age=0to.datafilesUpdated dependencies:
[email protected]@react-router/[email protected]@react-router/[email protected]@react-router/[email protected]
Patch Changes
@react-router/[email protected]@react-router/[email protected]
Patch Changes
@react-router/[email protected][email protected]