Apple Sign In
Sign in with Apple lets users authenticate with their Apple ID using Face ID or Touch ID. It’s fast, secure, and familiar to iOS users.App Store Requirements
Rule 1: Apple Sign In is Required if You Have Other Social Login
If your app offers any third-party sign-in (Google, Facebook, Twitter, etc.), you must also offer Sign in with Apple. This is Apple’s App Store Review Guideline 4.8.Rule 2: Don’t Ask for Name After Apple Sign In
If you ask users for their name after they sign in with Apple, your app will likely be rejected. Apple provides the user’s name during authentication — you must use that, not ask again.Rule 3: Name is Only Provided on First Sign-In
Apple only sends the user’s full name on the first sign-in. All subsequent sign-ins returnnull for the name fields. This is by design.
| Sign-In | Full Name | |
|---|---|---|
| First time | ✅ Provided | ✅ Provided (or hidden) |
| Second+ time | ❌ null | ✅ Provided |
How to Test Name Retrieval Again
During development, you may want to test the first sign-in flow multiple times. To do this, you need to revoke your app’s access:Find your app
Look for your app in the list. In development, it may appear as:
Expo Go(if testing in Expo Go)- Your app’s name (if using development build)
Overview
Setting up Apple Sign In for native iOS requires:- Supabase Dashboard — Add your bundle ID to the Apple provider
- Apple Developer Console — Enable Sign in with Apple capability
- Your App — Use the
signInWithApple()function
No secret key required for native iOS. Unlike web OAuth, native Sign in with Apple uses the identity token directly. You don’t need to create a Services ID or signing key.
Part 1: Supabase Dashboard
Add Your Bundle ID
Add Client IDs
In the Client IDs field, add your app’s bundle identifier(s):If you have multiple build variants, add them all:
Part 2: Apple Developer Console
Enable Sign in with Apple Capability
Open your App ID
Go to developer.apple.com/account/resources/identifiersClick on your app’s identifier (e.g.,
com.yourcompany.yourapp)Part 3: App Configuration
Step 1: Add the Expo Plugin
Ensureexpo-apple-authentication is in your app.json plugins:
Step 2: Enable in App Config
Updateconfig/app.config.ts:
Step 3: Use in Your App
The kit provides a ready-to-use function:How the Kit Handles the Name
ThesignInWithApple() function automatically handles Apple’s name behavior:
Retrieving the Name Later
After the user signs in, you can get their name from user metadata:Testing
With Expo Go
You can test Apple Sign In in Expo Go on a physical iOS device:- Make sure
host.exp.Exponentis in your Supabase Client IDs - Run
npx expo start - Open in Expo Go on your iPhone
- Test Sign in with Apple
With Development Build
For the most accurate testing:On Simulator
Apple Sign In works on the iOS Simulator, but:- You must be signed into an Apple ID in the Simulator’s Settings
- The Simulator must be iOS 13+
Troubleshooting
'Invalid client_id' error
'Invalid client_id' error
Your bundle ID is not in Supabase’s Client IDs list.
- Check Authentication → Providers → Apple → Client IDs
- Add your exact bundle ID (case-sensitive)
- If using Expo Go, add
host.exp.Exponent
Full name is null
Full name is null
Apple only provides the name on the first sign-in.
- If you’ve signed in before, the name was already provided
- Check
user.user_metadata.full_name— it should be saved - To test again, revoke app access in iPhone Settings (see above)
Button doesn't appear
Button doesn't appear
'ERR_REQUEST_CANCELED' error
'ERR_REQUEST_CANCELED' error
This means the user cancelled the sign-in. This is not an error to display to the user.The kit’s
SocialAuthButtons handles this automatically.App rejected for name input after Apple Sign In
App rejected for name input after Apple Sign In
You cannot ask users to enter their name after Apple Sign In.
- Use the name from Apple’s response
- The kit saves it automatically to
user.user_metadata.full_name - If the user chose to hide their name, respect that
What Users See
When a user taps “Sign in with Apple”:- iOS shows a native Apple authentication sheet
- User authenticates with Face ID, Touch ID, or password
- User can choose to share or hide their email
- User can edit the name Apple will share (first time only)
- App receives the identity token and signs in