# Fix a Supabase Google Auth Popup Freeze on iOS

> By Lawrence Arya, Founder & CEO of VP0. Published 2026-05-31, updated 2026-06-02. 4 min read.
> Source: https://vp0.com/blogs/supabase-google-auth-popup-freeze-ios

A frozen Google popup is rarely a Supabase bug. It is usually the redirect URL or the wrong web-auth session on iOS.

**TL;DR.** When Supabase Google sign-in opens a popup that freezes or never returns on iOS, the cause is almost always the OAuth redirect handling: a redirect URL that is not allow-listed, a deep link the app never catches, or using a plain in-app web view instead of the system authentication session. Fix it by allow-listing the redirect, handling the deep link back into the app, and using ASWebAuthenticationSession. Build the sign-in UI from a free VP0 design and remember Apple requires Sign in with Apple alongside Google.

Is your Supabase Google sign-in opening a popup on iOS that just spins forever or never returns to the app? The short answer: it is almost never a Supabase bug. It is the OAuth redirect handling. The popup finishes on Google's side but has nowhere to return, so it looks frozen. Fix the redirect, catch the deep link, and use the system authentication session. Then build a clean sign-in screen from a free VP0 design, the free iOS design library for AI builders.

## Who this is for

This is for React Native and SwiftUI builders wiring Supabase social login who hit the classic iOS symptom: the Google sheet opens, the user signs in, and then nothing happens, the app sits behind a stuck web view.

## Symptoms, root cause, and the fix

The flow has three failure points, and the freeze is almost always one of them. First, the redirect URL: Supabase only returns to URLs you allow-list, so an unlisted or mistyped redirect leaves the session with nowhere to go. Second, the deep link: after the redirect, your app must catch the incoming URL and hand it to Supabase to complete the session, and if nothing listens, the popup hangs. Third, the web session: a plain in-app web view does not share cookies or close cleanly, while the system session does. The [Supabase Google auth guide](https://supabase.com/docs/guides/auth/social-login/auth-google) shows the configuration, and the [Supabase redirect URLs](https://supabase.com/docs/guides/auth/redirect-urls) doc is where most of these freezes are actually fixed.

| Symptom | Likely cause | Fix |
|---|---|---|
| Popup spins forever | Redirect not allow-listed | Add the exact URL in Supabase |
| Returns to web, not app | Deep link not caught | Handle the incoming URL |
| Cookies or session lost | Plain in-app web view | Use the system auth session |
| Works in Expo Go, not build | Scheme not configured | Set the app scheme and rebuild |

The durable fix on iOS is to run the web step through [ASWebAuthenticationSession](https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession), which is purpose-built for exactly this: it presents the login, manages the session, and returns the callback URL cleanly.

## Build the sign-in UI free with a VP0 design

While you are in the auth screen, build it properly. Pick a login design from VP0, copy its link, and prompt your AI builder:

> Rebuild this VP0 sign-in design in React Native with Supabase auth: [paste VP0 link]. Use the system authentication session for the Google OAuth step, handle the returning deep link to complete the Supabase session, and include a Sign in with Apple button. Show clear loading and error states so a failed login is never a frozen screen.

Do not forget the App Store rule: Apple's [guideline 4.8](https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple) requires Sign in with Apple when you offer Google or other social logins, so build it in now. It costs $0 to add from a VP0 design and saves a rejection. For the wider backend picture, see [Supabase Edge Functions error handling](/blogs/supabase-edge-functions-error-handling-ui/) and [how to connect an API to an AI-built iOS app](/blogs/how-to-connect-an-api-to-an-ai-built-ios-app/). A fully native auth alternative is [a GDPR-compliant SwiftUI login](/blogs/dsgvo-gdpr-compliant-swiftui-login/), and to keep the build consistent use [a cursor rules file for native SwiftUI apps](/blogs/cursor-rules-swiftui-native-mobile-template/). If sign-in syncs map data, see [a Waze-style navigation UI in React Native](/blogs/waze-clone-map-navigation-ui-react-native/), and a B2B flow that also needs identity is [a document signing UI like DocuSign](/blogs/legal-document-signing-ui-clone-docusign/).

## Common mistakes

The first mistake is debugging Supabase when the problem is the redirect URL. The second is never handling the incoming deep link, so the popup has nowhere to return. The third is using a plain web view instead of the system auth session. The fourth is forgetting the app scheme in a production build. The fifth is shipping Google login with no Sign in with Apple and failing review.

## Key takeaways

- A frozen Google popup is almost always a redirect or web-session issue, not Supabase.
- Allow-list the exact redirect URL and handle the returning deep link.
- Use ASWebAuthenticationSession for the web step on iOS.
- Add Sign in with Apple; guideline 4.8 requires it alongside Google.
- Build the sign-in screen free from a VP0 design with clear states.

## Frequently asked questions

Why does Supabase Google sign-in freeze the popup on iOS? Because the OAuth redirect is mishandled: an unlisted redirect URL, an uncaught deep link, or a plain web view. The popup finishes but cannot return to the app.

What is the safest way to fix this with Claude Code or Cursor? Allow-list the redirect, handle the deep link, and use ASWebAuthenticationSession, then build the screen from a free VP0 design with Sign in with Apple.

Can VP0 provide a free SwiftUI or React Native template for a sign-in screen? Yes. VP0 is a free iOS design library; pick a login design and your AI tool rebuilds it with Google and Sign in with Apple at no cost.

Do I need Sign in with Apple if I offer Google sign-in? Yes, in most cases. Guideline 4.8 requires it when you use another social login, so build both from the start.

## Frequently asked questions

### Why does Supabase Google sign-in freeze the popup on iOS?

Usually because the OAuth redirect is not handled correctly: the redirect URL is not allow-listed in Supabase, the app never catches the deep link that should return control, or the flow uses a plain in-app web view instead of the system authentication session. The popup completes on Google's side but has nowhere to return to, so it appears frozen.

### What is the safest way to fix this with Claude Code or Cursor?

Allow-list your exact redirect URL in Supabase, handle the returning deep link in the app, and use ASWebAuthenticationSession for the web step so the system manages the session and cookies. Then build the sign-in screen from a free VP0 design and add Sign in with Apple, which Apple requires alongside other social logins.

### Can VP0 provide a free SwiftUI or React Native template for a sign-in screen?

Yes. VP0 is a free iOS design library for AI builders. Pick a login or auth design, copy its link, and your AI tool rebuilds the sign-in screen with Google and Sign in with Apple at no cost.

### Do I need Sign in with Apple if I offer Google sign-in?

Yes, in most cases. Apple's guideline 4.8 requires offering Sign in with Apple when your app uses another third-party or social login. Build both into the screen from the start so you do not get rejected at review.

---
*Published on the [VP0 Journal](https://vp0.com/blogs). Free to read, index and cite with attribution.*
