I’m on SDK 46, managed workflow, with eas-cli version 2.1.0. I’m testing on a real iphone device (still on iOS15).
I built a dev-client and my app runs fine using npx expo start --dev-client. However, when I try to load an update through the Extensions / EAS Updates tab then it fails immediately with the below error.
I have just recently moved to EAS Update, and I believe I had it working at one point but now for the past couple weeks I always get this error. I made a lot of changes to my project between then and now, so it’s hard to deduce which change may have done something. For example, I set up an app variant (this error happens regardless of setting app variant or not), and split out app.config.js from app.json. Let me know if that could cause something like this?
There was a problem loading the project.
This development build encountered the following error:Could not get BatchedBridge, make sure your bundle is packaged correctly.
Here is my eas.json:
{
"cli": {
"version": ">= 0.39.0"
},
"build": {
"dev": {
"developmentClient": true,
"distribution": "internal",
"channel": "dev",
"env": {
"APP_VARIANT": "prod"
},
"cache": {
"key": "Invalidate"
}
},
"test": {
"channel": "test-307"
},
"prod": {
"channel": "prod-307"
}
},
"submit": {
"prod": {
"android": {
"serviceAccountKeyPath": "pc-api-xxxxxx.json",
"track": "production"
},
"ios": {
"appleId": "email@email.com",
"ascAppId": "xxxxxx",
"appleTeamId": "XXXXXX",
"sku": "myapp"
}
},
"test": {
"extends": "prod",
"android": {
"track": "internal"
}
}
}
}
My app.json:
{
"react-native-google-mobile-ads": {
"android_app_id": "ca-app-pub-xxxxx",
"ios_app_id": "ca-app-pub-xxxxx"
}
}
And my app.config.js:
const APP_VARIANT = process.env.APP_VARIANT;
const IS_DEV = APP_VARIANT === 'dev';
const bundleId = IS_DEV ? 'com.myapp.dev' : 'com.myapp';
export default {
expo: {
name: IS_DEV ? "Myapp (Dev)" : "Myapp",
slug: "myapp",
privacy: "public",
platforms: [
"ios",
"android"
],
jsEngine: "hermes",
version: "3.0.7",
scheme: bundleId,
userInterfaceStyle: "automatic",
notification: {
icon: "./assets/images/icon-96-greyscale.png",
color: "#F7D52F",
iosDisplayInForeground: true
},
icon: "./assets/images/icon-1024.png",
splash: {
image: "./assets/images/myapp.png",
resizeMode: "contain",
backgroundColor: "#ffffff"
},
androidStatusBar: {
translucent: true
},
updates: {
fallbackToCacheTimeout: 30000,
url: "https://u.expo.dev/1d27e76f-f0a5-45e2-a8ba-d35fdbae9053"
},
assetBundlePatterns: [
"**/*"
],
developmentClient: {
silentLaunch: false
},
ios: {
supportsTablet: true,
requireFullScreen: true,
config: {
usesNonExemptEncryption: false
},
bundleIdentifier: bundleId,
buildNumber: "3.0.7.0",
infoPlist: {
"NSLocationWhenInUseUsageDescription": "Allow app to use location for the purpose of loading weather conditions at your location.",
"NSPhotoLibraryUsageDescription": "Allow app to use photos to be able to set a background image and images for each family member.",
"NSCalendarsUsageDescription": "Allow app to show your iOS calendar events in this view. You can disable this later in your app Settings if desired.",
"NSRemindersUsageDescription": "Allow app to integrate your iOS reminder events in with app calendar events.",
"NSUserTrackingUsageDescription": "This will be used to deliver personalized ads to you.",
"NSContactsUsageDescription": "Allow app to access your contacts so you can send event reminders to them."
},
appStoreUrl: "https://apps.apple.com/us/app/xxxx",
googleServicesFile: IS_DEV ? "./GoogleService-Info-dev.plist" : "./GoogleService-Info.plist"
},
android: {
package: bundleId,
versionCode: 3070,
permissions: [
"READ_CALENDAR",
"WRITE_CALENDAR",
"READ_EXTERNAL_STORAGE",
"WRITE_EXTERNAL_STORAGE",
"ACCESS_COARSE_LOCATION",
"ACCESS_FINE_LOCATION",
"FOREGROUND_SERVICE",
"BILLING",
"READ_CONTACTS",
"WRITE_CONTACTS"
],
adaptiveIcon: {
foregroundImage: "./assets/images/icon-foreground-1024.png",
backgroundImage: "./assets/images/icon-background-1024.png",
backgroundColor: "#FFFFFF"
},
softwareKeyboardLayoutMode: "resize",
playStoreUrl: "https://play.google.com/store/apps/details?id=com.myapp",
googleServicesFile: IS_DEV ? "./google-services-dev.json" : "./google-services.json"
},
description: "",
hooks: {
postPublish: [
{
file: "sentry-expo/upload-sourcemaps",
config: {
organization: "me",
project: "myapp",
authToken: "xxxxxx"
}
}
]
},
plugins: [
"sentry-expo",
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "static"
}
}
]
],
extra: {
eas: {
projectId: "1d27e76f-f0a5-45e2-a8ba-d35fdbae9053"
},
appVariant: APP_VARIANT,
isDevVariant: IS_DEV
},
runtimeVersion: {
policy: "sdkVersion"
}
}
}
Let me know if there’s any other files that might help give a clue. Any help would be greatly appreciated!