-
-
Notifications
You must be signed in to change notification settings - Fork 201
Open
Labels
Description
What happened?
Hi π
Iβm seeing a strange behavior with interstitial ads on iOS:
- On iOS simulator β interstitial loads and closes correctly
- On physical iOS devices β tapping the β close button does nothing
- The ad remains visible and the
AdEventType.CLOSEDevent is NEVER fired - This happens even when using TestIds.INTERSTITIAL
There is no overlay in my UI, I also tried hiding the StatusBar during the ad, and tested with a minimal debug screen (no navigation logic). Still reproducible.
This makes the interstitial impossible to dismiss on iOS devices.
Platforms
iOS, but have not tested behavior on Android
React Native Info
info Fetching system and libraries information...
System:
OS: macOS 15.5
CPU: (11) arm64 Apple M3 Pro
Memory: 139.55 MB / 18.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 22.12.0
path: ~/.nvm/versions/node/v22.12.0/bin/node
Yarn:
version: 1.22.22
path: ~/.nvm/versions/node/v22.12.0/bin/yarn
npm:
version: 11.6.4
path: ~/.nvm/versions/node/v22.12.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 24.2
- iOS 18.2
- macOS 15.2
- tvOS 18.2
- visionOS 2.2
- watchOS 11.2
Android SDK: Not Found
IDEs:
Android Studio: 2024.3 AI-243.25659.59.2432.13423653
Xcode:
version: 16.2/16C5032a
path: /usr/bin/xcodebuild
Languages:
Java:
version: 21.0.3
path: /usr/bin/javac
Ruby:
version: 2.6.10
path: /usr/bin/ruby
npmPackages:
"@react-native-community/cli":
installed: 20.0.2
wanted: latest
react:
installed: 19.1.0
wanted: 19.1.0
react-native:
installed: 0.81.5
wanted: 0.81.5
react-native-macos: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: true
newArchEnabled: true
info React Native v0.83.0 is now available (your project is running on v0.81.5).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.83.0
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.81.5&to=0.83.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": "blockout",
"main": "expo-router/entry",
"version": "1.0.0",
"scripts": {
"start": "expo start",
"reset-project": "node ./scripts/reset-project.js",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"test": "jest --watchAll",
"lint": "expo lint"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"@expo/metro-runtime": "~6.1.2",
"@expo/vector-icons": "^15.0.2",
"@gorhom/bottom-sheet": "^5.2.3",
"@legendapp/list": "^2.0.9",
"@react-native-picker/picker": "2.11.1",
"@react-navigation/bottom-tabs": "^7.0.0",
"@react-navigation/drawer": "^7.0.0",
"@react-navigation/native": "^7.0.14",
"@shopify/flash-list": "2.0.2",
"@tanstack/react-query": "^5.62.8",
"@types/qs": "^6.14.0",
"@types/tinycolor2": "^1.4.6",
"axios": "^1.9.0",
"axios-case-converter": "^1.1.1",
"axios-retry": "^4.5.0",
"camelcase-keys": "^9.1.3",
"date-fns": "^4.1.0",
"expo": "~54.0.25",
"expo-application": "~7.0.7",
"expo-blur": "~15.0.7",
"expo-build-properties": "~1.0.9",
"expo-clipboard": "~8.0.7",
"expo-constants": "~18.0.9",
"expo-dev-client": "~6.0.18",
"expo-device": "~8.0.9",
"expo-font": "~14.0.8",
"expo-haptics": "~15.0.7",
"expo-image": "~3.0.10",
"expo-image-manipulator": "~14.0.7",
"expo-image-picker": "~17.0.8",
"expo-linear-gradient": "~15.0.7",
"expo-linking": "~8.0.9",
"expo-navigation-bar": "~5.0.9",
"expo-notifications": "~0.32.13",
"expo-router": "~6.0.15",
"expo-secure-store": "~15.0.7",
"expo-splash-screen": "~31.0.11",
"expo-status-bar": "~3.0.8",
"expo-symbols": "~1.0.7",
"expo-system-ui": "~6.0.8",
"expo-tracking-transparency": "~6.0.8",
"expo-updates": "~29.0.13",
"expo-web-browser": "~15.0.9",
"formik": "^2.4.6",
"jest-expo": "~54.0.13",
"lucide-react-native": "^0.525.0",
"moti": "^0.30.0",
"qs": "^6.14.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-native": "0.81.5",
"react-native-auth0": "^5.2.1",
"react-native-edge-to-edge": "^1.7.0",
"react-native-gesture-handler": "~2.28.0",
"react-native-google-mobile-ads": "^15.8.3",
"react-native-linear-gradient": "^2.8.3",
"react-native-markdown-display": "^7.0.2",
"react-native-pager-view": "6.9.1",
"react-native-paper": "^5.14.5",
"react-native-reanimated": "~4.1.1",
"react-native-safe-area-context": "~5.6.0",
"react-native-screens": "~4.16.0",
"react-native-svg": "15.12.1",
"react-native-tab-view": "^4.0.5",
"react-native-web": "^0.21.0",
"react-native-webview": "13.15.0",
"react-native-worklets": "0.5.1",
"reanimated-color-picker": "^4.1.1",
"snakecase-keys": "^8.0.1",
"tinycolor2": "^1.6.0",
"twrnc": "^4.6.1",
"use-debounce": "^10.0.4",
"yup": "^1.6.1",
"zustand": "^5.0.8"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@react-native-community/cli": "latest",
"@testing-library/dom": "^10.4.1",
"@testing-library/react": "^16.3.0",
"@types/jest": "^29.5.12",
"@types/react": "~19.1.10",
"@types/react-dom": "^19.1.7",
"jest": "^29.2.1",
"typescript": "~5.9.2"
},
"private": true
}app.json
{
"expo": {
"name": "Blockout",
"slug": "blockoutproject",
"scheme": [
"blockout"
],
"version": "1.2.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"userInterfaceStyle": "automatic",
"ios": {
"supportsTablet": false,
"bundleIdentifier": "com.blockoutproject.blockout",
"infoPlist": {
"ITSAppUsesNonExemptEncryption": false
},
"entitlements": {
"com.apple.developer.applesignin": [
"Default"
]
}
},
"android": {
"googleServicesFile": "./google-services.json",
"adaptiveIcon": {
"foregroundImage": "./assets/images/blockout-logo-light.png",
"backgroundColor": "#ffffff"
},
"package": "com.blockoutproject.blockout"
},
"androidNavigationBar": {
"barStyle": "dark-content"
},
"web": {
"bundler": "metro",
"output": "static",
"favicon": "./assets/images/blockout-logo-dark.png"
},
"plugins": [
[
"react-native-google-mobile-ads",
{
"androidAppId": "XXX",
"iosAppId": "XXXX",
"userTrackingUsageDescription": "This identifier will be used to deliver personalized ads to you.",
"skAdNetworkItems": [
"cstr6suwn9.skadnetwork",
"4fzdc2evr5.skadnetwork",
"2fnua5tdw4.skadnetwork",
"ydx93a7ass.skadnetwork",
"p78axxw29g.skadnetwork",
"v72qych5uu.skadnetwork",
"ludvb6z3bs.skadnetwork",
"cp8zw746q7.skadnetwork",
"3sh42y64q3.skadnetwork",
"c6k4g5qg8m.skadnetwork",
"s39g8k73mm.skadnetwork",
"3qy4746246.skadnetwork",
"f38h382jlk.skadnetwork",
"hs6bdukanm.skadnetwork",
"mlmmfzh3r3.skadnetwork",
"v4nxqhlyqp.skadnetwork",
"wzmmz9fp6w.skadnetwork",
"su67r6k2v3.skadnetwork",
"yclnxrl5pm.skadnetwork",
"t38b2kh725.skadnetwork",
"7ug5zh24hu.skadnetwork",
"gta9lk7p23.skadnetwork",
"vutu7akeur.skadnetwork",
"y5ghdn5j9k.skadnetwork",
"v9wttpbfk9.skadnetwork",
"n38lu8286q.skadnetwork",
"47vhws6wlr.skadnetwork",
"kbd757ywx3.skadnetwork",
"9t245vhmpl.skadnetwork",
"a2p9lx4jpn.skadnetwork",
"22mmun2rn5.skadnetwork",
"44jx6755aq.skadnetwork",
"k674qkevps.skadnetwork",
"4468km3ulz.skadnetwork",
"2u9pt9hc89.skadnetwork",
"8s468mfl3y.skadnetwork",
"klf5c3l5u5.skadnetwork",
"ppxm28t8ap.skadnetwork",
"kbmxgpxpgc.skadnetwork",
"uw77j35x4d.skadnetwork",
"578prtvx9j.skadnetwork",
"4dzt52r2t5.skadnetwork",
"tl55sbb4fm.skadnetwork",
"c3frkrj4fj.skadnetwork",
"e5fvkxwrpn.skadnetwork",
"8c4e2ghe7u.skadnetwork",
"3rd42ekr43.skadnetwork",
"97r2b46745.skadnetwork",
"3qcr597p9d.skadnetwork"
]
}
],
[
"expo-font",
{
"fonts": [
"./assets/fonts/Outfit-VariableFont_wght.ttf"
]
}
],
[
"expo-build-properties",
{
"android": {
"enableProguardInReleaseBuild": true,
"enableShrinkResourcesInReleaseBuild": true
}
}
],
"expo-router",
[
"expo-splash-screen",
{
"backgroundColor": "#0b0c0d",
"image": "./assets/images/splash-icon-dark.png",
"dark": {
"image": "./assets/images/splash-icon-dark.png",
"backgroundColor": "#0b0c0d"
},
"imageWidth": 200
}
],
[
"react-native-edge-to-edge",
{
"android": {
"enforceNavigationBarContrast": false
}
}
],
[
"react-native-auth0",
{
"domain": "login.blockoutproject.com",
"customScheme": "com.blockoutproject.blockout.auth0"
}
],
"expo-secure-store",
"expo-notifications",
"expo-web-browser",
"expo-build-properties",
"react-native-google-mobile-ads"
],
"experiments": {
"typedRoutes": true
},
"extra": {
"router": {
"origin": false
},
"eas": {
"projectId": "10cdf86a-a81e-496a-bcaa-07c132678f6d"
}
},
"owner": "blockoutproject",
"runtimeVersion": {
"policy": "appVersion"
},
"updates": {
"url": "https://u.expo.dev/10cdf86a-a81e-496a-bcaa-07c132678f6d"
}
}
}ios/Podfile
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}
def ccache_enabled?(podfile_properties)
# Environment variable takes precedence
return ENV['USE_CCACHE'] == '1' if ENV['USE_CCACHE']
# Fall back to Podfile properties
podfile_properties['apple.ccacheEnabled'] == 'true'
end
ENV['RCT_NEW_ARCH_ENABLED'] ||= '0' if podfile_properties['newArchEnabled'] == 'false'
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] ||= podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']
ENV['RCT_USE_RN_DEP'] ||= '1' if podfile_properties['ios.buildReactNativeFromSource'] != 'true' && podfile_properties['newArchEnabled'] != 'false'
ENV['RCT_USE_PREBUILT_RNCORE'] ||= '1' if podfile_properties['ios.buildReactNativeFromSource'] != 'true' && podfile_properties['newArchEnabled'] != 'false'
platform :ios, podfile_properties['ios.deploymentTarget'] || '15.1'
prepare_react_native_project!
target 'Blockout' do
use_expo_modules!
if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1'
config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"];
else
config_command = [
'npx',
'expo-modules-autolinking',
'react-native-config',
'--json',
'--platform',
'ios'
]
end
config = use_native_modules!(config_command)
use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/..",
:privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false',
)
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false,
:ccache_enabled => ccache_enabled?(podfile_properties),
)
end
end