@remix-run/react
@remix-run/react (latest known version: 5.0.6) has 519 known breaking changes on record, each backed by a source URL.
Security advisories
Recent changes
Fix `LazyBlob.slice()` and `LazyFile.slice()` so slicing an existing slice is calculated relative to the current slice instead of the original source content
Code that relied on the previous behavior of slicing being calculated relative to the original source content will need to be updated to account for slices now being relative to the current slice.
Declare `LazyBlob` and `LazyFile` as implementations of the native `Blob` and `File` interfaces so their type contracts are checked as the classes evolve
Changed `@remix-run/*` peer dependencies to regular dependencies
New methods added to LazyFile and LazyBlob: LazyFile.toFile(), LazyFile.toBlob(), and LazyBlob.toBlob()
LazyFile and LazyBlob no longer extend native File and Blob; instanceof checks will return false and passing them directly to Response or FormData will throw an error
For Response, use lazyFile.stream(). For APIs requiring a complete File like FormData, use await lazyFile.toFile()
Move `@remix-run/mime` to `peerDependencies`
Install `@remix-run/mime` as a direct dependency in your project if you rely on it being provided by this package
Replaced `mrmime` dependency with `@remix-run/mime` for MIME type detection
Users should ensure `@remix-run/mime` is available as a dependency instead of `mrmime`
Removed `lazy-file/fs` export. Use `@remix-run/fs` package instead.
Import `openFile`, `writeFile` and other filesystem functions from `@remix-run/fs` package instead of `@remix-run/lazy-file/fs`.
`openFile()` now sets `file.name` to the `filename` argument as provided, instead of using `path.basename(filename)`. For example, `openFile('./public/assets/favicon.ico')` will set `file.name` to `'./public/assets/favicon.ico'` instead of `'favicon.ico'`.
You can override the name by passing `options.name` to `openFile()`, e.g. `openFile('./public/assets/favicon.ico', { name: 'favicon.ico' })`.
Build system changed from `esbuild` to `tsc`, which means modules in the `dist` directory now mirror the layout of modules in the `src` directory
Removed CommonJS build. This package is now ESM-only.
If you need to use this package in a CommonJS project, you will need to use dynamic `import()`.
Renamed package from `@mjackson/lazy-file` to `@remix-run/lazy-file`
Update package imports and dependencies to use `@remix-run/lazy-file` instead of `@mjackson/lazy-file`
Changed `@remix-run/*` peer dependencies to regular dependencies
Bumped `@remix-run/*` dependencies including async-context-middleware@0.1.2, component@0.4.0, compression-middleware@0.1.2, fetch-router@0.16.0, form-data-middleware@0.1.3, form-data-parser@0.15.0, interaction@0.5.0, logger-middleware@0.1.2, method-override-middleware@0.1.3, route-pattern@0.18.0, session-middleware@0.1.3, and static-middleware@0.4.3
Added `package.json` `exports` for `remix/route-pattern/specificity` to re-export APIs from `@remix-run/route-pattern/specificity`
Added `package.json` `exports` for `remix/data-schema`, `remix/data-schema/checks`, `remix/data-schema/coerce`, `remix/data-schema/lazy`, `remix/data-table`, `remix/data-table-mysql`, `remix/data-table-postgres`, `remix/data-table-sqlite`, `remix/fetch-router/routes`, `remix/file-storage-s3`, `remix/session-storage-memcache`, and `remix/session-storage-redis` to re-export APIs from their corresponding `@remix-run/*` packages
Removed the root export from the `remix` package so you will no longer import anything from `remix` and will instead always import from a sub-path such as `remix/fetch-router` or `remix/component`
Add `Database` class export from `remix/data-table` as a runtime value that can be constructed directly with `new Database(adapter, options)` or via the existing `createDatabase(adapter, options)` function which now delegates to the class constructor.
Add `package.json` `exports` for `remix/auth-middleware` to re-export APIs from `@remix-run/auth-middleware` and `remix/auth` to re-export APIs from `@remix-run/auth`.
Add `remix/csrf-middleware` exposing `csrf(options)` and `getCsrfToken(context)` for session-backed CSRF tokens plus origin validation.
Add `remix/cop-middleware` exposing `cop(options)` for browser-focused cross-origin protection using `Sec-Fetch-Site` with `Origin` fallback, trusted origins, and configurable bypasses.
Update `remix/component` and `remix/component/server` to re-export the latest `@remix-run/component` frame-navigation APIs including `navigate(href, { src, target, history })`, `link(href, { src, target, history })`, `run({ loadModule, resolveFrame })`, and the `handle.frames.top` and `handle.frames.get(name)` helpers.
Add `remix/cors-middleware` to re-export the CORS middleware APIs from `@remix-run/cors-middleware`.
Check what changed for @remix-run/react since your installed version, live.
Open the playground →