Comments (2)
Thanks @frederikhors - I agree this needs more visibility.
For anybody looking for an idea/solution for now, this is what I call on every app start (native; or reload in terms of our SPA for web)
const buildKey = process.env.CODEBUILD_BUILD_ID
const buster = `whatever-your-like-${buildKey}`
const prefix = 'your-prefix-entry'
export const clearStalePersistedReactQueryData = () => {
// this is needed to avoid issues with SSR rendering
// prevents metro from build failing
if (typeof window === 'undefined') return
const persistentStoreTime = Date.now() - 1 * 24 * 60 * 60 * 1000 // Timestamp of 1 day
storage.getAllKeys().forEach((entry) => {
// we only want to clear the data for react-query with the prefix defined above
if (!entry.startsWith(prefix)) {
return
}
const rawValue = storage.getString(entry)
if (!rawValue) return
try {
const value = JSON.parse(rawValue)
// Check if the entry contains "buster" and if it matches the current buster
// otherwise delete the entry
if (value?.buster !== buster) {
storage.delete(entry)
return
}
if (value?.state?.dataUpdatedAt && value.state.dataUpdatedAt < persistentStoreTime) {
// Delete the stale entry
storage.delete(entry)
} else {
// Check if the entry contains "pages" and "pageParams"
if (value.state.data && value.state.data.pages && value.state.data.pageParams) {
const { pages, pageParams } = value.state.data
// Check if the length of "pages" and "pageParams" is greater than 1
if (pages.length > 1 && pageParams.length > 1) {
// Slice "pages" and "pageParams" to keep only the first entry
value.state.data.pages = pages.slice(0, 1)
value.state.data.pageParams = pageParams.slice(0, 1)
// Update the stored value with the modified data
storage.set(entry, JSON.stringify(value))
}
}
}
} catch (error) {
console.error(`Error parsing JSON for key ${entry}:`, error)
}
})
}
In case you're confused about the "pages" part. We just want to persist one page. maxPages
is not working well (both problems with react-native and the persister)
from query.
we already have an issue for this:
from query.
Related Issues (20)
- Errors for shared queryKeys cause all queryFn to run, even if disabled HOT 1
- Docs: Broken links in react suspense guide HOT 2
- Dependent useQueries creates too many updates (exceeds maximum update depth) HOT 2
- Order matters to useInfiniteQuery options and TS HOT 4
- [vue-query] `useQueries` type inference issues with `select`, `computed` and `Array.map` HOT 1
- enabled: false should not ever fire a query or populate the local store HOT 1
- Solid Query: <Suspense> gets stuck in a loading state HOT 9
- Docs: Broken link on "Installation" page HOT 1
- eslint-plugin-query is incompatible with Eslint 9.x HOT 3
- Solid Query is mixing up queries during SSR HOT 2
- Docs : Remove ‘$’ from Installation Commands in Documentation
- SSR using NextJS App Router with InitialData Does not Callback HOT 4
- Changing `retryDelay` is ignored for query HOT 2
- Solid Query is failing to recognize signal change in `onMount` HOT 7
- Wrong inferring in useInfiniteQuery HOT 3
- Solid: Cannot access 'refetch' before initialization
- docs: search doesn't work HOT 1
- Docs website doesn't work in Brave HOT 2
- Docs website is down HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from query.