persistQueryClient serialize toàn bộ cache React Query vào storage và restore khi user reload — data hiện ra ngay, không phải fetch lại.
ts
import { persistQueryClient } from '@tanstack/react-query-persist-client'
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'
const persister = createSyncStoragePersister({ storage: window.localStorage })
persistQueryClient({
queryClient,
persister,
maxAge: 1000 * 60 * 60 * 24,
buster: APP_VERSION,
})- React Native dùng
createAsyncStoragePersister; data vượt giới hạn ~5MB của localStorage thì dùng persister IndexedDB. maxAgelà khoảng thời gian data còn được phép restore (mặc định 24 giờ).busterđổi theo version app để bỏ toàn bộ cache cũ khi cấu trúc data thay đổi.dehydrateOptions.shouldDehydrateQuerylọc xem query nào được persist.
Khi app load, nếu data còn trong maxAge thì hydrate thẳng vào cache: query hiển thị data cũ trước, refetch nền nếu đã stale.
Lưu ý: đừng persist data nhạy cảm (token, thông tin cá nhân) — localStorage không mã hoá.