Skip to content

Getting Started ​

keepalive-react-router is a route caching solution based on React Router DataAPI.

For more information about DataAPI, please refer to the React Router documentation.

Using KeepAlive is very simple. Let's get started quickly.

Install Dependencies ​

bash
npm install keepalive-react-router react-router-dom

Usage ​

First, you need to use React Router's DataAPI route components

tsx
// main.tsx
import {
  createBrowserRouter,
  createRoutesFromElements,
  Route,
  RouterProvider,
} from 'react-router-dom'

const router = createBrowserRouter(
  createRoutesFromElements(
    <Route path='/' element={<Root />}>
      <Route path='dashboard' element={<Dashboard />} />
      {/* ... etc. */}
    </Route>
  )
)

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>
    <RouterProvider router={router} />
  </React.StrictMode>
)

Then, in the Root route, use KeepAlive and remove Outlet.

Note that KeepAliveOutlet must be wrapped in KeepAliveProvider.

tsx
// root.tsx
import { KeepAliveOutlet, KeepAliveProvider } from 'keepalive-react-router'

export function Root() {
  return (
    <>
      <Outlet />
      <KeepAliveProvider>
        <KeepAliveOutlet />
      </KeepAliveProvider>
    </>
  )
}

Finally, define keepAlive in the route component!

tsx
const router = createBrowserRouter(
  createRoutesFromElements(
    <Route path='/' element={<Root />}>
      <Route
        path='dashboard'
        element={<Dashboard />}
        handle={{ keepAlive: true }} 
      />
      {/* ... etc. */}
    </Route>
  )
)

Now, the Dashboard route component will be cached.

KeepAlive, it's that simple!

For more details, please refer to the example.

Released under the MIT License.