@vercel/remix
Advanced tools
Changelog
v2.16.7
Date: 2025-05-19
@remix-run/dev
- Update vite-node
(#10611)Full Changelog: v2.16.6...v2.16.7
Changelog
v2.16.6
Date: 2025-05-08
@remix-run/react
- Upgrade turbo-stream
to 2.4.1
(#9973)@remix-run/react
- Fix window is not defined
error in Single Fetch when server-rendering <PrefetchPageLinks>
(#10601)@remix-run/serve
- Remove redundant @remix-run/node/install
import from remix-serve
because it manually calls installGlobals
separately (#10306)Full Changelog: v2.16.5...v2.16.6
Changelog
v2.15.3
Date: 2025-01-30
@remix-run/react
- Properly handle interrupted manifest requests in lazy route discovery (#10447)@remix-run/server-runtime
- Avoid duplication of Set-Cookie
headers if also returned from headers
(#10424)@remix-run/server-runtime
- Properly handle status codes that cannot have a body in single fetch responses (204, etc.) (#10410)Full Changelog: v2.15.2...v2.15.3
Changelog
v2.15.2
Date: 2024-12-20
@remix-run/dev
- Allow suppression of future flag warnings by setting them to false
(#10358)@remix-run/react
- Throw unwrapped Single Fetch redirect
to align with pre-Single Fetch behavior (#10317)Full Changelog: v2.15.1...v2.15.2
Changelog
v2.15.1
Date: 2024-12-09
create-remix
- Move fs-extra
from devDependencies
to dependencies
(#10300)Full Changelog: v2.15.0...v2.15.1
Changelog
v2.15.0
Date: 2024-11-19
Stabilize the future.v3_routeConfig
future flag, replacing future.unstable_routeConfig
. This enables support for routes.ts
to assist with the migration to React Router v7. (#10236)
Note that if you had already enabled the future.unstable_routeConfig
flag, your route config in app/routes.ts
is no longer defined via the routes
export and must now be defined via the default export.
import { type RouteConfig } from "@remix-run/route-config";
-export const routes: RouteConfig = [];
+export default [] satisfies RouteConfig;
Changelog
v2.14.0
Date: 2024-11-08
Deprecate SerializeFrom
in favor of generics because it will be removed in React Router v7 (#10173)
Add deprecation warning to @remix-run/eslint-config
(#10174)
Add support for routes.ts
behind future.unstable_routeConfig
flag to assist with the migration to React Router v7. (#10107)
Config-based routing is the new default in React Router v7, configured via the routes.ts
file in the app directory. Support for routes.ts
and its related APIs in Remix are designed as a migration path to help minimize the number of changes required when moving your Remix project over to React Router v7. While some new packages have been introduced within the @remix-run
scope, these new packages only exist to keep the code in routes.ts
as similar as possible to the equivalent code for React Router v7.
When the unstable_routeConfig
future flag is enabled, Remix's built-in file system routing will be disabled and your project will opted into React Router v7's config-based routing.
To enable the flag, in your vite.config.ts
file:
remix({
future: {
unstable_routeConfig: true,
},
});
A minimal routes.ts
file to support Remix's built-in file system routing looks like this:
// app/routes.ts
import { flatRoutes } from "@remix-run/fs-routes";
import type { RouteConfig } from "@remix-run/route-config";
export const routes: RouteConfig = flatRoutes();
Log deprecation warnings for v3 future flags (#10126)
@deprecated
annotations to json
/defer
utilities@remix-run/react
- Fix defaultShouldRevalidate
value when using Single Fetch (#10139)@remix-run/server-runtime
- Update externally-accessed resource routes warning to cover null
usage as well (#10145)create-remix
@remix-run/architect
@remix-run/cloudflare
@remix-run/cloudflare-pages
@remix-run/cloudflare-workers
@remix-run/css-bundle
@remix-run/deno
@remix-run/dev
@remix-run/eslint-config
@remix-run/express
@remix-run/fs-routes
@remix-run/node
@remix-run/react
@remix-run/route-config
@remix-run/routes-option-adapter
@remix-run/serve
@remix-run/server-runtime
@remix-run/testing
Full Changelog: v2.13.1...v2.14.0
Changelog
v2.13.1
Date: 2024-10-11
@remix-run/dev
- Revert future.v3_optimizeDeps
back to future.unstable_optimizeDeps
as it was not intended to stabilize in Remix v2 (#10099)Full Changelog: v2.13.0...v2.13.1
Changelog
v2.12.0
Date: 2024-09-09
You can now opt-in to automatic dependency optimization during development by using the future.unstable_optimizeDeps
future flag. For details, check out the docs at Guides > Dependency optimization. For users who were previously working around this limitation, you no longer need to explicitly add routes to Vite's optimizeDeps.entries
nor do you need to disable the remix-dot-server
plugin.
"@remix-run/react/future/single-fetch.d.ts"
override from tsconfig.json
> compilerOptions
> types
defineLoader
, defineAction
, defineClientLoader
, defineClientAction
helpers from your route modulesUIMatch_SingleFetch
type helper with the original UIMatch
MetaArgs_SingleFetch
type helper with the original MetaArgs
Then you are ready for the new type safety setup:
// vite.config.ts
declare module "@remix-run/server-runtime" {
interface Future {
unstable_singleFetch: true; // 👈 enable _types_ for single-fetch
}
}
export default defineConfig({
plugins: [
remix({
future: {
unstable_singleFetch: true, // 👈 enable single-fetch
},
}),
],
});
For more information, see Guides > Single Fetch in our docs.
With Single Fetch, re-used routes will now revalidate by default on GET
navigations. This is aimed at improving caching of Single Fetch calls in the simple case while still allowing users to opt-into the previous behavior for more advanced use cases.
With this new behavior, requests do not need special query params for granular route revalidations out of the box - i.e., GET /a/b/c.data
There are two conditions that will trigger granular revalidation and will exclude certain routes from the single fetch call:
shouldRevalidate
clientLoader
serverLoader()
from your clientLoader
, that will make a separate HTTP call for just that route loader - i.e., GET /a/b/c.data?_routes=routes/a
for a clientLoader
in routes/a.tsx
When one or more routes are excluded from the Single Fetch call, the remaining routes that have loaders are included as query params. For example, when navigating to /a/b/c
, if A was excluded, and the root
route and routes/b
had a loader
but routes/c
did not, the Single Fetch request would be GET /a/b/c.data?_routes=root,routes/b
.
For more information, see Guides > Single Fetch in our docs.
@remix-run/dev
- New future.unstable_optimizeDeps
flag for automatic dependency optimization (#9921)@remix-run/dev
- Handle circular dependencies in modulepreload manifest generation (#9917)@remix-run/dev
- Fix dest already exists
build errors by only moving SSR assets to the client build directory when they're not already present on disk (#9901)@remix-run/react
- Clarify wording in default HydrateFallback
console warning (#9899)@remix-run/react
- Remove hydration URL check that was originally added for React 17 hydration issues and we no longer support React 17 (#9890)
v1.18.0
via #64091.18.0
turned out to be subject to false positives of it's own which could also put the user in looping scenarios@remix-run/react
- Lazy Route Discovery: Sort /__manifest
query parameters for better caching (#9888)@remix-run/react
- Single Fetch: Improved type safety (#9893)@remix-run/react
- Single Fetch: Fix revalidation behavior bugs (#9938)@remix-run/server-runtime
- Do not render or try to include a body for 304 responses on document requests (#9955)@remix-run/server-runtime
- Single Fetch: Do not try to encode a turbo-stream
body into 304 responses (#9941)@remix-run/server-runtime
- Single Fetch: Change content type on .data
requests to text/x-script
to allow Cloudflare compression (#9889)Full Changelog: v2.11.2...v2.12.0
Changelog
v2.11.2
Date: 2024-08-15
@remix-run/react
- Fog of War: Simplify implementation now that React Router handles slug/splat edge cases and tracks previously discovered routes (see https://github.com/remix-run/react-router/pull/11883) (#9860)
/__manifest
endpoint since we no longer need the notFoundPaths
field@remix-run/react
- Fog of War: Update to use renamed unstable_patchRoutesOnNavigation
function in RR (see https://github.com/remix-run/react-router/pull/11888) (#9860)@remix-run/server-runtime
- Single Fetch: Fix redirects when a basename
is present (#9848)@remix-run/server-runtime
- Single Fetch: Update turbo-stream
to v2.3.0
(#9856)
Full Changelog: v2.11.1...v2.11.2