Find complete deployment steps in your project Building Your App
OpenRouter Setup
Before deploying, you need to set up the AI proxy through Supabase Edge Functions. This keeps your API keys secure on the server.1
Step 5: Generate OpenRouter API Key
Sign up or sign in to OpenRouter:
- Create your first project
- Generate your API key
This is a private key. We will deploy it directly to our Supabase Edge Function and never bundle it with our app or push it to git.
2
Step 8: Set OpenRouter Key as Supabase Secret
Set your OpenRouter key as a Supabase secret:This keeps your API key secure on the server side.
3
Step 9: Deploy AI Edge Function
Deploy the AI Edge Function to Supabase:The boilerplate includes a ready-to-deploy Edge Function that handles all AI API calls securely.
4
Step 10: Verify Deployment
Verify your function is deployed:
- Go to Supabase Dashboard → Edge Functions
- See your
aifunction listed - Note down the function URL
5
Step 11: Update PROXY_BASEURL
Open Then run the update script:
Config/Secrets.xcconfig in Xcode and update:Deployment Phases
1
Pre-Deployment
- Run full test suite
- Fix all linter warnings
- Test on real devices
- Update legal documents
2
TestFlight Beta
- Archive build
- Upload to App Store Connect
- Add internal testers
- Gather feedback
3
App Store Submission
- Prepare metadata
- Create screenshots
- Submit for review
- Monitor status
4
Production Launch
- Configure production backends
- Monitor crashes
- Respond to reviews
- Plan updates
Pre-Deployment Checklist
Code Quality
Code Quality
- All tests pass (⌘U)
- No warnings in build
- Tested on real device
- Performance is smooth
- No crashes in common flows
Configuration
Configuration
- Real backends configured (not mock)
- API keys in
Config/Secrets.xcconfig - Bundle ID matches App Store Connect
- Version number set (e.g., 1.0.0)
- Build number set (start at 1)
Legal
Legal
- Privacy policy updated
- Terms of service updated
- Subscription terms updated
- Privacy policy URL works
- Terms URL works
Assets
Assets
- App icon (1024×1024)
- Screenshots for all sizes
- App description written
- Keywords added
- Support URL set
TestFlight Deployment
1. Archive Build
2. Validate Archive
3. Upload to App Store
4. Add Testers
Internal Testers (up to 100):- App Store Connect → TestFlight → Internal Testing
- Add team members
- They receive email invite
- Install via TestFlight app
- Create group: “Beta Testers”
- Add email addresses
- Requires beta review (1-2 days)
- Public link available
5. Test Thoroughly
- Sign up flow
- Chat functionality
- Subscription purchases (sandbox)
- Settings and preferences
- Performance on various devices
App Store Submission
1. Prepare Metadata
In App Store Connect:2. Create Screenshots
Required sizes:- 6.7” (iPhone 15 Pro Max): 1290 × 2796
- 6.5” (older Pro Max): 1284 × 2778
- 5.5” (older Plus): 1242 × 2208
- 12.9” iPad Pro: 2048 × 2732 (if supporting iPad)
- 4-10 screenshots per size
- Show key features
- Add text overlays
- First screenshot most important
3. Write Description
Template:4. Configure App Privacy
Answer privacy questionnaire: Data collected:- Contact Info: Email (for account)
- Identifiers: User ID (for backend)
- Usage Data: App interactions (if analytics)
- User Content: Chat messages
5. Submit for Review
Production Configuration
Backend Setup
- Supabase
- RevenueCat
- OpenRouter
- Use production Supabase project
- Verify Edge Function deployed (
supabase functions deploy ai) - Set production OpenRouter key (
supabase secrets set OPENROUTER_API_KEY=...) - Monitor API usage in Supabase dashboard
Final Verification
Post-Launch
Monitor
- Crashlytics dashboard (if enabled)
- App Store Connect analytics
- RevenueCat subscription metrics
- Supabase API usage
- User reviews and ratings
Respond
- Reply to user reviews
- Fix critical bugs immediately
- Plan feature updates
- Gather user feedback
Update Regularly
Recommended cadence:- Bug fixes: As needed (1-3 days)
- Minor updates: Every 2-4 weeks
- Major features: Every 2-3 months
Complete Guide
View Complete Launch Checklist
Find complete deployment checklist in your project
Related Resources
Testing Guide
Run full test suite
Supabase Setup
Production backend
RevenueCat Setup
Production subscriptions
Building Guide
Complete customization
Troubleshooting
Archive fails
Archive fails
- Clean build (⌘⇧K)
- Check signing certificates
- Verify provisioning profiles
- Update Xcode if needed
App rejected
App rejected
- Read rejection carefully
- Fix specific issues mentioned
- Update metadata if needed
- Resubmit with explanation
Crashes in production
Crashes in production
- Check Crashlytics logs
- Reproduce locally
- Fix and submit hotfix
- Expedited review if critical
