fetch-router@0.8.0
Breaking Changes📦 remixView on GitHub →
⚠ 4 breaking✨ 2 features🔧 6 symbols
Summary
This release rearchitects the router's middleware system to support pre-matching global middleware and moves FormData and method override logic into standalone middleware modules.
⚠️ Breaking Changes
- The `router.use()` method has been removed for global middleware; middleware must now be passed to `createRouter({ middleware })` to run before route matching.
- Renamed the `use` property to `middleware` within route handler definitions in `router.map()`.
- Removed `router.mount()` and all support for sub-routers.
- Moved FormData parsing and method override logic out of the router core into standalone middleware exports. `createRouter` options `parseFormData`, `methodOverride`, and `uploadHandler` have been removed.
Migration Steps
- Replace `router.use(middleware)` with `createRouter({ middleware: [middleware] })` for global middleware.
- Update `router.map()` definitions to use the key `middleware` instead of `use` for route-level middleware.
- Remove calls to `router.mount()` as sub-routers are no longer supported.
- Import `formData` and `methodOverride` from their respective middleware packages and add them to the router middleware chain if those features are required.
- Ensure `methodOverride()` is placed after `formData()` in the middleware array if using both.
✨ New Features
- Introduced 'Router Middleware' (global) that runs before route matching, allowing modification of request context (method/URL) for matching purposes.
- New standalone middleware exports: `formData` and `methodOverride` for more flexible composition and smaller core build size.
🔧 Affected Symbols
createRouterrouter.userouter.maprouter.mountformDatamethodOverride