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
Solid Query: Query errors are not caught by ErrorBoundary in the same component #7083
Comments
Taking a look at this this week! |
ardeora
added a commit
that referenced
this issue
Apr 13, 2024
* feat(solid-query): Rework internals of createBaseQuery This change aims to simplify and enhance the internals of `createBaseQuery`. This change is a precursor to fix a couple of pressing issues in solid-query mentioned in #7079 #7083 #7173 #7036 #6620 #6373 PRs for which are coming soon. A key few highlights coming with this change: 1. Removal of `mutate` and `refetch` branches in `createClientSubscriber`: We had two different ways of resolving a query resource. The `mutate` option that optimistically updated a resource proved to be a problem with error queries. A query that has `placeholder` data and fails for any reason would see a flash of blank content before yielding to the ErrorBoundary. Using `refetch` for all query resolutions gives us a nice and simple way to transition to error boundaries 2. Removal of batched calls with `notifyManager`: With the new approach we dont need to batch anything. Everything is taken care of automatically. This removes all sideEffects from solid-query as a nice plus 3. Central place to update state: The new `setStateWithReconciliation` function provides a nice and easy way to make the `reconcile` option way more powerful 4. Only accessing the `data` property now would trigger Suspense boundary. Previously any property accessed on a query would trigger the suspense boundary. This was not intentional and has been fixed now 5. Proxied `data` doesn't jump between different values in most cases
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
If the option
throwOnError
istrue
, Solid Query throws errors which can be caught with an ErrorBoundary. The issue is that the error doesn't get caught by the ErrorBoundary in the same component as where the query is defined, only by it's parent.This leads to less readable code, because to properly catch errors, you need to .
It's also inconsistent with the behavior of SolidJS's Suspense and
createResource
.Your minimal, reproducible example
https://stackblitz.com/edit/tanstack-query-urg3e7?file=src%2FExample.tsx
Steps to reproduce
Expected behavior
If
throwOnError
istrue
, the ErrorBoundary defined within the same component is triggered (more specifically, the ErrorBoundary which is closes to the place wherequeryResult.data
is accessed).Tanstack Query adapter
solid-query 5.25.0
The text was updated successfully, but these errors were encountered: