iOS TestFlight Build constantly rejected with "App failed to load content" (Guideline 2.1) despite API key restriction removed

Hello Apple Developer Community,

I am facing a persistent issue with my iOS TestFlight builds that keeps getting rejected for Guideline 2.1 - Performance - App Completeness, specifically "Your app failed to load any content at launch." (blank white screen).

My app is "With Wans Camp Map" (App ID: com.jiro.withwanscampmap).

Here's a summary of the situation:

  1. App Functionality: The app uses Google Sheets API to fetch campsite data (pins) and Google Maps API to display them on a map.
  2. Local Development (Expo Go):
    • When running the app locally using npx expo start and connecting with the Expo Go app, and with the Google Cloud Platform (GCP) API key "Application restrictions" set to "None (no restriction)", the app loads successfully and displays all pins correctly. This confirms the API keys themselves and the data fetching logic are working.
  3. TestFlight Builds (Rejected):
    • All attempts to upload builds via EAS Build (profile preview with autoIncrement: true in eas.json) and Transporter have resulted in rejection with the same Guideline 2.1 reason ("blank white screen").
    • Builds submitted: e.g., 1.0.0 (8), 1.0.0 (9), 1.0.0 (10). (Transporter always insists on build 8 for version 1.0.0, even after app.config.js and eas.json changes to increment. The latest successful upload was 1.0.0 (10).)
    • Crucially, even with the GCP API key "Application restrictions" set to "None (no restriction)" (which should allow any client application), TestFlight builds are still rejected for the blank white screen.

What I've already tried:

  • Verified Google Sheets/Maps API keys are correct in GCP.
  • Confirmed API keys are correctly passed from app.config.js (using process.env) and launch.json for local development.
  • Set GCP API key "Application restrictions" to "None".
  • Attempted various app.config.js version (1.0.0, 1.0.1, 1.0.2) and ios.buildNumber (8, 9, 10, 11, 100, 200) increments.
  • Ensured eas.json has autoIncrement: true for preview profile and cli.appVersionSource removed.
  • Updated eas-cli to @latest.
  • Updated all expo and react-native related dependencies using npx expo install --check.
  • Cleared npm cache and EAS build cache (--clear-cache).
  • Rebuilt native projects with npx expo prebuild --clean (though not yet built after this specific step, as I'm writing this post).
  • Confirmed iPhone connectivity to Mac for .ipa transfer.

My main questions are:

  1. Given that API key restrictions are set to "None", what could still cause the app to fail loading content specifically in the TestFlight review environment?
  2. Is it possible that TestFlight's internal bundle ID or network environment is somehow conflicting with Google API access even with no restrictions?
  3. Why does App Store Connect consistently report the cfBundleVersion as "8" (or a small number) and reject on version conflicts, despite app.config.js and eas.json being configured for auto-incrementing/higher buildNumber? Is there a deeper cache or project state issue on Apple's side that prevents correct versioning?
  4. Are there any specific logs (e.g., console logs from the review device) that can be provided from the App Review team to help debug this "blank white screen" issue?
  5. What is the recommended approach to debug content loading issues in TestFlight builds when local Expo Go development works perfectly?

Any insights or suggestions from Apple engineers or experienced developers in the community would be greatly appreciated. I am truly struggling with this persistent rejection.

Thank you for your time and assistance.

Best regards, Jiro26

Answered by DTS Engineer in 848315022

Try testing your app without networking turned off, with cellular, and other networks. If a networking operation fails, make sure to put up some sort of informational message and directions instead of a blank white screen so the user can know what is going on (and if appropriate, what to try to remedy the situation).

Try testing your app without networking turned off, with cellular, and other networks. If a networking operation fails, make sure to put up some sort of informational message and directions instead of a blank white screen so the user can know what is going on (and if appropriate, what to try to remedy the situation).

iOS TestFlight Build constantly rejected with "App failed to load content" (Guideline 2.1) despite API key restriction removed
 
 
Q