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:
- App Functionality: The app uses Google Sheets API to fetch campsite data (pins) and Google Maps API to display them on a map.
- 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.
- When running the app locally using
- TestFlight Builds (Rejected):
- All attempts to upload builds via EAS Build (profile
preview
withautoIncrement: true
ineas.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 build8
for version1.0.0
, even afterapp.config.js
andeas.json
changes to increment. The latest successful upload was1.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.
- All attempts to upload builds via EAS Build (profile
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
(usingprocess.env
) andlaunch.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
) andios.buildNumber
(8
,9
,10
,11
,100
,200
) increments. - Ensured
eas.json
hasautoIncrement: true
forpreview
profile andcli.appVersionSource
removed. - Updated
eas-cli
to@latest
. - Updated all
expo
andreact-native
related dependencies usingnpx 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:
- 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?
- Is it possible that TestFlight's internal bundle ID or network environment is somehow conflicting with Google API access even with no restrictions?
- Why does App Store Connect consistently report the
cfBundleVersion
as "8" (or a small number) and reject on version conflicts, despiteapp.config.js
andeas.json
being configured for auto-incrementing/higherbuildNumber
? Is there a deeper cache or project state issue on Apple's side that prevents correct versioning? - 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?
- 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
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).