You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Can't install update on Expo app with new architecture on Android #35
I have latest Expo (57) with latest version of this lib and enabled new architecture and I'm currently testing on Android but eventually I need to have this working also on iOS. I'm also using EAS Build. I tried everything and every time app crashes after installing update and rolls back to previous version. Cloude found several problems like including CodePush in wrong place in MainApplication.kt, wrong file path for JS bundle but all of these fixes don't eventually work. Please let somebody verify if this lib works with latest Expo because amount of problems I have make me suspect the lib is broken.
» android: codepush-plugin: SoLoader.init() not found in onCreate(). Placing CodePush initialization after super.onCreate().
Cloude made me config plugin to fix it.
Then log from update with the plugin
08-18 08:47:50.928 14002 14215 E ReactNativeJS: { [Error: Exception in HostFunction: java.net.MalformedURLException: no protocol: /data/user/0/pl.trojmiasto.mobile/files/CodePush/ecdc803ce3df676278ff1722b26d0e8182bf8f6a5dc1361b34ee57b67bf7b69b/build/index.android.bundle]
Cloude made me another plugin to fix JS bundle path (adding file:// prefix) but it still crashes
08-18 11:25:39.184 31787 31787 W unknown:BridgelessReact: ReactHost{0}.handleHostException(message = "JSBigFileString::fromPath - Could not open file: file:///data/user/0/pl.trojmiasto.mobile/files/CodePush/c8e3ab71e0bf0290159abe04ce06ef1f8467aad5c07f5085fdc803cdd5afa67d/build/index.android.bundle")
08-18 11:25:39.184 31787 31787 E AndroidRuntime: java.lang.RuntimeException: JSBigFileString::fromPath - Could not open file: file:///data/user/0/pl.trojmiasto.mobile/files/CodePush/c8e3ab71e0bf0290159abe04ce06ef1f8467aad5c07f5085fdc803cdd5afa67d/build/index.android.bundle
Now it suggest JS bundle file doesn't exist or is broken but I gave up debugging it any more
I spent some time trying to reproduce the crash, but ultimately couldn't.
First, this log line:
» android: codepush-plugin: SoLoader.init() not found in onCreate(). Placing CodePush initialization after super.onCreate().
is a harmless warning, the expo plugin has a fallback logic that correctly patches your application subclass and you shouldn't worry about this. We should turn this warning into an info-level message, though.
I don't want to rule out a bug in our Android code, but I couldn't reproduce the crash, no matter what Expo version or config change I tried. I think there is something unique to your project's setup, so a good next step would be to share as much as realistically possible: your Expo app config file, package.json, and if you are not using Expo CNG, then any Android-soide customization. And a broader logcat output would also be useful, I think there is a richer stacktrace that we are not seeing in the posted snippet.
Activity
ofalvai commentedon Aug 18, 2026
We are testing the project against Expo 57 since #13
If you have specific crash logs or any other information which would help in debugging this, please share, and we'll take a look.
d-laskowski-trojmiasto commentedon Aug 18, 2026
Prebuild prints
Cloude made me config plugin to fix it.
Then log from update with the plugin
Cloude made me another plugin to fix JS bundle path (adding file:// prefix) but it still crashes
Now it suggest JS bundle file doesn't exist or is broken but I gave up debugging it any more
d-laskowski-trojmiasto commentedon Aug 19, 2026
Here is full log from update attempt with pure lib without any Cloude fixes:
ofalvai commentedon Aug 20, 2026
I spent some time trying to reproduce the crash, but ultimately couldn't.
First, this log line:
is a harmless warning, the expo plugin has a fallback logic that correctly patches your application subclass and you shouldn't worry about this. We should turn this warning into an info-level message, though.
I don't want to rule out a bug in our Android code, but I couldn't reproduce the crash, no matter what Expo version or config change I tried. I think there is something unique to your project's setup, so a good next step would be to share as much as realistically possible: your Expo app config file,
package.json, and if you are not using Expo CNG, then any Android-soide customization. And a broader logcat output would also be useful, I think there is a richer stacktrace that we are not seeing in the posted snippet.d-laskowski-trojmiasto commentedon Aug 21, 2026
app.config.ts:
package.json:
{ "name": "trojmiasto-rn", "version": "1.0.0", "main": "index.ts", "scripts": { "start": "expo start --dev-client --tunnel", "prod": "npx expo start --no-dev --minify --tunnel", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", "lint": "eslint .", "fix": "eslint --fix .", "prepare": "husky", "postinstall": "patch-package", "e2e": "eas workflow:run .eas/workflows/e2e.yml", "ota-a": "npx expo export:embed --entry-file index.js --platform android --dev false --reset-cache --bundle-output ./build/index.android.bundle --assets-dest ./build --minify false && zip -r update-android.zip ./build && rm -rf ./build", "ota-i": "npx expo export:embed --entry-file index.js --platform ios --dev false --reset-cache --bundle-output ./build/main.jsbundle --assets-dest ./build --minify false && zip -r update-ios.zip ./build && rm -rf ./build" }, "dependencies": { "@bitrise/code-push-sdk": "^10.5.2", "@expo/react-native-action-sheet": "^4.1.1", "@expo/ui": "~57.0.10", "@lodev09/react-native-exify": "^1.0.3", "@react-native-async-storage/async-storage": "2.2.0", "@react-native-community/hooks": "^100.1.0", "@react-native-community/netinfo": "12.0.1", "@react-native-firebase/analytics": "^26.2.0", "@react-native-firebase/app": "^26.2.0", "@react-native-firebase/app-check": "^26.2.0", "@react-native-firebase/crashlytics": "^26.2.0", "@react-native-firebase/firestore": "^26.2.0", "@react-native-firebase/messaging": "^26.2.0", "@react-native-vector-icons/material-icons": "^13.1.2", "@sentry/react-native": "~7.11.0", "@shopify/flash-list": "2.0.2", "@tanstack/react-query": "^5.101.4", "@uppy/aws-s3": "^5.1.0", "@uppy/core": "^5.2.0", "@uppy/locales": "^5.1.1", "@uppy/tus": "^5.1.1", "axios": "^1.19.0", "events": "^3.3.0", "expo": "~57.0.12", "expo-asset": "~57.0.10", "expo-audio": "~57.0.3", "expo-background-task": "~57.0.9", "expo-build-properties": "~57.0.10", "expo-constants": "~57.0.10", "expo-dev-client": "~57.0.11", "expo-device": "~57.0.1", "expo-document-picker": "~57.0.1", "expo-font": "~57.0.1", "expo-image": "~57.0.2", "expo-image-manipulator": "~57.0.9", "expo-image-picker": "~57.0.9", "expo-in-app-updates": "^0.12.0", "expo-keep-awake": "~57.0.1", "expo-linear-gradient": "~57.0.1", "expo-linking": "~57.0.5", "expo-location": "~57.0.9", "expo-media-library": "~57.0.3", "expo-notifications": "~57.0.10", "expo-quick-actions": "^6.0.2", "expo-router": "~57.0.12", "expo-share-intent": "^8.0.1", "expo-splash-screen": "~57.0.6", "expo-status-bar": "~57.0.1", "expo-store-review": "~57.0.1", "expo-system-ui": "~57.0.2", "expo-task-manager": "~57.0.9", "expo-video": "~57.0.2", "expo-video-metadata": "^1.5.0", "expo-web-browser": "~57.0.2", "lodash": "^4.18.1", "patch-package": "^8.0.1", "react": "19.2.3", "react-dom": "19.2.3", "react-hook-form": "^7.85.0", "react-native": "0.86.2", "react-native-android-widget": "^0.22.0", "react-native-background-actions": "^4.1.0", "react-native-boost": "^1.6.0", "react-native-bouncy-checkbox": "^4.1.4", "react-native-compressor": "^2.0.3", "react-native-device-info": "^15.0.2", "react-native-gesture-handler": "~2.32.0", "react-native-keyboard-controller": "1.21.9", "react-native-mmkv": "^4.3.2", "react-native-nitro-modules": "^0.36.5", "react-native-notify-kit": "^10.5.0", "react-native-pager-view": "8.0.2", "react-native-progress": "^5.0.1", "react-native-quick-crypto": "^1.1.6", "react-native-reanimated": "4.5.1", "react-native-safe-area-context": "~5.7.0", "react-native-screens": "~4.26.0", "react-native-sortables": "^1.10.0", "react-native-spotlight-tour": "^4.0.0", "react-native-svg": "15.15.4", "react-native-tab-view": "^4.3.2", "react-native-toast-message": "^2.4.0", "react-native-walkthrough-tooltip": "^1.6.0", "react-native-webview": "13.16.1", "react-native-worklets": "0.10.1", "uuid": "^14.0.1", "zustand": "^5.0.14" }, "devDependencies": { "@babel/core": "^7.29.7", "@eslint/compat": "^2.1.0", "@eslint/eslintrc": "^3.3.6", "@eslint/js": "^9.39.5", "@types/lodash": "^4.17.25", "@types/react": "~19.2.18", "@typescript-eslint/eslint-plugin": "^8.67.0", "@typescript-eslint/parser": "^8.67.0", "babel-plugin-module-resolver": "^5.0.3", "eslint": "^9.39.5", "eslint-config-expo": "~57.0.1", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-babel-module": "^5.3.2", "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-module-resolver": "^1.5.0", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-react-compiler": "^19.1.0-rc.2", "expo-mcp": "^0.2.4", "husky": "^9.1.7", "lint-staged": "^17.3.0", "prettier": "^3.9.6", "typescript": "~6.0.3" }, "private": true, "lint-staged": { "*.{ts,tsx}": "eslint --fix --max-warnings 0" }, "expo": { "doctor": { "reactNativeDirectoryCheck": { "exclude": [ "@uppy/core", "@uppy/locales", "@uppy/tus", "lodash", "patch-package", "react-native-bouncy-checkbox", "react-native-spotlight-tour", "react-native-background-actions", "react-native-compressor", "@react-native-vector-icons/material-icons" ] } } }, "overrides": { "zod-validation-error": "^4.0.0" }, "allowScripts": { "@firebase/util@1.15.2": true, "@sentry/cli@2.58.4": true, "protobufjs@7.6.5": true, "unrs-resolver@1.11.1": true } }Not sure if this is helpful but here is my MainApplication.kt but I use CNG so it's generated by prebuild:
Logs are filtered for codepush, without filter it's just unreadable constant stream (dozens of lines per second)