-
-
Notifications
You must be signed in to change notification settings - Fork 333
Major DX change: response and error handling #32
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
Comments
Does this error handling include programmer errors? Say I pass a list to For the record, supabase/postgrest-js#93 uses a fetch polyfill for the HTTP client, so there's no need to use the const { ok, body: products } = await supabase.from('products').select('*')
if (!ok) { // status code is not 2XX
alert(products.message) // PostgREST's error is stored in body (`T | T[] | PostgrestError`) in case of error
return // abort
}
console.log(`Found ${products.length} products.`) |
I don't think this should be expected, just catch and rethrow unexpected errors. As you say, handling every possible error would be unwieldy. We should just shape expected errors.
This one is just a preference. I guess we should decide now what is the more appropriate name for the key. IMO
I'd far prefer this one to look like the suggested change ( |
Tasks:
Also solves:
|
Are there plans to expose the |
@stupidawesome is there a use case for this? PostgREST supports this, but we haven't really considered having this in. If you just want the |
- Fixes #32 Major DX change: response and error handling - Fixes #49 When no `supabaseKey` is passed in it throws an error - Fixes #31 chore: set up semantic releases - Fixes #15 `supabase.auth.logout()` throws "Invalid user" error. - Fixes #20 Auth: Change DX of user management - Fixes #30 Supabase auth interface missing informiation - Fixes supabase/supabase#147 supabase/supabase#147 - Partial fix for supabase/realtime-js#53 - if there is no token provided. The error needs to be caught at a socket level. - Adds magic links ## BREAKING CHANGES - See all breaking changes in RELEASE.md v1.0.0 - Errors are now returned and not thrown - Auth now uses `@supabase/gotrue-js` interface - `supabase.getSubscriptions()` only returns open subscriptions * Updates the config * chore: Migrates the basic outline to TS * Adds a simple example showing how it can be used. * chore: Moves tests to jest * chore: Adds semantic releases * Moves the subscription into it's own class * Updates the todo readme with simple instructions * Updates installs * Revverts commented code - sorry for the spam * docs: adds JSDoc to some functions * chore: Adds a function for backwards compat * chore: migrates the client to SupabaseClient * This change attempts to make the naming conventions the same as Thor's previously * Updates GoTrue to latest version * Adds generic type to the from, and updates the name of the query builder * Updates to latest versions of all packages * Updates the example to make sure it's working * Refactor SupabaseQueryBuilder * Adds prettier hook * Add TypeScript next.js example. * Declutter SupabaseClient and make work with gotrue-js changes. * Bumps the GoTrue version * Bumps postgrest to include the types * Temporarily adds the spec so that I can use it in our docs * Update examples and add resetPassword. * Bump gotrue-js version. * Update lockfile. * Add auth magic link capabilities. * Gotrue-js user and session method updates. * chore: Adds release notes Co-authored-by: Thorsten Schaeff <[email protected]> Co-authored-by: Thor 雷神 Schaeff <[email protected]>
Do i still need to use |
You don't - if it throws it might be sign of a postgrest-js bug. |
So does supabase return network failure in |
I'm not sure about the other dependencies, but postgrest-js should return network failure in |
Here is the text from swr documentation -
** Will following code work then? Because in following code supabase is not throwing error, so what will be error in following code?
|
If you want the |
I am not specific about rpc. take it as general supabase query and answer what i am asking please. |
This is not specific to |
Can we set this as a default behaviour globally via a parameter or smth? This is super unusual behaviour, as SDKs ussually throw errors, otherwise we have to add lots of additional checks around that which doesn't make sense. |
Throwing errors by default, or have that as an option on |
Decision
We've decided to make a major change to support a better developer experience for working with supabase-js. Instead of throwing an error, we will return the error object as part of the response.
Example
Given a successful query, e.g.
const response = await supabase.from('products').select('*')
,response
will be:Given a bad query, e.g.
const response = await supabase.from('productx').select('*')
,response
will be:Future DX
This will enable the following experience:
Additional context
Inspiration has been taken from https://github.com/vercel/swr#quick-start:
as well as Stripe.js : https://stripe.com/docs/js/payment_methods/create_payment_method

The text was updated successfully, but these errors were encountered: