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.
The kit handles this automatically — it saves the name to Supabase user metadata on first sign-in, so you can always retrieve it later.
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:1
Open iPhone Settings
Go to Settings on your iPhone or Simulator
2
Tap your Apple ID
Tap your name at the top of Settings
3
Go to Sign-In & Security
Tap Sign-In & Security (or “Password & Security” on older iOS)
4
Find Sign in with Apple
Tap Apps Using Your Apple ID (or “Apps Using Apple ID”)
5
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)
6
Stop using Apple ID
Tap your app, then tap Stop Using Apple IDConfirm when prompted
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
1
Open Auth settings
Go to your Supabase project dashboardNavigate to Authentication → Providers
2
Find Apple provider
Click on Apple to expand the settings
3
Add Client IDs
In the Client IDs field, add your app’s bundle identifier(s):If you have multiple build variants, add them all:
4
Testing with Expo Go
If testing with Expo Go, also add:
5
Save
Click Save
Part 2: Apple Developer Console
Enable Sign in with Apple Capability
1
Open your App ID
Go to developer.apple.com/account/resources/identifiersClick on your app’s identifier (e.g.,
com.yourcompany.yourapp)2
Enable the capability
Scroll down to CapabilitiesCheck the box next to Sign in with AppleClick Save
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)
'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
Next Steps
Google OAuth
Add Google sign-in (remember: requires Apple Sign In too)
Email + Password
Add traditional email authentication