[🐛] Can't display even test ads in iOS app
#868 opened on Jul 22, 2026
Repository metrics
- Stars
- (1,010 stars)
- PR merge metrics
- (PR metrics pending)
Description
What happened?
I am experiencing a persistent issue where I cannot load any ads (Test IDs) Like Intersisal, Banner, Reward and AppOpen Ads. From Three days Testing Only one time I see the Banner Ad is Load(see the attached image). Every ad request returns the [googleMobileAds/no-fill] Request Error: No ad to show. error. Furthermore, when I initialize the SDK using mobileAds().initialize(), it shows a "Ready" State.
The strangest part is that test ads were working perfectly fine on Android app. but iOS app test ads completely stopped working. and shows the error logs in the Xcode.
https://github.com/user-attachments/assets/72d63da3-ce14-49d7-b641-38d78d21369c
Framework: React-native CLI
Expected Behavior: Test IDs should always return a fill regardless of the AdMob account status.
Actual Behavior:
The initialize() method logs the following error: [{"description": "<GADAdapterStatus: 0x105304e40; state = Ready>", "name": "GADMobileAds", "state": 1}]
Ad requests immediately fail with No ad to show.
Despite sending hundreds of test requests daily from the device, the AdMob dashboard shows exactly 0 requests. The requests do not seem to be reaching Google's servers at all due to the SDK failing to initialize properly.
Additional Context & Troubleshooting Done:
The app is Approved and "Ready" on the AdMob dashboard.
I am absolutely sure my iosAppId and androidAppId in app.json are correct and use the ~ format, not the / ad unit format.
ATT (App Tracking Transparency) is implemented and granted (status: granted).
This issue has been persisting for the last 3 days without any change.
Why does this block even for TestIds? Any guidance or fix would be deeply appreciated.
i am using react-native cli
Platforms
Only on iOS
React Native Info
warn Package react-native-sqlite-storage contains invalid configuration: "dependency.platforms.ios.project" is not allowed. Please verify it's properly linked using "npx react-native config" command and contact the package maintainers about this.
info Fetching system and libraries information...
System:
OS: macOS 15.7.4
CPU: (8) arm64 Apple M1
Memory: 106.94 MB / 8.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.23.0
path: /Users/sandeepkumar/.nvm/versions/node/v22.23.0/bin/node
Yarn: Not Found
npm:
version: 10.9.8
path: /Users/sandeepkumar/.nvm/versions/node/v22.23.0/bin/npm
Watchman:
version: 2024.12.02.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 25.0
- iOS 26.0
- macOS 26.0
- tvOS 26.0
- visionOS 26.0
- watchOS 26.0
Android SDK:
API Levels:
- "23"
- "25"
- "28"
- "29"
- "30"
- "31"
- "33"
- "34"
- "35"
- "36"
Build Tools:
- 30.0.2
- 30.0.3
- 31.0.0
- 33.0.0
- 33.0.0
- 33.0.1
- 34.0.0
- 35.0.0
- 35.0.1
- 36.0.0
- 36.1.0
- 37.0.0
System Images:
- android-31 | Intel x86_64 Atom
- android-31 | Google APIs ARM 64 v8a
- android-31 | Google Play Intel x86 Atom_64
- android-34-ext11 | Google Play ARM 64 v8a
- android-34 | ARM 64 v8a
- android-34 | Google APIs ARM 64 v8a
- android-34 | Google Play ARM 64 v8a
- android-35-ext15 | Google Play ARM 64 v8a
- android-35-ext15 | Google Play Intel x86_64 Atom
- android-35 | ARM 64 v8a
- android-35 | Google APIs ARM 64 v8a
- android-35 | Google Play ARM 64 v8a
- android-35 | Google Play Intel x86_64 Atom
- android-35 | Pre-Release 16 KB Page Size Google Play ARM 64 v8a
- android-35 | Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom
- android-35 | Pre-Release 16 KB Page Size Google APIs ARM 64 v8a
- android-36 | Google APIs ARM 64 v8a
- android-36 | Google Play ARM 64 v8a
Android NDK: Not Found
IDEs:
Android Studio: Not Found
Xcode:
version: 26.0.1/17A400
path: /usr/bin/xcodebuild
Languages:
Java:
version: 17.0.18
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.1.3
wanted: ^20.0.0
react:
installed: 19.2.0
wanted: 19.2.0
react-native:
installed: 0.83.4
wanted: ^0.83.1
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
info React Native v0.86.0 is now available (your project is running on v0.83.4).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.86.0
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.83.4&to=0.86.0
info For more info, check out "https://reactnative.dev/docs/upgrading?os=macos".
Are your using Typescript?
- My project is using Typescript
package.json
{
"name": "MyAppName",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios --simulator=\"iPhone 15 Pro\"",
"ios-device": "react-native run-ios",
"lint": "eslint .",
"lint:fix": "eslint --fix .",
"start": "react-native start",
"test": "jest",
"postinstall": "patch-package && copy-files-from-to",
"prepare": "husky",
"check-dependencies": "rnx-align-deps",
"fix-dependencies": "rnx-align-deps --write",
"android-windows": "npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android",
"build:ios": "react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'",
"new-build:ios": "npx react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios --reset-cache"
},
"dependencies": {
"@iternio/react-native-tts": "^5.0.0",
"@react-native-async-storage/async-storage": "^2.2.0",
"@react-native-community/netinfo": "^11.3.3",
"@react-native-community/push-notification-ios": "^1.11.0",
"@react-native-masked-view/masked-view": "^0.3.0",
"@react-native-picker/picker": "^2.11.4",
"@react-native/new-app-screen": "0.83.1",
"@react-navigation/drawer": "^7.5.8",
"@react-navigation/native": "^7.1.14",
"@react-navigation/stack": "^7.4.2",
"@types/react-native-sqlite-storage": "^6.0.5",
"advanced-html-parser": "^1.1.0",
"lodash.debounce": "^4.0.8",
"patch-package": "^8.0.0",
"postinstall-postinstall": "^2.1.0",
"react": "19.2.0",
"react-native": "^0.83.1",
"react-native-ad-consent": "^5.3.0",
"react-native-cn-quill": "^0.7.20",
"react-native-date-picker": "^5.0.12",
"react-native-device-info": "^15.0.2",
"react-native-fs": "^2.18.0",
"react-native-gesture-handler": "^2.30.0",
"react-native-google-mobile-ads": "^14.11.0",
"react-native-iap": "^14.7.19",
"react-native-nitro-modules": "^0.35.2",
"react-native-permissions": "^4.1.5",
"react-native-picker-select": "^9.3.1",
"react-native-push-notification": "^8.1.1",
"react-native-rate": "^1.2.12",
"react-native-reanimated": "^4.2.2",
"react-native-rename": "^3.2.14",
"react-native-render-html": "^6.1.0",
"react-native-safe-area-context": "^5.6.0",
"react-native-screens": "^4.19.0",
"react-native-sqlite-storage": "^6.0.1",
"react-native-svg": "^15.15.1",
"react-native-vector-icons": "^10.3.0",
"react-native-webview": "^13.14.1",
"react-native-worklets": "^0.7.4"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0",
"@react-native-community/cli": "^20.0.0",
"@react-native-community/cli-platform-android": "^20.0.0",
"@react-native-community/cli-platform-ios": "^20.0.0",
"@react-native/babel-preset": "^0.83.1",
"@react-native/eslint-config": "0.83.1",
"@react-native/metro-config": "^0.83.1",
"@react-native/typescript-config": "0.83.1",
"@rnx-kit/align-deps": "^3.4.2",
"@types/jest": "^29.5.13",
"@types/lodash.debounce": "^4.0.9",
"@types/react": "^19.2.0",
"@types/react-native-vector-icons": "^6.4.18",
"@types/react-test-renderer": "^19.1.0",
"copy-files-from-to": "^4.0.0",
"eslint": "^8.19.0",
"husky": "^9.0.11",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "19.2.0",
"typescript": "^5.8.3"
},
"copyFiles": [
{
"from": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@1x.ios.png",
"to": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@1x.png"
},
{
"from": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@2x.ios.png",
"to": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@2x.png"
},
{
"from": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@3x.ios.png",
"to": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@3x.png"
},
{
"from": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@4x.ios.png",
"to": "node_modules/@react-navigation/elements/lib/module/assets/back-icon@4x.png"
},
{
"from": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@1x.ios.png",
"to": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@1x.png"
},
{
"from": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@2x.ios.png",
"to": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@2x.png"
},
{
"from": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@3x.ios.png",
"to": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@3x.png"
},
{
"from": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@4x.ios.png",
"to": "node_modules/@react-navigation/drawer/lib/module/views/assets/toggle-drawer-icon@4x.png"
}
],
"engines": {
"node": ">=20"
},
}
app.json
{
"name": "MyAppName",
"displayName": "MyAppName",
"react-native-google-mobile-ads": {
"ios_app_id": "ca-app-pub-x1x10x5x71x82x83~4x41x9X0x4",
"android_app_id": "ca-app-pub-x1x10x5x71x82x83~7x67x6x4x6",
"user_tracking_usage_description": "This identifier will be used to deliver personalized ads to you.",
"sk_ad_network_items": [
"cstr6suwn9.skadnetwork",
"4fzdc2evr5.skadnetwork",
"4pfyvq9l8r.skadnetwork",
"2fnua5tdw4.skadnetwork",
"ydx93a7ass.skadnetwork",
"5a6flpkh64.skadnetwork",
"p78axxw29g.skadnetwork",
"v72qych5uu.skadnetwork",
"ludvb6z3bs.skadnetwork",
"cp8zw746q7.skadnetwork",
"c6k4g5qg8m.skadnetwork",
"s39g8k73mm.skadnetwork",
"3qy4746246.skadnetwork",
"3sh42y64q3.skadnetwork",
"f38h382jlk.skadnetwork",
"hs6bdukanm.skadnetwork",
"v4nxqhlyqp.skadnetwork",
"wzmmz9fp6w.skadnetwork",
"yclnxrl5pm.skadnetwork",
"t38b2kh725.skadnetwork",
"7ug5zh24hu.skadnetwork",
"9rd848q2bz.skadnetwork",
"y5ghdn5j9k.skadnetwork",
"n6fk4nfna4.skadnetwork",
"v9wttpbfk9.skadnetwork",
"n38lu8286q.skadnetwork",
"47vhws6wlr.skadnetwork",
"kbd757ywx3.skadnetwork",
"9t245vhmpl.skadnetwork",
"a2p9lx4jpn.skadnetwork",
"22mmun2rn5.skadnetwork",
"4468km3ulz.skadnetwork",
"2u9pt9hc89.skadnetwork",
"8s468mfl3y.skadnetwork",
"av6w8kgt66.skadnetwork",
"klf5c3l5u5.skadnetwork",
"ppxm28t8ap.skadnetwork",
"424m5254lk.skadnetwork",
"ecpz2srf59.skadnetwork",
"uw77j35x4d.skadnetwork",
"mlmmfzh3r3.skadnetwork",
"578prtvx9j.skadnetwork",
"4dzt52r2t5.skadnetwork",
"gta9lk7p23.skadnetwork",
"e5fvkxwrpn.skadnetwork",
"8c4e2ghe7u.skadnetwork",
"zq492l623r.skadnetwork",
"3rd42ekr43.skadnetwork",
"3qcr597p9d.skadnetwork"
]
}
}
ios/Podfile
For the officially supported 12.2.0 baseline, no SDK override is present. CocoaPods resolves:
Google-Mobile-Ads-SDK (12.2.0)
RNGoogleMobileAds (14.11.0)
# Resolve react_native_pods.rb with node to allow for hoisting
def node_require(script)
# Resolve script with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
"require.resolve(
'#{script}',
{paths: [process.argv[1]]},
)", __dir__]).strip
end
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')
platform :ios, min_ios_version_supported
prepare_react_native_project!
setup_permissions([
'AppTrackingTransparency',
# 'Bluetooth',
# 'Calendars',
# 'CalendarsWriteOnly',
# 'Camera',
# 'Contacts',
# 'FaceID',
# 'LocationAccuracy',
# 'LocationAlways',
# 'LocationWhenInUse',
# 'MediaLibrary',
# 'Microphone',
# 'Motion',
'Notifications',
# 'PhotoLibrary',
# 'PhotoLibraryAddOnly',
# 'Reminders',
# 'Siri',
# 'SpeechRecognition',
# 'StoreKit',
])
linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
use_frameworks! :linkage => linkage.to_sym
end
# pre_install do |installer|
# installer.pod_targets.each do |pod|
# if pod.name == 'glog'
# puts "🔧 Patching glog for Xcode 26..."
# def pod.build_type;
# Pod::BuildType.static_library
# end
# end
# end
# end
target 'MyAppName' do
config = use_native_modules!
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => false,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
post_install do |installer|
# installer.pods_project.targets.each do |target|
# if target.name == 'glog'
# # target.shell_script_build_phases.each do |phase|
# # if phase.name.include?("Configure")
# # phase.shell_script = "echo 'Skipping glog configure step for Xcode 26'"
# # end
# # end
# puts "🔧 Applying glog Xcode 26 fixes..."
# target.build_configurations.each do |config|
# # Disable problematic features
# config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
# '$(inherited)',
# 'HAVE_LIB_GFLAGS=0',
# 'NO_THREADS=1'
# ]
# # Fix Apple Silicon + new SDK
# config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17'
# config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++'
# # Prevent architecture issues
# config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
# end
# # 🔥 MOST IMPORTANT: disable configure script
# target.shell_script_build_phases.each do |phase|
# if phase.name.include?("Configure")
# phase.shell_script = "echo 'Skipping glog configure step (Xcode 26 fix)'"
# end
# end
# end
# end
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
# :ccache_enabled => true
)
end
end
android/build.gradle
android/app/build.gradle
android/settings.gradle
AndroidManifest.xml