React Easy technical 1 views 1 min read

How do you persist Redux state?

Peer-reviewed by HireXTech Technical Panel Updated for 2025/2026 hiring Editorial standards
Practise this track
Interviewer Expectations for this Question
01
Core Competency

Assesses fundamental understanding of React conventions, runtime behavior, and memory/performance considerations.

02
Evaluation Criteria

Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.

Comprehensive Model Answer Verified Solution

redux-persist is the standard library for persisting and rehydrating a Redux store across page reloads/app restarts. It wraps your root reducer so selected slices are automatically saved to storage (e.g., localStorage on web, AsyncStorage on React Native) and restored on startup.

     import { combineReducers } from "redux";
     import { configureStore } from "@reduxjs/toolkit";
     import { persistStore, persistReducer } from "redux-persist";
     import storage from "redux-persist/lib/storage"; // localStorage

     const rootReducer = combineReducers({ user: userReducer, cart: cartReducer });

     const persistConfig = {
       key: "root",
       storage,
       whitelist: ["cart"], // only persist the `cart` slice
     };

     const persistedReducer = persistReducer(persistConfig, rootReducer);

     export const store = configureStore({
       reducer: persistedReducer,
       middleware: (getDefaultMiddleware) =>
         getDefaultMiddleware({ serializableCheck: false }),
     });

     export const persistor = persistStore(store);
     
     // index.js
     import { PersistGate } from "redux-persist/integration/react";

     <Provider store={store}>
       <PersistGate loading={null} persistor={persistor}>
         <App />
       </PersistGate>
     </Provider>;
     

Key points: use whitelist/blacklist to persist only the slices that need it (e.g., auth token, cart), disable serializableCheck for the persistence actions RTK flags by default, and wrap the app in <PersistGate> so rendering waits until the persisted state has been rehydrated.

Candidate Response Strategy & Interview Tips

  1. Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
  2. Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
  3. Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
  4. Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.
Related Topics & Skills
Spotted an error or have an alternative solution?