Short answer
Log error.status. A 0 means no response reached the app: a device offline, a wrong project URL, a paused project or a cancelled request. A 500 on sign-up or password reset usually means the email failed to send through your SMTP settings, or a database trigger failed. A 503 on every Auth request means the Auth service can’t load its configuration, most often an invalid session timebox. Retrying won’t fix a 500 or 503 until the SMTP setting, trigger or Auth setting is fixed.
What each status code means, and the fix
01
Read the status code first
In supabase-js, an Auth request that throws before any response, or that comes back with status 500 to 504 or a Cloudflare 520 to 530, becomes AuthRetryableFetchError. The status is 0 when nothing came back. Log error.status and error.message next to the call that failed, whether sign-up, reset or sign-in, before changing anything. In Flutter, AuthRetryableFetchException covers requests that got no response, and recent supabase_flutter versions report server errors of 500 and above as AuthRetryableApiException.
02
500 on sign-up or password reset: the email didn’t send
“The signup confirmation and password reset flows require an SMTP server to send emails.” Supabase, Password-based Auth
Confirmation and reset emails go out through the SMTP server in your project’s Auth settings. When the send fails, for example because of a wrong SMTP password, host or port, or a sender address your email provider hasn’t verified, Supabase Auth answers with status 500 and the message Error sending confirmation email or Error sending recovery email. Auth also uses those messages when it can’t save the token, so check the Auth logs in the dashboard for the error behind it. Fix the settings, then send a test reset to an address outside your team.
03
500 elsewhere: a database trigger failed
“Most often it points to issues in your database setup such as a misbehaving trigger on a schema, function, view or other database object.” Supabase, Error codes
If sign-up fails with the message Database error saving new user, look at triggers on auth.users, such as one that creates a profile row. An error inside the trigger fails the whole sign-up, and the client sees it as this error.
04
503 on every Auth request: the Auth service can’t start
“A 503 status code accompanied by an AuthRetryableFetchError typically indicates that the Auth (GoTrue) service is failing to initialize because it cannot load its configuration.” Supabase, Auth error: 503 AuthRetryableFetchError
When every sign-in, sign-up and session refresh fails with 503, Supabase names the usual cause: an invalid Timebox duration under User Sessions in the Auth Sessions settings, such as a value far too large or in an unsupported unit. Set a smaller valid duration, or the default of 4320 hours, and save. Saving reloads the configuration and Auth starts again.
05
Status 0: nothing reached the app
Check the project URL the app was built with and that the device is online, and rule out a paused project. In a browser, a CORS block or a request cancelled by a page navigation gives status 0 too, and so can an extension that blocks requests. If it only happens in the published app, compare the URL and key in its environment with your local ones.
06
Show users the right message
Catch this error apart from AuthApiError, so a user sees “couldn’t reach the server, try again” rather than “wrong password”. Keep the retry to one tap: a broken SMTP setting, trigger or Auth setting fails every time until it is fixed.
Checked against the vendor’s docs on : Supabase troubleshooting: Auth error: 503 AuthRetryableFetchError; Supabase docs: Auth error codes and HTTP status codes; Supabase docs: Send emails with custom SMTP; supabase-js source: which responses become AuthRetryableFetchError; supabase_flutter source: AuthRetryableFetchException and AuthRetryableApiException; Supabase Auth source: the email send errors.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
Related: Supabase auth emails going to spam · Supabase “Database error saving new user” · Supabase project paused · Supabase “Failed to fetch” in the published app