Apple Authentication
Learn how to configure Sign in with Apple for your VibeFast stack.
Apple Developer Setup
-
Sign in to the Apple Developer portal
-
Get your Team ID (we'll need it later)

-
Go to Certificates list. Check if your bundle ID already exists (EAS builds create it automatically).
-
If not, click +, select App ID, keep type as App, and create it. Bundle ID must match your code (check
/apps/native/env.js).

-
Enable Push Notifications and Sign in with Apple

-
Create a Service ID: Choose Service IDs from dropdown, click +

- Use an identifier similar to your bundle ID. Click continue and save this Service ID.

- Use an identifier similar to your bundle ID. Click continue and save this Service ID.
-
After creating the service ID, From Service IDs list, click the service ID you created just now

-
Select the App ID from this dropdown (that was created in step 4)

-
Add your Convex URLs (dev and production) from Convex Dashboard → Settings → URL & Deploy Key

-
Set the Service ID:
cd packages/backend
npx convex env set AUTH_APPLE_ID YOUR_SERVICE_ID_HERE
-
Click continue

-
Go to Keys section, click +

-
Check Sign in with Apple, click Configure

-
Select your App ID

-
Click Download to get the .p8 file

-
Go to Convex Apple OAuth docs and use the secret generator (this secret generator convex works for Convex and Supabase both, its platform agnostic step):
- Enter your Team ID (step 2)
- Enter Service ID (step 6)
- Upload the .p8 file
- Click Generate secret key

- Set the secret:
cd packages/backend/convex
npx convex env set AUTH_APPLE_SECRET GENERATED_SECRET_KEY_HERE-
In Supabase Dashboard, go to Authentication > Providers > Apple
-
Click on Apple in providers list, enter your Service ID (from step 6) as the Client ID and Enter the secret generated in step 14 in secret key field.

Test Your Setup
Run your Expo app on a real device. The "Sign in with Apple" button should trigger the native Apple sign-in sheet and return a valid session.
This part of docs took tooooo much effort I hope it helps alot :)
Found an issue or bug in the docs?
Help me improve! If you spot any errors, typos, or have suggestions, please let me know.
Reach out on X/Twitter @zafarbuildzz