Hello!
I have an ejected app, and I recently upgraded from SDK 32 to SDK 33.
I can run the iOS build just fine in XCode, pointing at localhost using expo start
. However, when I run xcodebuild
(via Fastlane) and expo publish
to a release channel, I get the dreaded “Module AppRegistry is not a registered callable module” screen of death on app open.
I understand that this usually comes from some sort of version mismatch, so I ran a expo publish --clear
… it didn’t help.
I did a massive grep of all of my ios files, switched all instances of 32.0.0
to 33.0.0
.
Here’s my package.json dependencies:
"dependencies": {
"@expo/react-native-action-sheet": "^1.0.2",
"@expo/react-native-fade-in-image": "^1.0.0",
"@expo/react-native-read-more-text": "^1.0.0",
"@expo/react-native-touchable-native-feedback-safe": "^1.0.0",
"@expo/vector-icons": "^10.0.0",
"axios": "^0.18.0",
"babel-plugin-transform-remove-console": "^6.9.1",
"card-validator": "^3.0.0",
"clamp": "^1.0.1",
"classnames-react-native": "^1.1.0",
"color": "^3.1.0",
"country-list": "^2.1.0",
"debounce-async": "0.0.2",
"expo": "^33.0.7",
"expo-analytics": "^1.0.7",
"expo-analytics-amplitude": "^5.0.1",
"expo-asset": "^5.0.1",
"expo-blur": "^5.0.1",
"expo-constants": "^5.0.1",
"expo-file-system": "^5.0.1",
"expo-font": "^5.0.1",
"expo-linear-gradient": "^5.0.1",
"expokit": "^33.0.3",
"form-urlencoded": "^3.0.0",
"immutable": "^3.8.1",
"lodash": "^4.17.10",
"lottie-react-native": "^2.6.1",
"moment": "^2.18.1",
"prop-types": "^15.6.0",
"react": "16.8.3",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
"react-native-animatable": "^1.2.4",
"react-native-aws3": "0.0.8",
"react-native-cookie": "https://github.com/sickapp/react-native-cookie/tarball/master",
"react-native-easy-toast": "^1.2.0",
"react-native-expo-image-cache": "^3.2.0",
"react-native-flip-card": "^3.5.2",
"react-native-input-scroll-view": "^1.6.7",
"react-native-iphone-x-helper": "^1.0.3",
"react-native-keyboard-aware-scroll-view": "^0.5.0",
"react-native-loading-spinner-overlay": "^0.5.2",
"react-native-material-kit": "https://github.com/sickapp/mk/tarball/master",
"react-native-onesignal": "^3.2.12",
"react-native-search-box": "https://github.com/sickapp/react-native-search-box/tarball/master",
"react-native-snap-carousel": "^3.6.0",
"react-native-stripe-api": "0.0.6",
"react-native-tab-view": "0.0.69",
"react-native-vector-icons": "^4.6.0",
"react-navigation": "3.11.0",
"react-redux": "^5.0.7",
"redux": "^3.6.0",
"redux-effex": "^1.1.2",
"redux-form": "^7.4.2",
"reselect": "^4.0.0",
"rn-placeholder": "^1.2.0",
"sentry-expo": "~1.13.0",
"shortid": "^2.2.8",
"stripe-client": "^1.1.5",
"tcomb-form-native": "^0.6.7",
"tcomb-validation": "^3.4.1",
"time-js": "0.0.5",
"validator": "^10.11.0"
},
"devDependencies": {
"@babel/core": "^7.4.5",
"@babel/preset-env": "^7.4.5",
"@babel/register": "^7.4.4",
"@wdio/appium-service": "^5.9.3",
"@wdio/cli": "^5.10.3",
"@wdio/local-runner": "^5.10.1",
"@wdio/mocha-framework": "^5.10.1",
"@wdio/spec-reporter": "^5.9.3",
"@wdio/sync": "^5.10.1",
"appium": "^1.13.0",
"aws-sdk": "^2.485.0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^8.2.2",
"babel-preset-expo": "^5.0.0",
"chai": "^4.1.2",
"chalk": "^2.4.2",
"chromedriver": "^75.0.0",
"depcheck": "^0.6.9",
"enzyme": "^3.3.0",
"enzyme-adapter-react-16": "^1.1.1",
"eslint": "^5.3.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-config-prettier": "^4.3.0",
"eslint-loader": "^1.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-jsx-a11y": "^6.1.1",
"eslint-plugin-prettier": "^3.1.0",
"eslint-plugin-react": "^7.12.4",
"eslint-plugin-react-native": "^3.6.0",
"expo-cli": "^2.21.1",
"fs-extra": "^8.0.1",
"husky": "^2.1.0",
"jest": "^23.6.0",
"jest-expo": "^33.0.2",
"jimp": "^0.6.4",
"lint-staged": "^8.1.5",
"mocha": "^5.2.0",
"ncp": "^2.0.0",
"node-fetch": "^2.2.0",
"prettier": "^1.18.2",
"react-dom": "^16.3.2",
"react-native-unimodules": "^0.4.1",
"react-native-version": "^2.6.7",
"react-test-renderer": "^16.3.2",
"reactotron-react-native": "^2.0.0-beta.3",
"reactotron-redux": "^1.13.0",
"replace-in-file": "^3.4.3",
"simple-git": "^1.107.0",
"wdio-chromedriver-service": "^5.0.1",
"zip-local": "^0.3.4"
},
Here’s my app.json:
"expo": {
"name": "Coolio",
"description": "So cool, yo",
"slug": "coolio4",
"privacy": "public",
"scheme": "coolio",
"sdkVersion": "33.0.0",
"platforms": [
"ios",
"android"
],
"version": "9.0.0",
"orientation": "portrait",
"icon": "assets/images/app-icon.png",
"splash": {
"image": "assets/images/splash.png",
"resizeMode": "cover",
"backgroundColor": "#000"
},
"ios": {
"bundleIdentifier": "com.company.coolio",
"supportsTablet": true,
"buildNumber": "21",
"infoPlist": {
"NSLocationAlwaysUsageDescription": "Very cool app",
"NSCameraUsageDescription": "Very cool app",
"NSMicrophoneUsageDescription": "Very cool app",
"NSPhotoLibraryUsageDescription": "Very cool apps"
},
"publishBundlePath": "ios/coolio/Supporting/shell-app.bundle",
"publishManifestPath": "ios/coolio/Supporting/shell-app-manifest.json"
},
"android": {
"package": "com.sickapp.coolio",
"versionCode": 12,
"publishBundlePath": "android/app/src/main/assets/shell-app.bundle",
"publishManifestPath": "android/app/src/main/assets/shell-app-manifest.json"
},
"notification": {
"icon": "assets/images/notif-icon.png"
},
"assetBundlePatterns": [
"assets/videos/**",
"assets/images/**",
"assets/fonts/**"
],
"updates": {
"fallbackToCacheTimeout": 10000
},
"hooks": {
"postPublish": [
{
"file": "sentry-expo/upload-sourcemaps",
"config": {
"organization": "coolio",
"project": "coolio-app",
"authToken": "[[ redacted ]]"
}
}
]
},
"isDetached": true,
"detach": {
"iosExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/ios-v2.10.2-sdk33.0.0-c59c23cd-1d49-49d2-a633-d03f9d554cf6.tar.gz",
"androidExpoViewUrl": "https://s3.amazonaws.com/exp-exponent-view-code/android-v2.10.7-sdk33.0.0-3ff7f3bf-8e53-4d61-b963-1d7d92a77d79.tar.gz"
}
},
What is going on here? Any ideas?