Setup Issues
yarn install Fails
Environment Variables Not Loading
.envmust be inapps/app/directory- Variables must start with
EXPO_PUBLIC_ - Restart Metro with cache clear:
Metro Bundler
Metro Won’t Start
”Unable to resolve module”
Checkapps/app/tsconfig.json has correct path mappings:
yarn app:start --clear
iOS Issues
Simulator Won’t Launch
”Command PhaseScriptExecution failed”
White Screen
Check console for JavaScript errors. Addconsole.log in App.tsx to debug.
Android Issues
Java Version Error
If you see an error like:25.0.1 is your Java version, not a React Native version.
Solution: Use Java 17 (LTS):
SDK Location Not Found
apps/app/android/local.properties:
Gradle Build Fails
EAS Build Issues
Yarn 4.x / Corepack Errors
If EAS Build fails with errors like:EEXIST: file already existsETARGET No matching version found for yarn@4.9.1Usage Error: This project is configured to use yarnversion mismatch
.yarn/releases/, bypassing the corepack/npm conflict.
If you’re on an older version, upgrade by pulling the latest changes:
Runtime Errors
Navigation Errors
- Screen must be registered in
app/navigators/ - Screen names are case-sensitive
- Check navigator nesting
”Maximum update depth exceeded”
Infinite re-render loop. Don’t callsetState in render:
Authentication Loop
- Check auth state persistence in
useAuthStore - Don’t navigate in render functions - use
useEffect
Social Login & Magic Link Issues
| Issue | Solution |
|---|---|
| No redirect after OAuth login | Add [scheme]://auth/callback to Supabase URL Configuration |
| Magic link redirects to wrong URL | Add http://localhost:3000/auth/callback (Vite) or http://localhost:19006/auth/callback (Expo web) to Supabase URL Configuration |
| Nonce error with Google | Disable “Skip Nonce Check” in Supabase Auth → Google |
| iOS Google not working | Set EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID and rebuild |
Deep Linking
Testing Deep Links on iOS Simulator
Info.plist - look for CFBundleURLSchemes.
Deep Link Not Working
-
Verify the scheme in
app.json: -
Check you’re using the correct prefix:
- Dev build:
exp+yourscheme:// - Prod build:
yourscheme://
- Dev build:
-
Ensure the path is configured in your navigation:
- Check
apps/app/app/navigators/linking.ts
- Check
RevenueCat / Payments
”Invalid API Key” Error
If you see[RevenueCat] There was a credentials issue. Invalid API Key.:
Cause: Your .env has placeholder values like EXPO_PUBLIC_REVENUECAT_IOS_KEY=your-ios-key. These trigger the SDK with invalid credentials instead of mock mode.
Solution: Use empty values for mock mode:
The app now auto-detects placeholder values (starting with
your-) and falls back to mock mode.StoreKit “No Active Account” (iOS Simulator)
These errors are expected and harmless:Purchase Fails
- Verify API keys in
apps/app/.env - Check products are configured in RevenueCat dashboard
- Use sandbox/test accounts
Performance
Slow List Scrolling
useCallback for renderItem and React.memo for list items.
Development Tools
TypeScript Not Working in VS Code
Cmd+Shift+P→ “TypeScript: Restart TS Server”- Ensure using workspace TypeScript version
- Reload window if needed
Hot Reload Not Working
Supabase Issues
Profile 404 Errors After Signup
If you see 404 errors in the browser console when fetching profile data after signup:-
Verify database schema is applied
Or run the schema manually in SQL Editor
- Check RLS policies - Ensure users can read their own profiles
-
Verify the trigger is working - The
handle_new_user()function should auto-create profiles - Configure redirect URLs - Set to correct port (8081 for Expo, not 3000) in Supabase Dashboard → Authentication → URL Configuration
supabase/TROUBLESHOOTING.md in your project for detailed solutions.
TypeScript Errors with React Native
If you see errors like:- Ensure
tsconfig.jsonhaslib: ["esnext"](no “dom”) - Ensure
types: ["jest"](no “node”) - Remove
typeRootsif present
Migration Errors
If migrations fail with “already exists” errors:Vercel Deployment Issues
Missing Environment Variables on Vercel
If your Vercel deployment fails with:app.config.ts includes an extra section that passes environment variables through to Constants.expoConfig.extra for web builds.
If you’re on an older boilerplate version, see Web Deployment → Troubleshooting for the fix.
Getting Help
- Expo Documentation
- Shipnative GitHub Issues
- Check Sentry dashboard for production errors

