Skip to main content

Setup Issues

yarn install Fails

Environment Variables Not Loading

  1. .env must be in apps/app/ directory
  2. Variables must start with EXPO_PUBLIC_
  3. Restart Metro with cache clear:

Metro Bundler

Metro Won’t Start

”Unable to resolve module”

Check apps/app/tsconfig.json has correct path mappings:
Then clear Metro cache: yarn app:start --clear

iOS Issues

Simulator Won’t Launch

”Command PhaseScriptExecution failed”

White Screen

Check console for JavaScript errors. Add console.log in App.tsx to debug.

Android Issues

Java Version Error

If you see an error like:
Cause: Java 25 is too new. The 25.0.1 is your Java version, not a React Native version. Solution: Use Java 17 (LTS):
Install Java 17 via Homebrew: brew install --cask temurin@17

SDK Location Not Found

Or create 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 exists
  • ETARGET No matching version found for yarn@4.9.1
  • Usage Error: This project is configured to use yarn version mismatch
This is already fixed in the boilerplate. Shipnative bundles Yarn 4.x directly in .yarn/releases/, bypassing the corepack/npm conflict. If you’re on an older version, upgrade by pulling the latest changes:
Do NOT use corepack: true or yarn: "4.x.x" in eas.json. The bundled yarn approach handles everything automatically.

Runtime 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 call setState in render:

Authentication Loop

  • Check auth state persistence in useAuthStore
  • Don’t navigate in render functions - use useEffect


Deep Linking

Dev vs Production URL schemes are different!Expo development builds register exp+<scheme> as the URL scheme, not just <scheme>.
To verify which scheme your app is using, check the built app’s Info.plist - look for CFBundleURLSchemes.
  1. Verify the scheme in app.json:
  2. Check you’re using the correct prefix:
    • Dev build: exp+yourscheme://
    • Prod build: yourscheme://
  3. Ensure the path is configured in your navigation:
    • Check apps/app/app/navigators/linking.ts

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:
The simulator has no Apple ID. Purchases still work - you’ll sign in with a sandbox account when testing.

Purchase Fails

  1. Verify API keys in apps/app/.env
  2. Check products are configured in RevenueCat dashboard
  3. Use sandbox/test accounts

Performance

Slow List Scrolling

Use useCallback for renderItem and React.memo for list items.

Development Tools

TypeScript Not Working in VS Code

  1. Cmd+Shift+P → “TypeScript: Restart TS Server”
  2. Ensure using workspace TypeScript version
  3. 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:
This is usually expected and handled gracefully by the app. The profile creation trigger may not have completed yet. If the errors persist:
  1. Verify database schema is applied
    Or run the schema manually in SQL Editor
  2. Check RLS policies - Ensure users can read their own profiles
  3. Verify the trigger is working - The handle_new_user() function should auto-create profiles
  4. Configure redirect URLs - Set to correct port (8081 for Expo, not 3000) in Supabase Dashboard → Authentication → URL Configuration
See supabase/TROUBLESHOOTING.md in your project for detailed solutions.

TypeScript Errors with React Native

If you see errors like:
This is already fixed in the boilerplate. If you encounter it:
  • Ensure tsconfig.json has lib: ["esnext"] (no “dom”)
  • Ensure types: ["jest"] (no “node”)
  • Remove typeRoots if present

Migration Errors

If migrations fail with “already exists” errors:

Vercel Deployment Issues

Missing Environment Variables on Vercel

If your Vercel deployment fails with:
This is already fixed in the boilerplate. The 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

  1. Expo Documentation
  2. Shipnative GitHub Issues
  3. Check Sentry dashboard for production errors
Debug tip: