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.