Adding Google and Apple sign-in to an Expo app means dev builds, redirect schemes, secure storage, and a pile of native config. Here is the practical, current path to social login in Expo — what to use, what trips people up, and how to skip the boilerplate.
Expo makes most of mobile development delightful. Authentication is the place where the delight runs out. The moment you want real Google and Apple sign-in — not a toy demo — you collide with development builds, redirect schemes, native modules, and secure storage. None of it is impossible; all of it is fiddly and easy to get subtly wrong.
This is the practical, current guide to social login in Expo: the pieces you actually need, the order to do them in, the things that trip everyone up, and how to get a working sign-in screen without spending a week on plumbing.
The biggest early misunderstanding is trying to test real OAuth inside Expo Go. Native sign-in modules — the Apple system sheet, native Google sign-in — are not part of the Expo Go sandbox. To use them you need a development build (a custom dev client) or a production build on a real device.
Expo social login comes in two flavors, and most apps use both:
For Apple specifically, remember the rule from our Sign in with Apple deep-dive: native sheet on iOS, web flow elsewhere, and capture name and email on the first authorization because you only get them once.
The web flow returns to your app via a redirect, and getting that scheme exactly right is where most time disappears. Two rules save you hours:
redirect_uri_mismatch.After sign-in you hold tokens, and where you put them matters more than the sign-in itself. Use Expo's secure store, which maps to the iOS Keychain and Android Keystore — never plain AsyncStorage, which can be read on a compromised device or swept into a backup.
And do not stop at storing the access token. You need refresh and rotation so users stay logged in for weeks without a long-lived token riding every request. We covered the whole pattern in session management for mobile apps.
That is a real week of work — and none of it is your product. It is the same checklist for every Expo app anyone has ever shipped.
Kembo collapses that checklist into a drop-in component. The Expo SDK gives you an AuthView that renders Google and Apple sign-in with correct prominence, runs the right flow per platform, verifies tokens server-side, and stores sessions securely.
Expo authentication is entirely doable by hand — dev build, native sheets, web flow, exact redirects, secure storage, refresh. It is just a lot of undifferentiated work that every app repeats. Know the pieces so you can debug them, then decide whether building them again is the best use of your week.
If it is not, start a free Kembo project, drop AuthView into your Expo app, and have working Google and Apple sign-in today. Next week, the same treatment for Flutter: Flutter authentication without the boilerplate.