Skip to content

Latest commit

 

History

History
122 lines (83 loc) · 3.84 KB

CHANGELOG.md

File metadata and controls

122 lines (83 loc) · 3.84 KB

react-router

6.5.0

This release introduces support for Optional Route Segments. Now, adding a ? to the end of any path segment will make that entire segment optional. This works for both static segments and dynamic parameters.

Optional Params Examples

  • <Route path=":lang?/about> will match:
    • /:lang/about
    • /about
  • <Route path="/multistep/:widget1?/widget2?/widget3?"> will match:
    • /multistep
    • /multistep/:widget1
    • /multistep/:widget1/:widget2
    • /multistep/:widget1/:widget2/:widget3

Optional Static Segment Example

  • <Route path="/home?"> will match:
    • /
    • /home
  • <Route path="/fr?/about"> will match:
    • /about
    • /fr/about

Minor Changes

  • Allows optional routes and optional static segments (#9650)

Patch Changes

  • Stop incorrectly matching on partial named parameters, i.e. <Route path="prefix-:param">, to align with how splat parameters work. If you were previously relying on this behavior then it's recommended to extract the static portion of the path at the useParams call site: (#9506)
// Old behavior at URL /prefix-123
<Route path="prefix-:id" element={<Comp /> }>

function Comp() {
  let params = useParams(); // { id: '123' }
  let id = params.id; // "123"
  ...
}

// New behavior at URL /prefix-123
<Route path=":id" element={<Comp /> }>

function Comp() {
  let params = useParams(); // { id: 'prefix-123' }
  let id = params.id.replace(/^prefix-/, ''); // "123"
  ...
}
  • Updated dependencies:
    • @remix-run/router@1.1.0

6.4.5

Patch Changes

  • Updated dependencies:
    • @remix-run/router@1.0.5

6.4.4

Patch Changes

  • Updated dependencies:
    • @remix-run/router@1.0.4

6.4.3

Patch Changes

  • useRoutes should be able to return null when passing locationArg (#9485)
  • fix initialEntries type in createMemoryRouter (#9498)
  • Updated dependencies:
    • @remix-run/router@1.0.3

6.4.2

Patch Changes

  • Fix IndexRouteObject and NonIndexRouteObject types to make hasErrorElement optional (#9394)
  • Enhance console error messages for invalid usage of data router hooks (#9311)
  • If an index route has children, it will result in a runtime error. We have strengthened our RouteObject/RouteProps types to surface the error in TypeScript. (#9366)
  • Updated dependencies:
    • @remix-run/router@1.0.2

6.4.1

Patch Changes

  • Preserve state from initialEntries (#9288)
  • Updated dependencies:
    • @remix-run/router@1.0.1

6.4.0

Whoa this is a big one! 6.4.0 brings all the data loading and mutation APIs over from Remix. Here's a quick high level overview, but it's recommended you go check out the docs, especially the feature overview and the tutorial.

New APIs

  • Create your router with createMemoryRouter
  • Render your router with <RouterProvider>
  • Load data with a Route loader and mutate with a Route action
  • Handle errors with Route errorElement
  • Defer non-critical data with defer and Await

Bug Fixes

  • Path resolution is now trailing slash agnostic (#8861)
  • useLocation returns the scoped location inside a <Routes location> component (#9094)

Updated Dependencies

  • @remix-run/router@1.0.0