@@ -131,7 +131,13 @@ export function experimental_createQueryPersister<TStorageValue = string>({
131131 try {
132132 const storedData = await storage . getItem ( storageKey )
133133 if ( storedData ) {
134- const persistedQuery = await deserialize ( storedData )
134+ let persistedQuery : PersistedQuery
135+ try {
136+ persistedQuery = await deserialize ( storedData )
137+ } catch {
138+ await storage . removeItem ( storageKey )
139+ return
140+ }
135141
136142 if ( isExpiredOrBusted ( persistedQuery ) ) {
137143 await storage . removeItem ( storageKey )
@@ -241,11 +247,17 @@ export function experimental_createQueryPersister<TStorageValue = string>({
241247
242248 async function persisterGc ( ) {
243249 if ( storage ?. entries ) {
250+ const storageKeyPrefix = `${ prefix } -`
244251 const entries = await storage . entries ( )
245252 for ( const [ key , value ] of entries ) {
246- if ( key . startsWith ( prefix ) ) {
247- const persistedQuery = await deserialize ( value )
248-
253+ if ( key . startsWith ( storageKeyPrefix ) ) {
254+ let persistedQuery : PersistedQuery
255+ try {
256+ persistedQuery = await deserialize ( value )
257+ } catch {
258+ await storage . removeItem ( key )
259+ continue
260+ }
249261 if ( isExpiredOrBusted ( persistedQuery ) ) {
250262 await storage . removeItem ( key )
251263 }
@@ -265,11 +277,17 @@ export function experimental_createQueryPersister<TStorageValue = string>({
265277 const { exact, queryKey } = filters
266278
267279 if ( storage ?. entries ) {
280+ const storageKeyPrefix = `${ prefix } -`
268281 const entries = await storage . entries ( )
269282 for ( const [ key , value ] of entries ) {
270- if ( key . startsWith ( prefix ) ) {
271- const persistedQuery = await deserialize ( value )
272-
283+ if ( key . startsWith ( storageKeyPrefix ) ) {
284+ let persistedQuery : PersistedQuery
285+ try {
286+ persistedQuery = await deserialize ( value )
287+ } catch {
288+ await storage . removeItem ( key )
289+ continue
290+ }
273291 if ( isExpiredOrBusted ( persistedQuery ) ) {
274292 await storage . removeItem ( key )
275293 continue
0 commit comments