Repository: TanStack/router
Pull request #1924 (2024-07-09 01:44:00)

docs: use gfm alerts in the documentation
Do not merge till https://github.com/TanStack/tanstack.com/pull/249 has been merged into tanstack.com.

nx-cloud[bot]: # ☁️ Nx Cloud Report

CI is running for commit 4a74a13c058a728ebc3a015d180472046821cd71.

[📂 Click to track the progress, see the status, the terminal output, and the build insights.](https://cloud.nx.app/cipes/668c96005c82e4358e60e317?utm_source=pull-request&utm_medium=comment)


---

Sent with 💌 from [NxCloud.](https://nx.app?utm_source=pull-request&utm_medium=comment)
pkg-pr-new[bot]: 
<a href="https:///pr.new/TanStack/router/pull/1924"><img src="https://developer.stackblitz.com/img/review_pr_small.svg" alt="Review PR in StackBlitz Codeflow" align="left" width="103" height="20"></a> _Run & review this pull request in [StackBlitz Codeflow](https:///pr.new/TanStack/router/pull/1924)._

_commit: <a href="https://github.com/TanStack/router/runs/27193558618"><code>4a74a13</code></a>_


<details><summary><b>@tanstack/history</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/history@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/react-cross-context</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-cross-context@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/react-router</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-router@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/react-router-with-query</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/react-router-with-query@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/router-cli</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-cli@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/router-devtools</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-devtools@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/router-generator</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-generator@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/router-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-plugin@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/router-vite-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/router-vite-plugin@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/start</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/start@1924
```

</p></details>
      
    

<details><summary><b>@tanstack/start-vite-plugin</b></summary><p>

```
npm i https://pkg.pr.new/@tanstack/start-vite-plugin@1924
```

</p></details>
      
    

---


<details><summary><b>templates</b></summary><p>

- [tanstack-router-react-example-authenticated-routes](https://pkg.pr.new/template/8e533d37-7cdc-4dc5-b0d4-48f6443e9b96)
- [tanstack-router-react-example-basic](https://pkg.pr.new/template/a67f843d-eddf-4812-b1a5-cd323b8c7b64)
- [tanstack-router-react-example-basic-default-search-params](https://pkg.pr.new/template/f49ef115-92ea-49d7-9460-f5e53941af91)
- [tanstack-router-react-example-basic-file-based](https://pkg.pr.new/template/c5f8000f-96f9-406a-98d6-ef1a5fbf7e3f)
- [tanstack-router-react-example-basic-file-based-codesplitting](https://pkg.pr.new/template/9ffc322e-f78b-4318-9f2f-9515b859e491)
- [tanstack-router-react-example-react-query](https://pkg.pr.new/template/3ae443d9-faff-48b2-9572-671e99742464)
- [tanstack-router-react-example-basic-react-query-file-based](https://pkg.pr.new/template/00a62acb-0c3c-462a-8e01-5a84b2fc2ddc)
- [tanstack-router-react-example-basic-ssr-file-based](https://pkg.pr.new/template/785cd430-8a68-4d62-9c61-adb2ef5d9009)
- [tanstack-router-react-example-basic-ssr-streaming-file-based](https://pkg.pr.new/template/8d684a69-97e4-4c9d-ac1b-2f44bd009228)
- [tanstack-router-react-example-deferred-data](https://pkg.pr.new/template/92fff3b5-84e3-435e-8615-93bc6e77362a)
- [tanstack-router-react-example-kitchen-sink](https://pkg.pr.new/template/d5140091-97ff-4ffb-a501-88234d4f066f)
- [tanstack-router-react-example-kitchen-sink-file-based](https://pkg.pr.new/template/9a2f1a47-2979-40d2-8bba-c1f65434d93c)
- [tanstack-router-react-example-kitchen-sink-react-query](https://pkg.pr.new/template/6ff638ec-4e15-46c2-ab2b-442d8bbda1a8)
- [tanstack-router-react-example-kitchen-sink-react-query-file-based](https://pkg.pr.new/template/4953d1b5-4d4d-48f1-a407-8f22e79048a0)
- [tanstack-router-react-example-large-file-based](https://pkg.pr.new/template/0b9bd05f-f6c9-4af7-8fbc-353d9763bab1)
- [tanstack-router-react-example-location-masking](https://pkg.pr.new/template/7f3c3890-a6b2-495f-8f69-8eb4142ee8bb)
- [tanstack-router-react-example-navigation-blocking](https://pkg.pr.new/template/3c0c5e7a-0062-4445-83ab-0e24e443e631)
- [tanstack-router-react-example-quickstart](https://pkg.pr.new/template/94f7bef8-31a8-4175-8dfe-186bd4d2b6eb)
- [tanstack-router-react-example-quickstart-file-based](https://pkg.pr.new/template/9d3d0343-9670-4ba7-ae19-1f80430e634c)
- [tanstack-router-react-example-quickstart-rspack-file-based](https://pkg.pr.new/template/763fac72-6f0e-499f-9bad-b79031bd684a)
- [tanstack-router-react-example-quickstart-webpack-file-based](https://pkg.pr.new/template/75fb68e7-ca07-4c5c-bea0-21a4168f9469)
- [tanstack-router-react-example-scroll-restoration](https://pkg.pr.new/template/caecf597-c6f7-47e1-97e8-b91ea532f2f3)
- [tanstack-router-example-react-start-basic](https://pkg.pr.new/template/3a73ecb0-771c-4f46-b608-b84acbeafc95)
- [tanstack-router-example-react-start-basic-counter](https://pkg.pr.new/template/56a16bee-e193-4dd7-aed4-bd9eda837b46)
- [tanstack-router-example-react-start-basic-react-query](https://pkg.pr.new/template/0411d250-7e01-42f6-a93c-cdfedfa774a8)
- [tanstack-router-example-react-start-basic-rsc](https://pkg.pr.new/template/b2ce1843-0189-4dd3-81ff-eaf2e7590cde)
- [tanstack-router-example-react-start-basic-trellaux](https://pkg.pr.new/template/69cf84bb-0e15-4efb-95c2-df31b3a65166)
- [tanstack-router-react-example-with-trpc-react-query](https://pkg.pr.new/template/3cb9ae2f-5d62-45e1-a26e-728ea7c37fa0)
- [tanstack-router-react-example-waku-rsc](https://pkg.pr.new/template/c161f924-9b24-4549-bdab-0c2a3f5f3dcc)
- [tanstack-router-react-example-with-bling](https://pkg.pr.new/template/95671da7-55a7-4ec8-8828-a8bf163c2ac0)
- [tanstack-router-react-example-with-framer-motion](https://pkg.pr.new/template/0967620f-f81f-4f0a-bca2-37d79b01df96)
- [tanstack-router-react-example-with-trpc](https://pkg.pr.new/template/ef9f7243-8628-4c9f-b0d1-1fb4bdd37a83)

</p></details>
      
    


Patch:
diff --git a/docs/framework/react/api/router/FileRouteClass.md b/docs/framework/react/api/router/FileRouteClass.md
index 2ba2ac43d..9a9b364ad 100644
--- a/docs/framework/react/api/router/FileRouteClass.md
+++ b/docs/framework/react/api/router/FileRouteClass.md
@@ -3,7 +3,9 @@ id: FileRouteClass
 title: FileRoute class
 ---
 
-> 🚧 The `FileRoute` class is deprecated and will be removed in the next major version of TanStack Router. Please use the [`createFileRoute`](../createFileRouteFunction) function instead. The constructor and methods associated with this class will be implemented on its functional counterpart in the next major release.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`createFileRoute`](../createFileRouteFunction) function instead.
 
 The `FileRoute` class is a factory that can be used to create a file-based route instance. This route instance can then be used to automatically generate a route tree with the `tsr generate` and `tsr watch` commands.
 
diff --git a/docs/framework/react/api/router/NotFoundRouteClass.md b/docs/framework/react/api/router/NotFoundRouteClass.md
index 5730e2fb2..032f5d5b8 100644
--- a/docs/framework/react/api/router/NotFoundRouteClass.md
+++ b/docs/framework/react/api/router/NotFoundRouteClass.md
@@ -3,7 +3,10 @@ id: NotFoundRouteClass
 title: NotFoundRoute class
 ---
 
-> 🚧 The global `NotFoundRoute` class is deprecated and will be removed in the next major version of TanStack Router. Please use the `notFoundComponent` route option that is present during route configuration. See the [Not Found Errors guide](../../../guide/not-found-errors) for more information.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the `notFoundComponent` route option that is present during route configuration.
+> See the [Not Found Errors guide](../../../guide/not-found-errors) for more information.
 
 The `NotFoundRoute` class extends the `Route` class and can be used to create a not found route instance. A not found route instance can be passed to the `routerOptions.notFoundRoute` option to configure a default not-found/404 route for every branch of the route tree.
 
diff --git a/docs/framework/react/api/router/RootRouteClass.md b/docs/framework/react/api/router/RootRouteClass.md
index 4302643c8..1e49ddd93 100644
--- a/docs/framework/react/api/router/RootRouteClass.md
+++ b/docs/framework/react/api/router/RootRouteClass.md
@@ -3,7 +3,9 @@ id: RootRouteClass
 title: RootRoute class
 ---
 
-> 🚧 The `RootRoute` class is deprecated and will be removed in the next major version of TanStack Router. Please use the [`createRootRoute`](../createRootRouteFunction) function instead.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`createRootRoute`](../createRootRouteFunction) function instead.
 
 The `RootRoute` class extends the `Route` class and can be used to create a root route instance. A root route instance can then be used to create a route tree.
 
diff --git a/docs/framework/react/api/router/RouteApiClass.md b/docs/framework/react/api/router/RouteApiClass.md
index e5de2b2f1..d33a2a777 100644
--- a/docs/framework/react/api/router/RouteApiClass.md
+++ b/docs/framework/react/api/router/RouteApiClass.md
@@ -3,7 +3,9 @@ id: RouteApiClass
 title: RouteApi class
 ---
 
-> 🚧 The `RouteApiClass` class is deprecated and will be removed in the next major version of TanStack Router. Please use the [`getRouteApi`](../getRouteApiFunction) function instead. The constructor and methods associated with this class will be implemented on its functional counterpart in the next major release.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`getRouteApi`](../getRouteApiFunction) function instead.
 
 The `RouteApi` class provides type-safe version of common hooks like `useParams`, `useSearch`, `useRouteContext`, `useNavigate`, `useLoaderData`, and `useLoaderDeps` that are pre-bound to a specific route ID and corresponding registered route types.
 
diff --git a/docs/framework/react/api/router/RouteClass.md b/docs/framework/react/api/router/RouteClass.md
index bf2850fbf..22e120507 100644
--- a/docs/framework/react/api/router/RouteClass.md
+++ b/docs/framework/react/api/router/RouteClass.md
@@ -3,7 +3,9 @@ id: RouteClass
 title: Route class
 ---
 
-> 🚧 The `Route` class is deprecated and will be removed in the next major version of TanStack Router. Please use the [`createRoute`](../createRouteFunction) function instead.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`createRoute`](../createRouteFunction) function instead.
 
 The `Route` class implements the `RouteApi` class and can be used to create route instances. A route instance can then be used to create a route tree.
 
diff --git a/docs/framework/react/api/router/RouterClass.md b/docs/framework/react/api/router/RouterClass.md
index b6884bb32..2f1bd16e0 100644
--- a/docs/framework/react/api/router/RouterClass.md
+++ b/docs/framework/react/api/router/RouterClass.md
@@ -3,7 +3,9 @@ id: RouterClass
 title: Router Class
 ---
 
-> 🚧 The `Router` class is deprecated and will be removed in the next major version of TanStack Router. Please use the [`createRouter`](../createRouterFunction) function instead. The constructor and methods associated with this class will be implemented on its functional counterpart in the next major release.
+> [!CAUTION]
+> This class has been deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`createRouter`](../createRouterFunction) function instead.
 
 The `Router` class is used to instantiate a new router instance.
 
diff --git a/docs/framework/react/api/router/lazyRouteComponentFunction.md b/docs/framework/react/api/router/lazyRouteComponentFunction.md
index 50b74d0a1..751db4423 100644
--- a/docs/framework/react/api/router/lazyRouteComponentFunction.md
+++ b/docs/framework/react/api/router/lazyRouteComponentFunction.md
@@ -3,7 +3,8 @@ id: lazyRouteComponentFunction
 title: lazyRouteComponent function
 ---
 
-> 🧠 **If you are using file-based routing, it's recommended to use the `createLazyFileRoute` function instead.**
+> [!IMPORTANT]
+> If you are using file-based routing, it's recommended to use the `createLazyFileRoute` function instead.
 
 The `lazyRouteComponent` function can be used to create a one-off code-split route component that can be preloaded using a `component.preload()` method.
 
diff --git a/docs/framework/react/api/router/rootRouteWithContextFunction.md b/docs/framework/react/api/router/rootRouteWithContextFunction.md
index 613187dd9..4e462848d 100644
--- a/docs/framework/react/api/router/rootRouteWithContextFunction.md
+++ b/docs/framework/react/api/router/rootRouteWithContextFunction.md
@@ -3,7 +3,9 @@ id: rootRouteWithContextFunction
 title: rootRouteWithContext function
 ---
 
-> 🚧 The `rootRouteWithContext` function is deprecated and will be removed in the next major version of TanStack Router. Please use the [`createRootRouteWithContext`](../createRootRouteWithContextFunction) function instead. The methods associated with this function are fully replicated on its newer.
+> [!CAUTION]
+> This function is deprecated and will be removed in the next major version of TanStack Router.
+> Please use the [`createRootRouteWithContext`](../createRootRouteWithContextFunction) function instead.
 
 The `rootRouteWithContext` function is a helper function that can be used to create a root route instance that requires a context type to be fulfilled when the router is created.
 
diff --git a/docs/framework/react/api/router/useChildMatchesHook.md b/docs/framework/react/api/router/useChildMatchesHook.md
index 1bed5ecc2..86af99e33 100644
--- a/docs/framework/react/api/router/useChildMatchesHook.md
+++ b/docs/framework/react/api/router/useChildMatchesHook.md
@@ -5,7 +5,8 @@ title: useChildMatches hook
 
 The `useChildMatches` hook returns all of the child [`RouteMatch`](../RouteMatchType) objects from the closest match down to the leaf-most match. **It does not include the current match, which can be obtained using the `useMatch` hook.**
 
-> ⚠️ Note: If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
+> [!IMPORTANT]
+> If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
 
 ## useChildMatches options
 
diff --git a/docs/framework/react/api/router/useMatchesHook.md b/docs/framework/react/api/router/useMatchesHook.md
index 2df0df173..eb63068a9 100644
--- a/docs/framework/react/api/router/useMatchesHook.md
+++ b/docs/framework/react/api/router/useMatchesHook.md
@@ -5,7 +5,8 @@ title: useMatches hook
 
 The `useMatches` hook returns all of the [`RouteMatch`](../RouteMatchType) objects from the router **regardless of its callers position in the React component tree**.
 
-> 🧠 If you only want the parent or child matches, then you can use the [`useParentMatches`](../useParentMatchesHook) or the [`useChildMatches`](../useChildMatchesHook) based on the selection you need.
+> [!TIP]
+> If you only want the parent or child matches, then you can use the [`useParentMatches`](../useParentMatchesHook) or the [`useChildMatches`](../useChildMatchesHook) based on the selection you need.
 
 ## useMatches options
 
diff --git a/docs/framework/react/api/router/useParentMatchesHook.md b/docs/framework/react/api/router/useParentMatchesHook.md
index 4b1e82048..ba4728580 100644
--- a/docs/framework/react/api/router/useParentMatchesHook.md
+++ b/docs/framework/react/api/router/useParentMatchesHook.md
@@ -5,7 +5,8 @@ title: useParentMatches hook
 
 The `useParentMatches` hook returns all of the parent [`RouteMatch`](../RouteMatchType) objects from the root down to the immediate parent of the current match in context. **It does not include the current match, which can be obtained using the `useMatch` hook.**
 
-> ⚠️ Note: If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
+> [!IMPORTANT]
+> If the router has pending matches and they are showing their pending component fallbacks, `router.state.pendingMatches` will used instead of `router.state.matches`.
 
 ## useParentMatches options
 
diff --git a/docs/framework/react/api/router/useRouterStateHook.md b/docs/framework/react/api/router/useRouterStateHook.md
index eac7df690..7b0dab4bc 100644
--- a/docs/framework/react/api/router/useRouterStateHook.md
+++ b/docs/framework/react/api/router/useRouterStateHook.md
@@ -5,7 +5,8 @@ title: useRouterState hook
 
 The `useRouterState` method is a hook that returns the current internal state of the router. This hook is useful for accessing the current state of the router in a component.
 
-> 🧠 If you want to access the current location or the current matches, you should try out the [`useLocation`](../useLocationHook) and [`useMatches`](../useMatchesHook) hooks first. These hooks are designed to be more ergonomic and easier to use than accessing the router state directly.
+> [!TIP]
+> If you want to access the current location or the current matches, you should try out the [`useLocation`](../useLocationHook) and [`useMatches`](../useMatchesHook) hooks first. These hooks are designed to be more ergonomic and easier to use than accessing the router state directly.
 
 ## useRouterState options
 
diff --git a/docs/framework/react/decisions-on-dx.md b/docs/framework/react/decisions-on-dx.md
index f44e8d9d0..eeee01e8f 100644
--- a/docs/framework/react/decisions-on-dx.md
+++ b/docs/framework/react/decisions-on-dx.md
@@ -92,7 +92,8 @@ What we found to be the best way to define your routes is to abstract the defini
 
 You can read more about [code-based routing](../guide/code-based-routing) to see how to define your routes in this way.
 
-> 🙋🏼 Finding Code-based routing to be a bit too cumbersome? See why [file-based routing](#3-why-is-file-based-routing-the-preferred-way-to-define-routes) is the preferred way to define your routes.
+> [!TIP]
+> Finding Code-based routing to be a bit too cumbersome? See why [file-based routing](#3-why-is-file-based-routing-the-preferred-way-to-define-routes) is the preferred way to define your routes.
 
 ## 2. Declaring the Router instance for type inference
 
@@ -158,7 +159,8 @@ We went with **module declaration**, as it is what we found to be the most scala
 
 Something you'll notice (quite soon) in the TanStack Router documentation is that we push for **file-based routing** as the preferred method for defining your routes. This is because we've found that file-based routing is the most scalable and maintainable way to define your routes.
 
-> ⚠️ Before you continue, it's important you have a good understanding of [code-based routing](../guide/code-based-routing) and [file-based routing](../guide/file-based-routing).
+> [!TIP]
+> Before you continue, it's important you have a good understanding of [code-based routing](../guide/code-based-routing) and [file-based routing](../guide/file-based-routing).
 
 As mentioned in the beginning, TanStack Router was designed for complex applications that require a high degree of type-safety and maintainability. And to achieve this, the configuration of the router has been done in a precise way that allows TypeScript to infer the types of your routes as much as possible.
 
@@ -232,4 +234,4 @@ That's it! No need to worry about defining the `getParentRoute` function, stitch
 
 At no point does the TanStack Router CLI take away your control over your route configurations. It's designed to be as flexible as possible, allowing you to define your routes in a way that suits your application whilst reducing the boilerplate and complexity of the route configuration.
 
-> 🧠 Check out the guides for [file-based routing](../guide/file-based-routing) and [code-splitting](../guide/code-splitting) for a more in-depth explanation of how they work in TanStack Router.
+Check out the guides for [file-based routing](../guide/file-based-routing) and [code-splitting](../guide/code-splitting) for a more in-depth explanation of how they work in TanStack Router.
diff --git a/docs/framework/react/guide/authenticated-routes.md b/docs/framework/react/guide/authenticated-routes.md
index 706b81fe9..c42f6c417 100644
--- a/docs/framework/react/guide/authenticated-routes.md
+++ b/docs/framework/react/guide/authenticated-routes.md
@@ -48,7 +48,8 @@ export const Route = createFileRoute('/_authenticated')({
 })
 ```
 
-> 🧠 `redirect()` takes all of the same options as the `navigate` function, so you can pass options like `replace: true` if you want to replace the current history entry instead of adding a new one.
+> [!TIP]
+> The `redirect()` function takes all of the same options as the `navigate` function, so you can pass options like `replace: true` if you want to replace the current history entry instead of adding a new one.
 
 Once you have authenticated a user, it's also common practice to redirect them back to the page they were trying to access. To do this, you can utilize the `redirect` search param that we added in our original redirect. Since we'll be replacing the entire URL with what it was, `router.history.push` is better suited for this than `router.navigate`:
 
@@ -79,7 +80,8 @@ This keeps the user on the same page, but still allows you to render a login for
 
 If your authentication flow relies on interactions with React context and/or hooks, you'll need to pass down your authentication state to TanStack Router using `router.context` option.
 
-> 🧠 React hooks are not meant to be consumed outside of React components. If you need to use a hook outside of a React component, you need to extract the returned state from the hook in a component that wraps your `<RouterProvider />` and then pass the returned value down to TanStack Router.
+> [!IMPORTANT]
+> React hooks are not meant to be consumed outside of React components. If you need to use a hook outside of a React component, you need to extract the returned state from the hook in a component that wraps your `<RouterProvider />` and then pass the returned value down to TanStack Router.
 
 We'll cover the `router.context` options in-detail in the [Router Context](../router-context) section.
 
diff --git a/docs/framework/react/guide/code-based-routing.md b/docs/framework/react/guide/code-based-routing.md
index 4bbab7cba..1181632f7 100644
--- a/docs/framework/react/guide/code-based-routing.md
+++ b/docs/framework/react/guide/code-based-routing.md
@@ -177,7 +177,8 @@ function PostComponent() {
 }
 ```
 
-> 🧠 Quick tip: If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `postIdRoute` configuration to get access to the typed `useParams()` hook.
+> [!TIP]
+> If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `postIdRoute` configuration to get access to the typed `useParams()` hook.
 
 ## Splat / Catch-All Routes
 
diff --git a/docs/framework/react/guide/code-splitting.md b/docs/framework/react/guide/code-splitting.md
index 250a43b2e..7f11421dd 100644
--- a/docs/framework/react/guide/code-splitting.md
+++ b/docs/framework/react/guide/code-splitting.md
@@ -178,7 +178,8 @@ Tada! 🎉
 
 ## Using automatic code-splitting
 
-> ⚠️ **Experimental:** This feature is experimental and currently in development. It is not recommended for production use.
+> [!WARNING]
+> This feature is experimental and currently in development. It is not recommended for production use.
 
 When using the `experimental.enableCodeSplitting` feature, TanStack Router will automatically code split your route files based on the non-critical route configuration mentioned above.
 
diff --git a/docs/framework/react/guide/creating-a-router.md b/docs/framework/react/guide/creating-a-router.md
index 2e1cdf637..86f6d37fc 100644
--- a/docs/framework/react/guide/creating-a-router.md
+++ b/docs/framework/react/guide/creating-a-router.md
@@ -40,7 +40,8 @@ const routeTree = rootRoute.addChildren([
 
 ## Router Type Safety
 
-> ⚠️ DO NOT SKIP THIS SECTION! ⚠️
+> [!IMPORTANT]
+> DO NOT SKIP THIS SECTION! ⚠️
 
 TanStack Router provides amazing support for TypeScript, even for things you wouldn't expect like bare imports straight from the library! To make this possible, you must register your router's types using TypeScripts' [Declaration Merging](https://www.typescriptlang.org/docs/handbook/declaration-merging.html) feature. This is done by extending the `Register` interface on `@tanstack/react-router` with a `router` property that has the type of your `router` instance:
 
diff --git a/docs/framework/react/guide/custom-search-param-serialization.md b/docs/framework/react/guide/custom-search-param-serialization.md
index 38110f12b..4d8d45313 100644
--- a/docs/framework/react/guide/custom-search-param-serialization.md
+++ b/docs/framework/react/guide/custom-search-param-serialization.md
@@ -40,7 +40,8 @@ However, this default behavior may not be suitable for all use cases. For exampl
 
 This can be achieved by providing your own serialization and deserialization functions to the `parseSearch` and `stringifySearch` options in the [`Router`](../../api/router/RouterOptionsType#stringifysearch-method) configuration. When doing this, you can utilize TanStack Router's built-in helper functions, `parseSearchWith` and `stringifySearchWith`, to simplify the process.
 
-> 🧠 An important aspect of serialization and deserialization, is that you are able to get the same object back after deserialization. This is important because if the serialization and deserialization process is not done correctly, you may lose some information. For example, if you are using a library that does not support nested objects, you may lose the nested object when deserializing the search string.
+> [!TIP]
+> An important aspect of serialization and deserialization, is that you are able to get the same object back after deserialization. This is important because if the serialization and deserialization process is not done correctly, you may lose some information. For example, if you are using a library that does not support nested objects, you may lose the nested object when deserializing the search string.
 
 ![Diagram showing idempotent nature of URL search param serialization and deserialization](https://raw.githubusercontent.com/TanStack/router/main/docs/assets/search-serialization-deserialization-idempotency.jpg)
 
diff --git a/docs/framework/react/guide/deferred-data-loading.md b/docs/framework/react/guide/deferred-data-loading.md
index 3022991b9..b4a547fc5 100644
--- a/docs/framework/react/guide/deferred-data-loading.md
+++ b/docs/framework/react/guide/deferred-data-loading.md
@@ -64,7 +64,8 @@ function PostIdComponent() {
 }
 ```
 
-> 🧠 Quick tip: If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `Route` configuration to get access to the typed `useLoaderData()` hook.
+> [!TIP]
+> If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `Route` configuration to get access to the typed `useLoaderData()` hook.
 
 The `Await` component resolves the promise by triggering the nearest suspense boundary until it is resolved, after which it renders the component's `children` as a function with the resolved data.
 
diff --git a/docs/framework/react/guide/external-data-loading.md b/docs/framework/react/guide/external-data-loading.md
index c98467cfd..b764ac85c 100644
--- a/docs/framework/react/guide/external-data-loading.md
+++ b/docs/framework/react/guide/external-data-loading.md
@@ -3,7 +3,8 @@ id: external-data-loading
 title: External Data Loading
 ---
 
-> ⚠️ This guide is geared towards external state management libraries and their integration with TanStack Router for data fetching, ssr, hydration/dehydration and streaming. If you haven't read the standard [Data Loading](../data-loading) guide
+> [!IMPORTANT]
+> This guide is geared towards external state management libraries and their integration with TanStack Router for data fetching, ssr, hydration/dehydration and streaming. If you haven't read the standard [Data Loading](../data-loading) guide, please do so first.
 
 ## To **Store** or to **Coordinate**?
 
diff --git a/docs/framework/react/guide/file-based-routing.md b/docs/framework/react/guide/file-based-routing.md
index 2ef595fc1..fbf2e2f73 100644
--- a/docs/framework/react/guide/file-based-routing.md
+++ b/docs/framework/react/guide/file-based-routing.md
@@ -49,7 +49,8 @@ export default defineConfig({
 
 Or, you can clone our [Quickstart Vite example](https://github.com/TanStack/router/tree/main/examples/react/quickstart-file-based) and get started.
 
-> ⚠️ If you are using the older `@tanstack/router-vite-plugin` package, you can still continue to use it, as it will be aliased to the `@tanstack/router-plugin/vite` package. However, we would recommend using the `@tanstack/router-plugin` package directly.
+> [!WARNING]
+> If you are using the older `@tanstack/router-vite-plugin` package, you can still continue to use it, as it will be aliased to the `@tanstack/router-plugin/vite` package. However, we would recommend using the `@tanstack/router-plugin` package directly.
 
 ### Configuration with Rspack/Rsbuild
 
@@ -187,7 +188,8 @@ If these defaults work for your project, you don't need to configure anything at
 
 The following options are available for configuration via the `tsr.config.json` file:
 
-> **🚨 Important:** Do not set the `routeFilePrefix`, `routeFileIgnorePrefix`, or `routeFileIgnorePattern` options, to match any of the tokens used in the [file-naming conventions](#file-naming-conventions) section.
+> [!IMPORTANT]
+> Do not set the `routeFilePrefix`, `routeFileIgnorePrefix`, or `routeFileIgnorePattern` options, to match any of the tokens used in the [file-naming conventions](#file-naming-conventions) section.
 
 - **`routeFilePrefix`**
   - (Optional) If set, only route files and directories that start with this string will be considered for routing.
diff --git a/docs/framework/react/guide/outlets.md b/docs/framework/react/guide/outlets.md
index 1717142d7..5f0b3cfe5 100644
--- a/docs/framework/react/guide/outlets.md
+++ b/docs/framework/react/guide/outlets.md
@@ -8,6 +8,9 @@ Nested routing means that routes can be nested within other routes, including th
 
 The `Outlet` component is used to render the next potentially matching child route. `<Outlet />` doesn't take any props and can be rendered anywhere within a route's component tree. If there is no matching child route, `<Outlet />` will render `null`.
 
+> [!TIP]
+> If a route's `component` is left undefined, it will render an `<Outlet />` automatically.
+
 A great example is configuring the root route of your application. Let's give our root route a component that renders a title, then an `<Outlet />` for our top-level routes to render.
 
 ```tsx
@@ -26,5 +29,3 @@ function RootComponent() {
   )
 }
 ```
-
-> 🧠 If a route's `component` is left undefined, it will render an `<Outlet />` automatically.
diff --git a/docs/framework/react/guide/route-masking.md b/docs/framework/react/guide/route-masking.md
index 15ff6b3c5..e4fce1fc5 100644
--- a/docs/framework/react/guide/route-masking.md
+++ b/docs/framework/react/guide/route-masking.md
@@ -13,7 +13,8 @@ Each of these scenarios can be achieved with route masking and even extended to
 
 ## How does route masking work?
 
-> 🧠 You **do not** need to understand how route masking works in order to use it. This section is for those who are curious about how it works under the hood. Skip to [How do I use route masking?](#how-do-i-use-route-masking) to learn how to use it!.
+> [!IMPORTANT]
+> You **do not** need to understand how route masking works in order to use it. This section is for those who are curious about how it works under the hood. Skip to [How do I use route masking?](#how-do-i-use-route-masking) to learn how to use it!.
 
 Route masking utilizes the `location.state` API to store the desired runtime location inside of the location that will get written to the URL. It stores this runtime location under the `__tempLocation` state property:
 
diff --git a/docs/framework/react/guide/router-context.md b/docs/framework/react/guide/router-context.md
index 0d6d290d4..50cdaa9e3 100644
--- a/docs/framework/react/guide/router-context.md
+++ b/docs/framework/react/guide/router-context.md
@@ -46,7 +46,8 @@ const router = createRouter({
 
 The router context is passed to the router at instantiation time. You can pass the initial router context to the router via the `context` option:
 
-> 🧠 If your context has any required properties, you will see a TypeScript error if you don't pass them in the initial router context. If all of your context properties are optional, you will not see a TypeScript error and passing the context will be optional. If you don't pass a router context, it defaults to `{}`.
+> [!TIP]
+> If your context has any required properties, you will see a TypeScript error if you don't pass them in the initial router context. If all of your context properties are optional, you will not see a TypeScript error and passing the context will be optional. If you don't pass a router context, it defaults to `{}`.
 
 ```tsx
 import { createRouter } from '@tanstack/react-router'
diff --git a/docs/framework/react/guide/search-params.md b/docs/framework/react/guide/search-params.md
index 8708f6659..470bb8cc0 100644
--- a/docs/framework/react/guide/search-params.md
+++ b/docs/framework/react/guide/search-params.md
@@ -229,7 +229,8 @@ const ProductList = () => {
 }
 ```
 
-> 🧠 Quick tip: If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `Route` configuration to get access to the typed `useSearch()` hook.
+> [!TIP]
+> If your component is code-split, you can use the [getRouteApi function](../code-splitting#manually-accessing-route-apis-in-other-files-with-the-routeapi-class) to avoid having to import the `Route` configuration to get access to the typed `useSearch()` hook.
 
 ### Search Params outside of Route Components
 
diff --git a/docs/framework/react/guide/server-functions.md b/docs/framework/react/guide/server-functions.md
index c856680cf..d9286913d 100644
--- a/docs/framework/react/guide/server-functions.md
+++ b/docs/framework/react/guide/server-functions.md
@@ -9,7 +9,8 @@ This is where Server Functions come in.
 
 ## What are Server Functions?
 
-> 🧠 You can think of Server Functions like mini-portals that let your users trigger a pre-defined action on the server (like a built-in RPC solution 🤯).
+> [!TIP]
+> You can think of Server Functions like mini-portals that let your users trigger a pre-defined action on the server (like a built-in RPC solution 🤯).
 
 Server Functions are actions that can be executed on the server from the client or from other server functions.
 
diff --git a/docs/framework/react/migrate-from-react-location.md b/docs/framework/react/migrate-from-react-location.md
index fdee1bfb4..1990bac43 100644
--- a/docs/framework/react/migrate-from-react-location.md
+++ b/docs/framework/react/migrate-from-react-location.md
@@ -17,7 +17,8 @@ React Location and TanStack Router share much of same design decisions concepts,
 
 In this guide we'll go over the process of migrating the [React Location Basic example](https://github.com/TanStack/router/tree/react-location/examples/basic) over to TanStack Router using file-based routing, with the end goal of having the same functionality as the original example (styling and other non-routing related code will be omitted).
 
-> **Note:** To use a code-based approach for defining your routes, you can read the [code-based Routing](../guide/code-based-routing) guide.
+> [!TIP]
+> To use a code-based approach for defining your routes, you can read the [code-based Routing](../guide/code-based-routing) guide.
 
 ### Step 1: Swap over to TanStack Router's dependencies
 
diff --git a/docs/framework/react/quick-start.md b/docs/framework/react/quick-start.md
index 3a00f744e..5a44aadcb 100644
--- a/docs/framework/react/quick-start.md
+++ b/docs/framework/react/quick-start.md
@@ -32,7 +32,8 @@ export default defineConfig({
 })
 ```
 
-> 🧠 If you are not using Vite, or a bundler at all, you can check out the [File-Based Routing](../guide/file-based-routing) guide for more info.
+> [!TIP]
+> If you are not using Vite, or any supported bundler, you can check out the [File-Based Routing](../guide/file-based-routing) guide for more info.
 
 Create the following files:
 
@@ -140,7 +141,8 @@ If you are working with this pattern you should change the `id` of the root `<di
 
 ## Using Code-Based Route Configuration
 
-> ⚠️ **Note:** The following example shows how to configure routes using code, and for simplicity's sake is in a single file for this demo. While code-based generation allows you to declare many routes and even the router instance in a single file, we recommend splitting your routes into separate files for better organization and performance as your application grows.
+> [!IMPORTANT]
+> The following example shows how to configure routes using code, and for simplicity's sake is in a single file for this demo. While code-based generation allows you to declare many routes and even the router instance in a single file, we recommend splitting your routes into separate files for better organization and performance as your application grows.
 
 ```tsx
 import React, { StrictMode } from 'react'
diff --git a/examples/react/authenticated-routes/package.json b/examples/react/authenticated-routes/package.json
index a3486f516..bc4c75b7c 100644
--- a/examples/react/authenticated-routes/package.json
+++ b/examples/react/authenticated-routes/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/basic-default-search-params/package.json b/examples/react/basic-default-search-params/package.json
index 025c12f38..9d25aced4 100644
--- a/examples/react/basic-default-search-params/package.json
+++ b/examples/react/basic-default-search-params/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-file-based-codesplitting/package.json b/examples/react/basic-file-based-codesplitting/package.json
index ee4084319..bd24e0e6c 100644
--- a/examples/react/basic-file-based-codesplitting/package.json
+++ b/examples/react/basic-file-based-codesplitting/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/basic-file-based/package.json b/examples/react/basic-file-based/package.json
index fc99b8ad5..218fd8bc8 100644
--- a/examples/react/basic-file-based/package.json
+++ b/examples/react/basic-file-based/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/basic-react-query-file-based/package.json b/examples/react/basic-react-query-file-based/package.json
index 9fc4f7593..5b4c1792e 100644
--- a/examples/react/basic-react-query-file-based/package.json
+++ b/examples/react/basic-react-query-file-based/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
     "@tanstack/react-query-devtools": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/basic-react-query/package.json b/examples/react/basic-react-query/package.json
index bb950b112..5663a4e17 100644
--- a/examples/react/basic-react-query/package.json
+++ b/examples/react/basic-react-query/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
     "@tanstack/react-query-devtools": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/basic-ssr-file-based/package.json b/examples/react/basic-ssr-file-based/package.json
index 4be2eb341..8b42c3394 100644
--- a/examples/react/basic-ssr-file-based/package.json
+++ b/examples/react/basic-ssr-file-based/package.json
@@ -11,10 +11,10 @@
     "debug": "node --inspect-brk server"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "get-port": "^7.0.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic-ssr-streaming-file-based/package.json b/examples/react/basic-ssr-streaming-file-based/package.json
index aed22c695..3ee667adb 100644
--- a/examples/react/basic-ssr-streaming-file-based/package.json
+++ b/examples/react/basic-ssr-streaming-file-based/package.json
@@ -11,10 +11,10 @@
     "debug": "node --inspect-brk server"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "get-port": "^7.0.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 6932965f2..153a648c8 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/deferred-data/package.json b/examples/react/deferred-data/package.json
index e5f56a06b..49fae1ec9 100644
--- a/examples/react/deferred-data/package.json
+++ b/examples/react/deferred-data/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink-file-based/package.json b/examples/react/kitchen-sink-file-based/package.json
index d45bc06b0..5765a237d 100644
--- a/examples/react/kitchen-sink-file-based/package.json
+++ b/examples/react/kitchen-sink-file-based/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink-react-query-file-based/package.json b/examples/react/kitchen-sink-react-query-file-based/package.json
index d582f7733..96333aac4 100644
--- a/examples/react/kitchen-sink-react-query-file-based/package.json
+++ b/examples/react/kitchen-sink-react-query-file-based/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
     "@tanstack/react-query-devtools": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink-react-query/package.json b/examples/react/kitchen-sink-react-query/package.json
index 8704929d5..047b123bb 100644
--- a/examples/react/kitchen-sink-react-query/package.json
+++ b/examples/react/kitchen-sink-react-query/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
     "@tanstack/react-query-devtools": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json
index 00fbd1387..0a998c43f 100644
--- a/examples/react/kitchen-sink/package.json
+++ b/examples/react/kitchen-sink/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/large-file-based/package.json b/examples/react/large-file-based/package.json
index e6e919dd1..7a1df9648 100644
--- a/examples/react/large-file-based/package.json
+++ b/examples/react/large-file-based/package.json
@@ -12,8 +12,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/location-masking/package.json b/examples/react/location-masking/package.json
index d1bed16eb..3c63a96bf 100644
--- a/examples/react/location-masking/package.json
+++ b/examples/react/location-masking/package.json
@@ -11,8 +11,8 @@
   "dependencies": {
     "@radix-ui/react-dialog": "^1.0.5",
     "@tanstack/react-query": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/navigation-blocking/package.json b/examples/react/navigation-blocking/package.json
index 391024dad..8388244bd 100644
--- a/examples/react/navigation-blocking/package.json
+++ b/examples/react/navigation-blocking/package.json
@@ -10,8 +10,8 @@
   },
   "dependencies": {
     "@tanstack/react-query": "^5.17.8",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
diff --git a/examples/react/quickstart-file-based/package.json b/examples/react/quickstart-file-based/package.json
index f421aaaf8..859e220c4 100644
--- a/examples/react/quickstart-file-based/package.json
+++ b/examples/react/quickstart-file-based/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
     "immer": "^10.0.3",
     "react": "^18.2.0",
diff --git a/examples/react/quickstart-rspack-file-based/package.json b/examples/react/quickstart-rspack-file-based/package.json
index 458f68a6b..e7c4a929b 100644
--- a/examples/react/quickstart-rspack-file-based/package.json
+++ b/examples/react/quickstart-rspack-file-based/package.json
@@ -8,8 +8,8 @@
     "preview": "rsbuild preview"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
diff --git a/examples/react/quickstart-webpack-file-based/package.json b/examples/react/quickstart-webpack-file-based/package.json
index 71a365226..01e6bc3fa 100644
--- a/examples/react/quickstart-webpack-file-based/package.json
+++ b/examples/react/quickstart-webpack-file-based/package.json
@@ -7,8 +7,8 @@
     "build": "webpack build"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1"
   },
diff --git a/examples/react/quickstart/package.json b/examples/react/quickstart/package.json
index 91bdbc9a7..8eb7efea0 100644
--- a/examples/react/quickstart/package.json
+++ b/examples/react/quickstart/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },
diff --git a/examples/react/scroll-restoration/package.json b/examples/react/scroll-restoration/package.json
index c33f72523..ba507c139 100644
--- a/examples/react/scroll-restoration/package.json
+++ b/examples/react/scroll-restoration/package.json
@@ -9,9 +9,9 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
     "@tanstack/react-virtual": "^3.0.1",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/router-devtools": "^1.44.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0"
   },
diff --git a/examples/react/start-basic-counter/package.json b/examples/react/start-basic-counter/package.json
index aab5e50b1..9980e3ba8 100644
--- a/examples/react/start-basic-counter/package.json
+++ b/examples/react/start-basic-counter/package.json
@@ -12,8 +12,8 @@
     "format": "prettier --write '**/*' --ignore-unknown"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/start": "^1.44.0",
     "@typescript-eslint/parser": "^7.2.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
@@ -26,7 +26,7 @@
     "eslint": "^8.57.0",
     "eslint-config-react-app": "^7.0.1",
     "eslint-plugin-unicorn": "^49.0.0",
-    "prettier": "^2.8.8",
+    "prettier": "^3.3.2",
     "typescript": "^5.5.3",
     "vite": "^5.1.4"
   }
diff --git a/examples/react/start-basic-react-query/package.json b/examples/react/start-basic-react-query/package.json
index 32aaf6455..87f37fe72 100644
--- a/examples/react/start-basic-react-query/package.json
+++ b/examples/react/start-basic-react-query/package.json
@@ -16,11 +16,11 @@
   "dependencies": {
     "@tanstack/react-query": "^5.49.2",
     "@tanstack/react-query-devtools": "^5.48.0",
-    "@tanstack/react-router": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
     "@tanstack/react-router-with-query": "^1.43.2",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "@typescript-eslint/parser": "^7.2.0",
     "@vitejs/plugin-react": "^4",
     "dotenv": "^16.4.5",
@@ -44,7 +44,7 @@
     "eslint-plugin-unicorn": "^49.0.0",
     "npm-run-all": "^4.1.5",
     "postcss": "^8.4.35",
-    "prettier": "^2.8.8",
+    "prettier": "^3.3.2",
     "tailwindcss": "^3.4.1",
     "typescript": "^5.5.3",
     "vite": "^5.1.4",
diff --git a/examples/react/start-basic-rsc/package.json b/examples/react/start-basic-rsc/package.json
index 2a99b128a..a94add109 100644
--- a/examples/react/start-basic-rsc/package.json
+++ b/examples/react/start-basic-rsc/package.json
@@ -13,10 +13,10 @@
   },
   "dependencies": {
     "@babel/plugin-syntax-typescript": "^7.24.1",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "redaxios": "^0.5.0",
     "tailwind-merge": "^1.14.0",
     "vinxi": "^0.3.11"
@@ -31,7 +31,7 @@
     "eslint-plugin-unicorn": "^49.0.0",
     "npm-run-all": "^4.1.5",
     "postcss": "^8.4.35",
-    "prettier": "^2.8.8",
+    "prettier": "^3.3.2",
     "tailwindcss": "^3.4.1",
     "typescript": "^5.5.3",
     "vite": "^5.1.4",
diff --git a/examples/react/start-basic/package.json b/examples/react/start-basic/package.json
index 3738472cc..95efa7c40 100644
--- a/examples/react/start-basic/package.json
+++ b/examples/react/start-basic/package.json
@@ -14,10 +14,10 @@
     "test:e2e:replay": "playwright test --project=replay-chromium"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "@typescript-eslint/parser": "^7.2.0",
     "@vitejs/plugin-react": "^4",
     "dotenv": "^16.4.5",
@@ -41,7 +41,7 @@
     "eslint-plugin-unicorn": "^49.0.0",
     "npm-run-all": "^4.1.5",
     "postcss": "^8.4.35",
-    "prettier": "^2.8.8",
+    "prettier": "^3.3.2",
     "tailwindcss": "^3.4.1",
     "typescript": "^5.5.3",
     "vite": "^5.1.4",
diff --git a/examples/react/start-trellaux/package.json b/examples/react/start-trellaux/package.json
index cfcc6ac1d..a9be57dfe 100644
--- a/examples/react/start-trellaux/package.json
+++ b/examples/react/start-trellaux/package.json
@@ -14,11 +14,11 @@
   "dependencies": {
     "@tanstack/react-query": "^5.49.2",
     "@tanstack/react-query-devtools": "^5.49.2",
-    "@tanstack/react-router": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
     "@tanstack/react-router-with-query": "^1.43.2",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/router-devtools": "^1.44.0",
     "@tanstack/router-plugin": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
+    "@tanstack/start": "^1.44.0",
     "@typescript-eslint/parser": "^7.2.0",
     "@vitejs/plugin-react": "^4",
     "isbot": "^3.7.0",
@@ -43,7 +43,7 @@
     "eslint-plugin-unicorn": "^49.0.0",
     "npm-run-all": "^4.1.5",
     "postcss": "^8.4.35",
-    "prettier": "^2.8.8",
+    "prettier": "^3.3.2",
     "tailwindcss": "^3.4.1",
     "typescript": "^5.5.3",
     "vite": "^5.1.4",
diff --git a/examples/react/wip-trpc-react-query/package.json b/examples/react/wip-trpc-react-query/package.json
index 996ef386c..b7b3088ae 100644
--- a/examples/react/wip-trpc-react-query/package.json
+++ b/examples/react/wip-trpc-react-query/package.json
@@ -13,8 +13,8 @@
   "dependencies": {
     "@tanstack/react-query": "^4.36.1",
     "@tanstack/react-query-devtools": "^4.36.1",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@trpc/client": "^10.45.0",
     "@trpc/react-query": "^10.45.0",
     "@trpc/server": "^10.45.0",
diff --git a/examples/react/wip-waku-rsc/package.json b/examples/react/wip-waku-rsc/package.json
index 37b0e8387..6c877fdd3 100644
--- a/examples/react/wip-waku-rsc/package.json
+++ b/examples/react/wip-waku-rsc/package.json
@@ -9,8 +9,8 @@
   },
   "dependencies": {
     "@hono/node-server": "^1.4.1",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "hono": "^3.12.0",
     "react": "18.3.0-canary-0cdfef19b-20231211",
     "react-dom": "18.3.0-canary-0cdfef19b-20231211",
diff --git a/examples/react/wip-with-bling/package.json b/examples/react/wip-with-bling/package.json
index b41012041..d261b1a91 100644
--- a/examples/react/wip-with-bling/package.json
+++ b/examples/react/wip-with-bling/package.json
@@ -12,10 +12,10 @@
   },
   "dependencies": {
     "@tanstack/bling": "^0.5.0",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/start": "^1.43.13",
-    "@tanstack/react-store": "^0.2.1",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/start": "^1.44.0",
+    "@tanstack/react-store": "^0.5.4",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "fastify": "^4.25.2",
     "get-port": "^7.0.0",
diff --git a/examples/react/wip-with-framer-motion/package.json b/examples/react/wip-with-framer-motion/package.json
index 7a1e50ca2..28169987a 100644
--- a/examples/react/wip-with-framer-motion/package.json
+++ b/examples/react/wip-with-framer-motion/package.json
@@ -9,8 +9,8 @@
     "start": "vite"
   },
   "dependencies": {
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "redaxios": "^0.5.0",
     "framer-motion": "^10.17.9",
     "immer": "^10.0.3",
diff --git a/examples/react/with-trpc/package.json b/examples/react/with-trpc/package.json
index 25f70aaa9..35de1a15f 100644
--- a/examples/react/with-trpc/package.json
+++ b/examples/react/with-trpc/package.json
@@ -13,8 +13,8 @@
   "dependencies": {
     "@tanstack/react-query": "^4.36.1",
     "@tanstack/react-query-devtools": "^4.36.1",
-    "@tanstack/react-router": "^1.43.13",
-    "@tanstack/router-devtools": "^1.43.13",
+    "@tanstack/react-router": "^1.44.0",
+    "@tanstack/router-devtools": "^1.44.0",
     "@trpc/client": "^10.45.0",
     "@trpc/react-query": "^10.45.0",
     "@trpc/server": "^10.45.0",
diff --git a/nx.json b/nx.json
index 88c1bacc6..2ef254d8c 100644
--- a/nx.json
+++ b/nx.json
@@ -7,7 +7,6 @@
   "namedInputs": {
     "sharedGlobals": [
       "{workspaceRoot}/.nvmrc",
-      "{workspaceRoot}/eslint.config.js",
       "{workspaceRoot}/package.json",
       "{workspaceRoot}/tsconfig.json"
     ],
@@ -16,44 +15,43 @@
       "{projectRoot}/**/*",
       "!{projectRoot}/**/*.md"
     ],
-    "public": [
+    "production": [
       "default",
-      "{projectRoot}/build",
-      "{projectRoot}/dist",
+      "!{projectRoot}/tests/**/*",
       "!{projectRoot}/eslint.config.js"
     ]
   },
   "targetDefaults": {
-    "test:unit": {
-      "dependsOn": ["^build"],
-      "inputs": ["default", "^public"],
-      "outputs": ["{projectRoot}/coverage"],
-      "cache": true
+    "test:format": {
+      "cache": true,
+      "inputs": ["{workspaceRoot}/**/*"]
     },
     "test:eslint": {
+      "cache": true,
       "dependsOn": ["^build"],
-      "inputs": ["default", "^public"],
-      "cache": true
+      "inputs": ["default", "^production", "{workspaceRoot}/eslint.config.js"]
     },
-    "test:types": {
+    "test:unit": {
+      "cache": true,
       "dependsOn": ["^build"],
-      "inputs": ["default", "^public"],
-      "cache": true
+      "inputs": ["default", "^production"],
+      "outputs": ["{projectRoot}/coverage"]
     },
-    "test:build": {
-      "dependsOn": ["build"],
-      "inputs": ["default", "^public"],
-      "cache": true
+    "test:types": {
+      "cache": true,
+      "dependsOn": ["^build"],
+      "inputs": ["default", "^production"]
     },
     "build": {
+      "cache": true,
       "dependsOn": ["^build"],
-      "inputs": ["default", "^public"],
-      "outputs": ["{projectRoot}/build", "{projectRoot}/dist"],
-      "cache": true
+      "inputs": ["production", "^production"],
+      "outputs": ["{projectRoot}/build", "{projectRoot}/dist"]
     },
-    "test:format": {
+    "test:build": {
       "cache": true,
-      "inputs": ["{workspaceRoot}/**/*"]
+      "dependsOn": ["build"],
+      "inputs": ["production"]
     }
   }
 }
diff --git a/package.json b/package.json
index 3fe47678a..a100b91c1 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
   "devDependencies": {
     "@eslint-react/eslint-plugin": "^1.5.16",
     "@rollup/plugin-replace": "^5.0.7",
-    "@tanstack/config": "^0.9.0",
+    "@tanstack/config": "^0.9.2",
     "@types/node": "^20.14.7",
     "@types/react": "^18.3.3",
     "@types/react-dom": "^18.3.0",
diff --git a/packages/history/package.json b/packages/history/package.json
index 182929325..32b613bfc 100644
--- a/packages/history/package.json
+++ b/packages/history/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/history",
-  "version": "1.43.13",
+  "version": "1.43.14",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
@@ -29,6 +29,8 @@
     "test:types:ts54": "node ../../node_modules/typescript54/lib/tsc.js",
     "test:types:ts55": "tsc",
     "test:build": "publint --strict",
+    "test:unit": "vitest",
+    "test:unit:dev": "pnpm run test:unit --watch",
     "build": "vite build"
   },
   "type": "module",
diff --git a/packages/history/src/index.ts b/packages/history/src/index.ts
index 15d477117..b91c680a0 100644
--- a/packages/history/src/index.ts
+++ b/packages/history/src/index.ts
@@ -359,6 +359,11 @@ export function createMemoryHistory(
 
     pushState: (path, state) => {
       currentState = state
+      entries.splice
+      // Removes all subsequent entries after the current index to start a new branch
+      if (index < entries.length - 1) {
+        entries.splice(index + 1)
+      }
       entries.push(path)
       index = Math.max(entries.length - 1, 0)
     },
@@ -368,7 +373,7 @@ export function createMemoryHistory(
     },
     back: () => {
       currentState = assignKey(currentState)
-      index--
+      index = Math.max(index - 1, 0)
     },
     forward: () => {
       currentState = assignKey(currentState)
diff --git a/packages/history/vite.config.ts b/packages/history/vite.config.ts
index f64d6aa39..5edc0264c 100644
--- a/packages/history/vite.config.ts
+++ b/packages/history/vite.config.ts
@@ -1,7 +1,16 @@
 import { defineConfig, mergeConfig } from 'vitest/config'
 import { tanstackViteConfig } from '@tanstack/config/vite'
+import packageJson from './package.json'
 
-const config = defineConfig({})
+const config = defineConfig({
+  test: {
+    name: packageJson.name,
+    dir: './tests',
+    watch: false,
+    environment: 'jsdom',
+    typecheck: { enabled: true },
+  },
+})
 
 export default mergeConfig(
   config,
diff --git a/packages/react-router/package.json b/packages/react-router/package.json
index 6c6e78721..a4d25713b 100644
--- a/packages/react-router/package.json
+++ b/packages/react-router/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/react-router",
-  "version": "1.43.13",
+  "version": "1.44.0",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
@@ -65,7 +65,7 @@
   },
   "dependencies": {
     "@tanstack/history": "workspace:*",
-    "@tanstack/react-store": "^0.2.1",
+    "@tanstack/react-store": "^0.5.4",
     "tiny-invariant": "^1.3.1",
     "tiny-warning": "^1.0.3"
   },
diff --git a/packages/react-router/src/route.ts b/packages/react-router/src/route.ts
index ea6eb8bc0..28ee07d26 100644
--- a/packages/react-router/src/route.ts
+++ b/packages/react-router/src/route.ts
@@ -254,6 +254,7 @@ export type UpdatableRouteOptions<
   onLeave?: (match: TRouteMatch) => void
   meta?: (ctx: {
     matches: Array<TRouteMatch>
+    match: TRouteMatch
     params: TAllParams
     loaderData: TLoaderData
   }) => Array<React.JSX.IntrinsicElements['meta']>
diff --git a/packages/react-router/src/router.ts b/packages/react-router/src/router.ts
index 203c7d926..65bf0528c 100644
--- a/packages/react-router/src/router.ts
+++ b/packages/react-router/src/router.ts
@@ -1104,6 +1104,7 @@ export class Router<
       if (match.status === 'success') {
         match.meta = route.options.meta?.({
           matches,
+          match,
           params: match.params,
           loaderData: match.loaderData,
         })
@@ -2009,6 +2010,7 @@ export class Router<
 
                     const meta = route.options.meta?.({
                       matches,
+                      match,
                       params: match.params,
                       loaderData,
                     })
diff --git a/packages/router-devtools/package.json b/packages/router-devtools/package.json
index d3743e9be..3e7f71c16 100644
--- a/packages/router-devtools/package.json
+++ b/packages/router-devtools/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/router-devtools",
-  "version": "1.43.13",
+  "version": "1.44.0",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/start/package.json b/packages/start/package.json
index d077f26bc..1a7c64d3c 100644
--- a/packages/start/package.json
+++ b/packages/start/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@tanstack/start",
-  "version": "1.43.13",
+  "version": "1.44.0",
   "description": "Modern and scalable routing for React applications",
   "author": "Tanner Linsley",
   "license": "MIT",
diff --git a/packages/start/src/client/serialization.tsx b/packages/start/src/client/serialization.tsx
index ffb5f470d..29067c03b 100644
--- a/packages/start/src/client/serialization.tsx
+++ b/packages/start/src/client/serialization.tsx
@@ -104,6 +104,7 @@ export function afterHydrate({ router }: { router: AnyRouter }) {
     Object.assign(match, {
       meta: route.options.meta?.({
         matches: router.state.matches,
+        match,
         params: match.params,
         loaderData: match.loaderData,
       }),
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d858487d9..1be56b726 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,8 +32,8 @@ importers:
         specifier: ^5.0.7
         version: 5.0.7(rollup@4.18.0)
       '@tanstack/config':
-        specifier: ^0.9.0
-        version: 0.9.0(@types/node@20.14.9)(esbuild@0.21.4)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
+        specifier: ^0.9.2
+        version: 0.9.2(@types/node@20.14.9)(esbuild@0.21.4)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
       '@types/node':
         specifier: ^20.14.7
         version: 20.14.9
@@ -1015,7 +1015,7 @@ importers:
         version: link:../../../packages/start
       '@typescript-eslint/parser':
         specifier: ^7.2.0
-        version: 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+        version: 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       '@vitejs/plugin-react':
         specifier: ^4
         version: 4.2.1(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
@@ -1075,8 +1075,8 @@ importers:
         specifier: ^8.4.35
         version: 8.4.38
       prettier:
-        specifier: ^2.8.8
-        version: 2.8.8
+        specifier: ^3.3.2
+        version: 3.3.2
       tailwindcss:
         specifier: ^3.4.1
         version: 3.4.3
@@ -1100,7 +1100,7 @@ importers:
         version: link:../../../packages/start
       '@typescript-eslint/parser':
         specifier: ^7.2.0
-        version: 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+        version: 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       react:
         specifier: ^18.3.1
         version: 18.3.1
@@ -1130,8 +1130,8 @@ importers:
         specifier: ^49.0.0
         version: 49.0.0(eslint@8.57.0)
       prettier:
-        specifier: ^2.8.8
-        version: 2.8.8
+        specifier: ^3.3.2
+        version: 3.3.2
       typescript:
         specifier: ^5.5.3
         version: 5.5.3
@@ -1164,7 +1164,7 @@ importers:
         version: link:../../../packages/start
       '@typescript-eslint/parser':
         specifier: ^7.2.0
-        version: 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+        version: 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       '@vitejs/plugin-react':
         specifier: ^4
         version: 4.2.1(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
@@ -1224,8 +1224,8 @@ importers:
         specifier: ^8.4.35
         version: 8.4.38
       prettier:
-        specifier: ^2.8.8
-        version: 2.8.8
+        specifier: ^3.3.2
+        version: 3.3.2
       tailwindcss:
         specifier: ^3.4.1
         version: 3.4.3
@@ -1294,8 +1294,8 @@ importers:
         specifier: ^8.4.35
         version: 8.4.38
       prettier:
-        specifier: ^2.8.8
-        version: 2.8.8
+        specifier: ^3.3.2
+        version: 3.3.2
       tailwindcss:
         specifier: ^3.4.1
         version: 3.4.3
@@ -1334,7 +1334,7 @@ importers:
         version: link:../../../packages/start
       '@typescript-eslint/parser':
         specifier: ^7.2.0
-        version: 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+        version: 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       '@vitejs/plugin-react':
         specifier: ^4
         version: 4.2.1(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
@@ -1397,8 +1397,8 @@ importers:
         specifier: ^8.4.35
         version: 8.4.38
       prettier:
-        specifier: ^2.8.8
-        version: 2.8.8
+        specifier: ^3.3.2
+        version: 3.3.2
       tailwindcss:
         specifier: ^3.4.1
         version: 3.4.3
@@ -1531,8 +1531,8 @@ importers:
         specifier: workspace:*
         version: link:../../../packages/react-router
       '@tanstack/react-store':
-        specifier: ^0.2.1
-        version: 0.2.1(react-dom@18.3.0-canary-ab31a9ed2-20230824(react@18.3.0-canary-ab31a9ed2-20230824))(react@18.3.0-canary-ab31a9ed2-20230824)
+        specifier: ^0.5.4
+        version: 0.5.4(react-dom@18.3.0-canary-ab31a9ed2-20230824(react@18.3.0-canary-ab31a9ed2-20230824))(react@18.3.0-canary-ab31a9ed2-20230824)
       '@tanstack/router-devtools':
         specifier: workspace:*
         version: link:../../../packages/router-devtools
@@ -1728,8 +1728,8 @@ importers:
         specifier: workspace:*
         version: link:../history
       '@tanstack/react-store':
-        specifier: ^0.2.1
-        version: 0.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+        specifier: ^0.5.4
+        version: 0.5.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       tiny-invariant:
         specifier: ^1.3.1
         version: 1.3.1
@@ -3488,8 +3488,8 @@ packages:
     peerDependencies:
       eslint: ^8.57.0
 
-  '@eslint-community/regexpp@4.10.0':
-    resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+  '@eslint-community/regexpp@4.11.0':
+    resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
     engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
 
   '@eslint-react/ast@1.5.17':
@@ -3527,10 +3527,6 @@ packages:
     resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  '@eslint/eslintrc@3.1.0':
-    resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
-    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
   '@eslint/js@8.57.0':
     resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4599,8 +4595,8 @@ packages:
   '@tanstack/bling@0.5.0':
     resolution: {integrity: sha512-IPSFm7jtZiJcQsNuFFrZ15V10gp/CYbqnTyAEMaTFNV97SqnB2hbM8tildppVeM7BHu7pIp7+nsbYPCGjeG7FA==}
 
-  '@tanstack/config@0.9.0':
-    resolution: {integrity: sha512-SeJjYW2RMaO+U51aNu3p92GHzs4yZPeKT9F4R32U7PgDFRGMLUpFh5oiYwtr5RuEddn0Vk9jwcfhnCuCHUgSuQ==}
+  '@tanstack/config@0.9.2':
+    resolution: {integrity: sha512-PRJbTH3fy2I5PumwS50FsTMieqmz1DDG+MKAU9FZxiIbZXtLSnR40YCfGYbngSZlI06y5BCyApqqG2FQRXDwsw==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -4647,11 +4643,11 @@ packages:
     peerDependencies:
       react: ^18.0.0
 
-  '@tanstack/react-store@0.2.1':
-    resolution: {integrity: sha512-tEbMCQjbeVw9KOP/202LfqZMSNAVi6zYkkp1kBom8nFuMx/965Hzes3+6G6b/comCwVxoJU8Gg9IrcF8yRPthw==}
+  '@tanstack/react-store@0.5.4':
+    resolution: {integrity: sha512-N4fhM+2knUN7t7kIa7lP4Df9vN/DxD8qfmsFgGKis0J/OoeQaEdG6fINjrMME2hOXszObZLXIxBcOvIIcOhGMw==}
     peerDependencies:
-      react: '>=16'
-      react-dom: '>=16'
+      react: ^17.0.0 || ^18.0.0
+      react-dom: ^17.0.0 || ^18.0.0
 
   '@tanstack/react-virtual@3.0.1':
     resolution: {integrity: sha512-IFOFuRUTaiM/yibty9qQ9BfycQnYXIDHGP2+cU+0LrFFGNhVxCXSQnaY6wkX8uJVteFEBjUondX0Hmpp7TNcag==}
@@ -4659,8 +4655,8 @@ packages:
       react: ^16.8.0 || ^17.0.0 || ^18.0.0
       react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
 
-  '@tanstack/store@0.1.3':
-    resolution: {integrity: sha512-GnolmC8Fr4mvsHE1fGQmR3Nm0eBO3KnZjDU0a+P3TeQNM/dDscFGxtA7p31NplQNW3KwBw4t1RVFmz0VeKLxcw==}
+  '@tanstack/store@0.5.4':
+    resolution: {integrity: sha512-EG/aGAK/yUJz0JxPaY9wOr1Sjz9Uc//BX7uY9SAo5M0GkCEz7DOSxixBq2afn/reLMGqTIGYq7TkMGgyNQgdcA==}
 
   '@tanstack/virtual-core@3.0.0':
     resolution: {integrity: sha512-SYXOBTjJb05rXa2vl55TTwO40A6wKu0R5i1qQwhJYNDIqaIGF7D0HsLw+pJAyi2OvntlEIVusx3xtbbgSUi6zg==}
@@ -4875,8 +4871,8 @@ packages:
       typescript:
         optional: true
 
-  '@typescript-eslint/eslint-plugin@7.14.1':
-    resolution: {integrity: sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==}
+  '@typescript-eslint/eslint-plugin@7.16.0':
+    resolution: {integrity: sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       '@typescript-eslint/parser': ^7.0.0
@@ -4902,8 +4898,8 @@ packages:
       typescript:
         optional: true
 
-  '@typescript-eslint/parser@7.14.1':
-    resolution: {integrity: sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==}
+  '@typescript-eslint/parser@7.16.0':
+    resolution: {integrity: sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       eslint: ^8.57.0
@@ -4916,8 +4912,8 @@ packages:
     resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  '@typescript-eslint/scope-manager@7.14.1':
-    resolution: {integrity: sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==}
+  '@typescript-eslint/scope-manager@7.16.0':
+    resolution: {integrity: sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==}
     engines: {node: ^18.18.0 || >=20.0.0}
 
   '@typescript-eslint/type-utils@5.62.0':
@@ -4930,8 +4926,8 @@ packages:
       typescript:
         optional: true
 
-  '@typescript-eslint/type-utils@7.14.1':
-    resolution: {integrity: sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==}
+  '@typescript-eslint/type-utils@7.16.0':
+    resolution: {integrity: sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       eslint: ^8.57.0
@@ -4944,8 +4940,8 @@ packages:
     resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  '@typescript-eslint/types@7.14.1':
-    resolution: {integrity: sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==}
+  '@typescript-eslint/types@7.16.0':
+    resolution: {integrity: sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==}
     engines: {node: ^18.18.0 || >=20.0.0}
 
   '@typescript-eslint/typescript-estree@5.62.0':
@@ -4957,8 +4953,8 @@ packages:
       typescript:
         optional: true
 
-  '@typescript-eslint/typescript-estree@7.14.1':
-    resolution: {integrity: sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==}
+  '@typescript-eslint/typescript-estree@7.16.0':
+    resolution: {integrity: sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       typescript: '*'
@@ -4972,8 +4968,8 @@ packages:
     peerDependencies:
       eslint: ^8.57.0
 
-  '@typescript-eslint/utils@7.14.1':
-    resolution: {integrity: sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==}
+  '@typescript-eslint/utils@7.16.0':
+    resolution: {integrity: sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       eslint: ^8.57.0
@@ -4982,8 +4978,8 @@ packages:
     resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  '@typescript-eslint/visitor-keys@7.14.1':
-    resolution: {integrity: sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==}
+  '@typescript-eslint/visitor-keys@7.16.0':
+    resolution: {integrity: sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==}
     engines: {node: ^18.18.0 || >=20.0.0}
 
   '@ungap/structured-clone@1.2.0':
@@ -5628,10 +5624,6 @@ packages:
     resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
     engines: {node: '>=8'}
 
-  ci-info@4.0.0:
-    resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
-    engines: {node: '>=8'}
-
   citty@0.1.6:
     resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
 
@@ -6292,9 +6284,9 @@ packages:
     resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
     engines: {node: '>=12'}
 
-  eslint-config-prettier@9.1.0:
-    resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
-    hasBin: true
+  eslint-compat-utils@0.5.1:
+    resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
+    engines: {node: '>=12'}
     peerDependencies:
       eslint: ^8.57.0
 
@@ -6332,6 +6324,12 @@ packages:
       eslint-import-resolver-webpack:
         optional: true
 
+  eslint-plugin-es-x@7.8.0:
+    resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==}
+    engines: {node: ^14.18.0 || >=16.0.0}
+    peerDependencies:
+      eslint: ^8.57.0
+
   eslint-plugin-flowtype@8.0.3:
     resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==}
     engines: {node: '>=12.0.0'}
@@ -6340,8 +6338,8 @@ packages:
       '@babel/plugin-transform-react-jsx': ^7.14.9
       eslint: ^8.57.0
 
-  eslint-plugin-import-x@0.5.2:
-    resolution: {integrity: sha512-6f1YMmg3PdLwfiJDYnCRPfh67zJKbwbOKL99l6xGZDmIFkMht/4xyudafGEcDOmDlgp36e41W4RXDfOn7+pGRg==}
+  eslint-plugin-import-x@0.5.3:
+    resolution: {integrity: sha512-hJ/wkMcsLQXAZL3+txXIDpbW5cqwdm1rLTqV4VRY03aIbzE3zWE7rPZKW6Gzf7xyl1u3V1iYC6tOG77d9NF4GQ==}
     engines: {node: '>=16'}
     peerDependencies:
       eslint: ^8.57.0
@@ -6375,6 +6373,12 @@ packages:
     peerDependencies:
       eslint: ^8.57.0
 
+  eslint-plugin-n@17.9.0:
+    resolution: {integrity: sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==}
+    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+    peerDependencies:
+      eslint: ^8.57.0
+
   eslint-plugin-react-dom@1.5.17:
     resolution: {integrity: sha512-ZAPS6+yCrTeoF7o+M87ayd5x8CVVdD+DhEYXTfObmsyHRT1Uu+LyT8rB/s666Syn4sKj0aZFaT13RsGbsl9MhQ==}
     engines: {bun: '>=1.0.15', node: '>=18.18.0'}
@@ -6439,12 +6443,6 @@ packages:
     peerDependencies:
       eslint: ^8.57.0
 
-  eslint-plugin-unicorn@54.0.0:
-    resolution: {integrity: sha512-XxYLRiYtAWiAjPv6z4JREby1TAE2byBC7wlh0V4vWDCpccOSU1KovWV//jqPXF6bq3WKxqX9rdjoRQ1EhdmNdQ==}
-    engines: {node: '>=18.18'}
-    peerDependencies:
-      eslint: ^8.57.0
-
   eslint-scope@5.1.1:
     resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
     engines: {node: '>=8.0.0'}
@@ -6461,19 +6459,11 @@ packages:
     resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
-  eslint-visitor-keys@4.0.0:
-    resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
-    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
   eslint@8.57.0:
     resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
     hasBin: true
 
-  espree@10.1.0:
-    resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==}
-    engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
   espree@9.6.1:
     resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
     engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -6853,12 +6843,8 @@ packages:
     resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
     engines: {node: '>=8'}
 
-  globals@14.0.0:
-    resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
-    engines: {node: '>=18'}
-
-  globals@15.6.0:
-    resolution: {integrity: sha512-UzcJi88Hw//CurUIRa9Jxb0vgOCcuD/MNjwmXp633cyaRKkCWACkoqHCtfZv43b1kqXGg/fpOa8bwgacCeXsVg==}
+  globals@15.8.0:
+    resolution: {integrity: sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==}
     engines: {node: '>=18'}
 
   globalthis@1.0.4:
@@ -8364,11 +8350,6 @@ packages:
     resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
     engines: {node: '>= 0.8.0'}
 
-  prettier@2.8.8:
-    resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
-    engines: {node: '>=10.13.0'}
-    hasBin: true
-
   prettier@3.3.2:
     resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
     engines: {node: '>=14'}
@@ -9014,6 +8995,9 @@ packages:
   sprintf-js@1.0.3:
     resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
 
+  stable-hash@0.0.4:
+    resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==}
+
   stack-trace@0.0.10:
     resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
 
@@ -9423,8 +9407,8 @@ packages:
     resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
     engines: {node: '>= 0.4'}
 
-  typescript-eslint@7.14.1:
-    resolution: {integrity: sha512-Eo1X+Y0JgGPspcANKjeR6nIqXl4VL5ldXLc15k4m9upq+eY5fhU2IueiEZL6jmHrKH8aCfbIvM/v3IrX5Hg99w==}
+  typescript-eslint@7.16.0:
+    resolution: {integrity: sha512-kaVRivQjOzuoCXU6+hLnjo3/baxyzWVO5GrnExkFzETRYJKVHYkrJglOu2OCm8Hi9RPDWX1PTNNTpU5KRV0+RA==}
     engines: {node: ^18.18.0 || >=20.0.0}
     peerDependencies:
       eslint: ^8.57.0
@@ -11408,16 +11392,16 @@ snapshots:
       eslint: 8.57.0
       eslint-visitor-keys: 3.4.3
 
-  '@eslint-community/regexpp@4.10.0': {}
+  '@eslint-community/regexpp@4.11.0': {}
 
   '@eslint-react/ast@1.5.17(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
       '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       string-ts: 2.2.0
       ts-pattern: 5.2.0
@@ -11434,10 +11418,10 @@ snapshots:
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/var': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       short-unique-id: 5.2.0
       ts-pattern: 5.2.0
@@ -11452,10 +11436,10 @@ snapshots:
       '@eslint-react/shared': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       eslint: 8.57.0
       eslint-plugin-react-dom: 1.5.17(eslint@8.57.0)(typescript@5.5.3)
@@ -11474,9 +11458,9 @@ snapshots:
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/var': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       micro-memoize: 4.1.2
       ts-pattern: 5.2.0
@@ -11487,7 +11471,7 @@ snapshots:
 
   '@eslint-react/shared@1.5.17(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       deepmerge-ts: 7.0.3
       valibot: 0.35.0
     transitivePeerDependencies:
@@ -11500,8 +11484,8 @@ snapshots:
   '@eslint-react/types@1.5.17(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
       '@eslint-react/tools': 1.5.17
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
     transitivePeerDependencies:
       - eslint
       - supports-color
@@ -11512,9 +11496,9 @@ snapshots:
       '@eslint-react/ast': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       string-ts: 2.2.0
       valibot: 0.35.0
@@ -11537,20 +11521,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@eslint/eslintrc@3.1.0':
-    dependencies:
-      ajv: 6.12.6
-      debug: 4.3.5
-      espree: 10.1.0
-      globals: 14.0.0
-      ignore: 5.3.1
-      import-fresh: 3.3.0
-      js-yaml: 4.1.0
-      minimatch: 3.1.2
-      strip-json-comments: 3.1.1
-    transitivePeerDependencies:
-      - supports-color
-
   '@eslint/js@8.57.0': {}
 
   '@fastify/ajv-compiler@3.5.0':
@@ -12581,17 +12551,16 @@ snapshots:
       - supports-color
       - vite
 
-  '@tanstack/config@0.9.0(@types/node@20.14.9)(esbuild@0.21.4)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))':
+  '@tanstack/config@0.9.2(@types/node@20.14.9)(esbuild@0.21.4)(eslint@8.57.0)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))':
     dependencies:
       '@commitlint/parse': 19.0.3
       '@eslint/js': 8.57.0
       commander: 12.1.0
       current-git-branch: 1.1.0
       esbuild-register: 3.5.0(esbuild@0.21.4)
-      eslint-config-prettier: 9.1.0(eslint@8.57.0)
-      eslint-plugin-import-x: 0.5.2(eslint@8.57.0)(typescript@5.5.3)
-      eslint-plugin-unicorn: 54.0.0(eslint@8.57.0)
-      globals: 15.6.0
+      eslint-plugin-import-x: 0.5.3(eslint@8.57.0)(typescript@5.5.3)
+      eslint-plugin-n: 17.9.0(eslint@8.57.0)
+      globals: 15.8.0
       interpret: 3.1.1
       jsonfile: 6.1.0
       liftoff: 5.0.0
@@ -12599,7 +12568,7 @@ snapshots:
       rollup-plugin-preserve-directives: 0.4.0(rollup@4.18.0)
       semver: 7.6.2
       simple-git: 3.25.0
-      typescript-eslint: 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      typescript-eslint: 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       v8flags: 4.0.1
       vite-plugin-dts: 3.9.1(@types/node@20.14.9)(rollup@4.18.0)(typescript@5.5.3)(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
       vite-plugin-externalize-deps: 0.8.0(vite@5.3.2(@types/node@20.14.9)(terser@5.31.1))
@@ -12651,16 +12620,16 @@ snapshots:
       '@tanstack/query-core': 5.49.1
       react: 18.3.1
 
-  '@tanstack/react-store@0.2.1(react-dom@18.3.0-canary-ab31a9ed2-20230824(react@18.3.0-canary-ab31a9ed2-20230824))(react@18.3.0-canary-ab31a9ed2-20230824)':
+  '@tanstack/react-store@0.5.4(react-dom@18.3.0-canary-ab31a9ed2-20230824(react@18.3.0-canary-ab31a9ed2-20230824))(react@18.3.0-canary-ab31a9ed2-20230824)':
     dependencies:
-      '@tanstack/store': 0.1.3
+      '@tanstack/store': 0.5.4
       react: 18.3.0-canary-ab31a9ed2-20230824
       react-dom: 18.3.0-canary-ab31a9ed2-20230824(react@18.3.0-canary-ab31a9ed2-20230824)
       use-sync-external-store: 1.2.0(react@18.3.0-canary-ab31a9ed2-20230824)
 
-  '@tanstack/react-store@0.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+  '@tanstack/react-store@0.5.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@tanstack/store': 0.1.3
+      '@tanstack/store': 0.5.4
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
       use-sync-external-store: 1.2.0(react@18.3.1)
@@ -12671,7 +12640,7 @@ snapshots:
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
 
-  '@tanstack/store@0.1.3': {}
+  '@tanstack/store@0.5.4': {}
 
   '@tanstack/virtual-core@3.0.0': {}
 
@@ -12894,7 +12863,7 @@ snapshots:
 
   '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
-      '@eslint-community/regexpp': 4.10.0
+      '@eslint-community/regexpp': 4.11.0
       '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
       '@typescript-eslint/scope-manager': 5.62.0
       '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
@@ -12911,14 +12880,14 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/eslint-plugin@7.14.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)':
+  '@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
-      '@eslint-community/regexpp': 4.10.0
-      '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/visitor-keys': 7.14.1
+      '@eslint-community/regexpp': 4.11.0
+      '@typescript-eslint/parser': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/visitor-keys': 7.16.0
       eslint: 8.57.0
       graphemer: 1.4.0
       ignore: 5.3.1
@@ -12949,12 +12918,12 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.3)':
+  '@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3)
-      '@typescript-eslint/visitor-keys': 7.14.1
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3)
+      '@typescript-eslint/visitor-keys': 7.16.0
       debug: 4.3.5
       eslint: 8.57.0
     optionalDependencies:
@@ -12967,10 +12936,10 @@ snapshots:
       '@typescript-eslint/types': 5.62.0
       '@typescript-eslint/visitor-keys': 5.62.0
 
-  '@typescript-eslint/scope-manager@7.14.1':
+  '@typescript-eslint/scope-manager@7.16.0':
     dependencies:
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/visitor-keys': 7.14.1
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/visitor-keys': 7.16.0
 
   '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
@@ -12984,10 +12953,10 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/type-utils@7.14.1(eslint@8.57.0)(typescript@5.5.3)':
+  '@typescript-eslint/type-utils@7.16.0(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
-      '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3)
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3)
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       debug: 4.3.5
       eslint: 8.57.0
       ts-api-utils: 1.3.0(typescript@5.5.3)
@@ -12998,7 +12967,7 @@ snapshots:
 
   '@typescript-eslint/types@5.62.0': {}
 
-  '@typescript-eslint/types@7.14.1': {}
+  '@typescript-eslint/types@7.16.0': {}
 
   '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3)':
     dependencies:
@@ -13014,10 +12983,10 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  '@typescript-eslint/typescript-estree@7.14.1(typescript@5.5.3)':
+  '@typescript-eslint/typescript-estree@7.16.0(typescript@5.5.3)':
     dependencies:
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/visitor-keys': 7.14.1
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/visitor-keys': 7.16.0
       debug: 4.3.5
       globby: 11.1.0
       is-glob: 4.0.3
@@ -13044,12 +13013,12 @@ snapshots:
       - supports-color
       - typescript
 
-  '@typescript-eslint/utils@7.14.1(eslint@8.57.0)(typescript@5.5.3)':
+  '@typescript-eslint/utils@7.16.0(eslint@8.57.0)(typescript@5.5.3)':
     dependencies:
       '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3)
       eslint: 8.57.0
     transitivePeerDependencies:
       - supports-color
@@ -13060,9 +13029,9 @@ snapshots:
       '@typescript-eslint/types': 5.62.0
       eslint-visitor-keys: 3.4.3
 
-  '@typescript-eslint/visitor-keys@7.14.1':
+  '@typescript-eslint/visitor-keys@7.16.0':
     dependencies:
-      '@typescript-eslint/types': 7.14.1
+      '@typescript-eslint/types': 7.16.0
       eslint-visitor-keys: 3.4.3
 
   '@ungap/structured-clone@1.2.0': {}
@@ -13921,8 +13890,6 @@ snapshots:
 
   ci-info@3.9.0: {}
 
-  ci-info@4.0.0: {}
-
   citty@0.1.6:
     dependencies:
       consola: 3.2.3
@@ -14659,9 +14626,10 @@ snapshots:
 
   escape-string-regexp@5.0.0: {}
 
-  eslint-config-prettier@9.1.0(eslint@8.57.0):
+  eslint-compat-utils@0.5.1(eslint@8.57.0):
     dependencies:
       eslint: 8.57.0
+      semver: 7.6.2
 
   eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.24.7))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.7))(eslint@8.57.0)(typescript@5.5.3):
     dependencies:
@@ -14708,6 +14676,13 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  eslint-plugin-es-x@7.8.0(eslint@8.57.0):
+    dependencies:
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+      '@eslint-community/regexpp': 4.11.0
+      eslint: 8.57.0
+      eslint-compat-utils: 0.5.1(eslint@8.57.0)
+
   eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.24.6(@babel/core@7.24.7))(@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.24.7))(eslint@8.57.0):
     dependencies:
       '@babel/plugin-syntax-flow': 7.24.6(@babel/core@7.24.7)
@@ -14716,9 +14691,9 @@ snapshots:
       lodash: 4.17.21
       string-natural-compare: 3.0.1
 
-  eslint-plugin-import-x@0.5.2(eslint@8.57.0)(typescript@5.5.3):
+  eslint-plugin-import-x@0.5.3(eslint@8.57.0)(typescript@5.5.3):
     dependencies:
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       debug: 4.3.5
       doctrine: 3.0.0
       eslint: 8.57.0
@@ -14727,6 +14702,7 @@ snapshots:
       is-glob: 4.0.3
       minimatch: 9.0.4
       semver: 7.6.2
+      stable-hash: 0.0.4
       tslib: 2.6.2
     transitivePeerDependencies:
       - supports-color
@@ -14789,6 +14765,18 @@ snapshots:
       object.entries: 1.1.8
       object.fromentries: 2.0.8
 
+  eslint-plugin-n@17.9.0(eslint@8.57.0):
+    dependencies:
+      '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+      enhanced-resolve: 5.17.0
+      eslint: 8.57.0
+      eslint-plugin-es-x: 7.8.0(eslint@8.57.0)
+      get-tsconfig: 4.7.5
+      globals: 15.8.0
+      ignore: 5.3.1
+      minimatch: 9.0.4
+      semver: 7.6.2
+
   eslint-plugin-react-dom@1.5.17(eslint@8.57.0)(typescript@5.5.3):
     dependencies:
       '@eslint-react/ast': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
@@ -14798,9 +14786,9 @@ snapshots:
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/var': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       eslint: 8.57.0
       string-ts: 2.2.0
@@ -14819,10 +14807,10 @@ snapshots:
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/var': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       eslint: 8.57.0
       string-ts: 2.2.0
@@ -14844,10 +14832,10 @@ snapshots:
       '@eslint-react/shared': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       eslint: 8.57.0
       string-ts: 2.2.0
@@ -14866,10 +14854,10 @@ snapshots:
       '@eslint-react/tools': 1.5.17
       '@eslint-react/types': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
       '@eslint-react/var': 1.5.17(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/scope-manager': 7.14.1
-      '@typescript-eslint/type-utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/types': 7.14.1
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/scope-manager': 7.16.0
+      '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/types': 7.16.0
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       effect: 3.4.5
       eslint: 8.57.0
       string-ts: 2.2.0
@@ -14928,28 +14916,6 @@ snapshots:
       semver: 7.6.2
       strip-indent: 3.0.0
 
-  eslint-plugin-unicorn@54.0.0(eslint@8.57.0):
-    dependencies:
-      '@babel/helper-validator-identifier': 7.24.7
-      '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
-      '@eslint/eslintrc': 3.1.0
-      ci-info: 4.0.0
-      clean-regexp: 1.0.0
-      core-js-compat: 3.37.1
-      eslint: 8.57.0
-      esquery: 1.5.0
-      indent-string: 4.0.0
-      is-builtin-module: 3.2.1
-      jsesc: 3.0.2
-      pluralize: 8.0.0
-      read-pkg-up: 7.0.1
-      regexp-tree: 0.1.27
-      regjsparser: 0.10.0
-      semver: 7.6.2
-      strip-indent: 3.0.0
-    transitivePeerDependencies:
-      - supports-color
-
   eslint-scope@5.1.1:
     dependencies:
       esrecurse: 4.3.0
@@ -14964,12 +14930,10 @@ snapshots:
 
   eslint-visitor-keys@3.4.3: {}
 
-  eslint-visitor-keys@4.0.0: {}
-
   eslint@8.57.0:
     dependencies:
       '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
-      '@eslint-community/regexpp': 4.10.0
+      '@eslint-community/regexpp': 4.11.0
       '@eslint/eslintrc': 2.1.4
       '@eslint/js': 8.57.0
       '@humanwhocodes/config-array': 0.11.14
@@ -15009,12 +14973,6 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  espree@10.1.0:
-    dependencies:
-      acorn: 8.12.0
-      acorn-jsx: 5.3.2(acorn@8.12.0)
-      eslint-visitor-keys: 4.0.0
-
   espree@9.6.1:
     dependencies:
       acorn: 8.12.0
@@ -15472,9 +15430,7 @@ snapshots:
     dependencies:
       type-fest: 0.20.2
 
-  globals@14.0.0: {}
-
-  globals@15.6.0: {}
+  globals@15.8.0: {}
 
   globalthis@1.0.4:
     dependencies:
@@ -17067,8 +17023,6 @@ snapshots:
 
   prelude-ls@1.2.1: {}
 
-  prettier@2.8.8: {}
-
   prettier@3.3.2: {}
 
   pretty-bytes@6.1.1: {}
@@ -17806,6 +17760,8 @@ snapshots:
 
   sprintf-js@1.0.3: {}
 
+  stable-hash@0.0.4: {}
+
   stack-trace@0.0.10: {}
 
   stack-utils@2.0.6:
@@ -18246,11 +18202,11 @@ snapshots:
       is-typed-array: 1.1.13
       possible-typed-array-names: 1.0.0
 
-  typescript-eslint@7.14.1(eslint@8.57.0)(typescript@5.5.3):
+  typescript-eslint@7.16.0(eslint@8.57.0)(typescript@5.5.3):
     dependencies:
-      '@typescript-eslint/eslint-plugin': 7.14.1(@typescript-eslint/parser@7.14.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/parser': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
-      '@typescript-eslint/utils': 7.14.1(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/eslint-plugin': 7.16.0(@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/parser': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
+      '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3)
       eslint: 8.57.0
     optionalDependencies:
       typescript: 5.5.3


Test patch:
diff --git a/packages/history/tests/createMemoryHistory.test.ts b/packages/history/tests/createMemoryHistory.test.ts
new file mode 100644
index 000000000..d4d2326f7
--- /dev/null
+++ b/packages/history/tests/createMemoryHistory.test.ts
@@ -0,0 +1,54 @@
+import { describe, expect, test } from 'vitest'
+import { createMemoryHistory } from '../src'
+
+describe('createMemoryHistory', () => {
+  test('back', () => {
+    const initialEntry = '/initial'
+    const history = createMemoryHistory({ initialEntries: [initialEntry] })
+    history.push('/a')
+    history.push('/b')
+    history.push('/c')
+    history.back()
+    expect(history.location.pathname).toBe('/b')
+    history.back()
+    expect(history.location.pathname).toBe('/a')
+    history.back()
+    expect(history.location.pathname).toBe(initialEntry)
+    // check that back does nothing when there is no back history
+    history.back()
+    expect(history.location.pathname).toBe(initialEntry)
+  })
+
+  test('forward', () => {
+    const history = createMemoryHistory()
+    history.push('/a')
+    history.push('/b')
+    history.push('/c')
+    history.back()
+    history.back()
+    expect(history.location.pathname).toBe('/a')
+    history.forward()
+    expect(history.location.pathname).toBe('/b')
+    history.forward()
+    expect(history.location.pathname).toBe('/c')
+    // check that forward does nothing when there is no forward history
+    history.forward()
+    expect(history.location.pathname).toBe('/c')
+  })
+
+  test('push and back #1916', () => {
+    const history = createMemoryHistory()
+    history.push('/a')
+    expect(history.location.pathname).toBe('/a')
+    history.push('/b')
+    expect(history.location.pathname).toBe('/b')
+    history.push('/c')
+    expect(history.location.pathname).toBe('/c')
+    history.back()
+    expect(history.location.pathname).toBe('/b')
+    history.push('/d')
+    expect(history.location.pathname).toBe('/d')
+    history.back()
+    expect(history.location.pathname).toBe('/b')
+  })
+})