Short answer
Check the network tab for repeated auth calls and fix the loop first. If sign-ins go through your own server, every user shares its IP: turn on IP address forwarding and send the user’s IP, or sign in from the browser. Raise the limits in Authentication > Rate Limits only for real traffic.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why Supabase is rate limiting, and the fix
01
A React effect calls auth in a loop
“Sometimes can indicate a bug in your application that mistakenly sends out too many requests (such as a badly written useEffect React hook).” Supabase docs, Auth error codes (over_request_rate_limit)
An effect that calls getUser, signIn or refresh and also updates state it depends on runs again and again. Subscribe once with onAuthStateChange and clean up on unmount.
useEffect(() => { const { data } = supabase.auth.onAuthStateChange((_event, session) => { setSession(session); }); return () => data.subscription.unsubscribe(); }, []); // run once, not on every session change02
Every sign-in comes from your server’s IP
“Defaults to 30 requests per 5 minutes, with bursts up to 30 requests.” Supabase docs, Auth rate limits (Sign-ups and sign-ins)
When a Next.js route or an Edge Function signs users in for them, Supabase sees one IP for all users and the limit fills quickly. Turn on IP address forwarding in Authentication > Rate Limits and set the Sb-Forwarded-For header with a secret API key, or sign users in from the browser.
03
Token refreshes pile up
“Defaults to 150 requests per 5 minutes, with bursts up to 30 requests.” Supabase docs, Auth rate limits (Token endpoint requests)
Many tabs, or several Supabase clients in one app, each refresh the session. Create one client and share it, and let the library refresh on its own.
04
Real traffic is higher than the default
“When rate limits are exceeded, a 429 Too Many Requests error is returned.” Supabase docs, Auth rate limits
A launch, a school or an office behind one IP can hit the limit honestly. Raise it in Authentication > Rate Limits, and show users a “try again in a few minutes” message on a 429.
Checked against the vendor’s docs on : Supabase docs: Auth error codes; Supabase docs: Auth rate limits.
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
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: Supabase email rate limit exceeded · Supabase users logged out (refresh token) · Supabase invalid login credentials · Supabase captcha_failed