-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add reset error boundary component #980
Conversation
This pull request is being automatically deployed with Vercel (learn more). 🔍 Inspect: https://vercel.com/tannerlinsley/react-query/8aildygxh |
Conflicts ;) |
Ah yes will resolve those. What is your thought on a ‘ReactQueryErrorBoundary’ vs ‘ReactQueryResetErrorBoundary’? |
So I think my main argument against what's happening here is that React Query isn't an error boundary component and by providing one would be diverging from the ecosystem (most people just use That said... we would need a reliable way to know which queries to reset for a specific tree... so thus, we need a wrapper component 😂 All that said, I think we should totally ship a component, but do as much as we can to show people how to reliably integrate it with a real error boundary component. And that brings me to the name. It's not really an error boundary. It's a query resetter. So maybe something like |
954a1a0
to
e3157b3
Compare
Fair enough! Users can always create their own error boundary wrapper which also includes a react query error reset boundary :) |
🎉 This PR is included in version 2.16.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This busted https://github.com/kentcdodds/bookshelf Here's the PR upgrading to this version of react-query@2.16.0: kentcdodds/bookshelf#69 Note that the latest version is broken as well. This is just the first version that triggered an issue. Let me know if you'd like me to open a new issue about this regression. |
@kentcdodds the functionality seems to work in the app itself and the tests pass if I disable the "can edit a note" test. Could there be a race condition in the tests? |
Indeed. I thought I could reproduce it in the app but turns out that's not the case. It's tests only. I'm going to investigate and even better I'll try to reproduce this in react-query's tests so we avoid breakages like this in the future :) |
* docs: added more detailed explanation of what the cache timeout does in the detailed walkthough of useQuery (TanStack#928) Co-authored-by: Clayton Marshall <claytn@claytons-mbp.lan> * Update index.js * Add queryCache de/rehydration (TanStack#728) * chore(hydration): set up separate hydration entry point * feat(hydration): add support for de/rehydrating queryCaches - Add dehydrate(queryCache, config) - Add hydrate(queryCache, dehydratedQueries, config) - Add useHydrate(dehydratedQueries, config) * test(hydration): fix broken type in test * rename scheduleTimeoutsManually to activateTimeoutsManually * docs(hydration): add API-docs for hydration and update comparison * docs(ssr): update ssr-docs with new approach based on de/rehydration * remove activateTimeoutsManually * add default shouldDehydrate * add hydration/ReactQueryCacheProvider * use unknown for initialData in dehydration * rename initialQueries and dehydratedQueries to dehydratedState * include queryKey instead of queryHash in dehydration * update initialQueries to dehydratedState in ssr guide docs * remove shouldHydrate-option * feat: determine staleness locally instead of globally (TanStack#933) * fix: add hydration.js to npm files * fix: add hydration.js to npm files * fix: make sure initial data is used when switching queries (TanStack#944) * feat: change ReactQueryCacheProvider from hydration to Hydrate (TanStack#943) * tests: fix setTimeout for ci tests * fix: always use config from last query execution (TanStack#942) * fix: make sure queries with only inactive observers are also invalidated (TanStack#949) * feat: add notifyOnStatusChange flag (TanStack#840) * docs: update comparison Closes TanStack#920 * docs: update supporters and comparison * docs: fix sponsors rendering * fix: ignore errors from background fetches (TanStack#953) * feat: add forceFetchOnMount flag (TanStack#954) * feat: add isPreviousData and isFetchedAfterMount flags (TanStack#961) * docs(react-native): add solution for fullscreen error (TanStack#958) * docs: update sponsors * fix: use hook config on refocus or reconnect (TanStack#964) * docs: typo in useQuery.test (TanStack#965) * fix: make sure setQueryData is not considered as initial data (TanStack#966) * refactor: cleanup to reduce file size and add tests (TanStack#969) * Update devtools.md (TanStack#973) Separate the sentences based on contex * fix: export hydration types (TanStack#974) * docs: update sponsors * fix(hydration): overwrite the existing data in the cache if hydrated data is newer (TanStack#976) * refactor: optimize render path and improve type safety (TanStack#984) * feat: add reset error boundary component (TanStack#980) * refactor: remove unused deepEqual function (TanStack#999) * fix: cancel current fetch when fetching more (TanStack#1000) * fix: notify query cache on stale (TanStack#1001) * test: add previous data test (TanStack#1003) * feat: add support for tree shaking (TanStack#994) * fix: useInfinityQuery fetchMore should not throw (TanStack#1004) * docs: update api docs (TanStack#1005) * refactor: remove query status bools (TanStack#1009) * fix: make sure initial data always uses initial stale (TanStack#1010) * feat: add always option to refetch options (TanStack#1011) * feat: export QueryCache and remove global query cache from docs and examples (TanStack#1017) * docs: remove shared config (TanStack#1021) * feat: add remove method and deprecate clear (TanStack#1022) * fix: should be able to invalidate queries (TanStack#1006) * fix: should throw error when using useErrorBoundary (TanStack#1016) * docs: Add graphql docs * docs: add graphql-request example * docs: update graphql docs * docs: add graphql example * feat: implement batch rendering (TanStack#989) * docs: Update comparison.md * docs: Update essentials banner * docs: reorder homepage * fix: accept any promise in useMutation callbacks (TanStack#1033) * docs: prefer default config of QueryCache (TanStack#1034) * fix: include config callbacks in batch render (TanStack#1036) * docs: update example deps * docs: fix comparison 3rd party website links (TanStack#1040) * Remove storing the return value of queryCache.removeQueries (TanStack#1038) Removed storing the return value of `queryCache.removeQueries` as it doesn't return anything. * feat: add QueryCache.fetchQuery method (TanStack#1041) * docs: add refetch documentation (TanStack#1043) * docs: fix graphql example link Closes TanStack#1044 * docs: remove trailing quotes from supporters links (TanStack#1045) The quotes were breaking the links. * docs: fix typo in queries page (TanStack#1046) * fix: prevent bundlers from removing side effects (TanStack#1048) * test: add invalidate query tests (TanStack#1052) * fix: query should try and throw again after error boundary reset (TanStack#1054) * docs: fix `user.id` access in case user is null (TanStack#1056) * docs: update comparison * docs: update sponsors * feat: add QueryCache.watchQuery (TanStack#1058) * docs: Update invalidations-from-mutations.md (TanStack#1057) Remove unnecessary parenthesis Co-authored-by: Clayton Marshall <c.marshall@salesforce.com> Co-authored-by: Clayton Marshall <claytn@claytons-mbp.lan> Co-authored-by: Tanner Linsley <tannerlinsley@gmail.com> Co-authored-by: Fredrik Höglund <fredrik.hoglund@gmail.com> Co-authored-by: Niek Bosch <just.niek@gmail.com> Co-authored-by: Dragoș Străinu <str.dr4605@gmail.com> Co-authored-by: Alex Marshall <alex.k.marshall83@gmail.com> Co-authored-by: Rudzainy Rahman <rudzainy@gmail.com> Co-authored-by: Corentin Leruth <corentin.leruth@gmail.com> Co-authored-by: Evgeniy Boreyko <boreykojenya@yandex.ru> Co-authored-by: Pierre Mdawar <pierre@mdawar.dev> Co-authored-by: Juliano Farias <thefrontendwizard@gmail.com> Co-authored-by: Twinkle <saintwinkle@gmail.com> Co-authored-by: Julius-Rapp <61518032+Julius-Rapp@users.noreply.github.com> Co-authored-by: cheddar <chad@cmfolio.com>
Because error boundaries are only applicable to a certain a tree, I think it would be good if the error reset would also only be applicable to that specific tree.
The
ReactQueryResetErrorBoundary
component enables this functionality, while allowing users to keep their own error boundary component. This does mean users will need to wrap their queries in two boundaries. We could streamline this by providing aReactQueryErrorBoundary
component similar toreact-error-boundary
. But maybe there are arguments against this?This change should be backwards compatible and would allow us to remove
queryCache.resetErrorBoundaries()
andquery.state.throwInErrorBoundary
in v3 to make the core less knowledgable about React.