persist middleware serialize state ra storage và rehydrate khi app khởi động — dùng partialize để chỉ lưu phần cần thiết và version+migrate để handle schema changes.
- Middleware
persisttừ 'zustand/middleware' serialize state thành JSON rồi lưu vào storage, rehydrate khi app khởi động. - Config quan trọng:
name(storage key, bắt buộc),partializeđể chọn phần state cần persist — tránh lưu thừa:partialize: (s) => ({ user: s.user, theme: s.theme })(không lưu loading/error states),storageđể override engine:createJSONStorage(() => sessionStorage)hoặc custom AsyncStorage cho React Native.onRehydrateStoragelà lifecycle hook chạy khi rehydrate:onRehydrateStorage: () => (state, error) => { if (error) console.error('hydration failed', error) }.version+migrateđể handle schema changes giữa các app versions:version: 2, migrate: (persistedState, version) => { if (version === 1) return { ...persistedState, newField: 'default' } }.
Pitfall: persist không merge deep — nếu cấu trúc state thay đổi giữa releases mà không có migrate, rehydrate sẽ cho state không hợp lệ.