expo: Expo iOS app stuck on splash screen

Summary

Hello,

I am developing an application which runs fine in Expo client on a simulator and Android production builds without errors or warnings. When I build a .app file, which is installable on a simulator but as soon as I run it, it gets stuck on a splash screen.

I tried to delete node modules and installed fresh node modules but still i’m facing the same issue.

In system logs I found assertion failed: 20G95 18A8394: libxpc.dylib + 51172 [5B766255-3DAE-3096-A090-3974BE256194]: 0x7d

This issue is only happening in iOS only in .app file, When I run app in expo client or even when I run on production mode using expo start --no-dev --minify it’s working fine.

Managed or bare workflow? If you have ios/ or android/ directories in your project, the answer is bare!

managed

What platform(s) does this occur on?

iOS

SDK Version (managed workflow only)

44.0.4

Environment

Expo CLI 5.0.3 environment info: System: OS: macOS 11.5.2 Shell: 5.8 - /bin/zsh Binaries: Node: 14.17.4 - /usr/local/bin/node Yarn: 1.22.11 - /usr/local/bin/yarn npm: 6.14.14 - /usr/local/bin/npm Managers: CocoaPods: 1.11.2 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: iOS 14.1, DriverKit 19.0, macOS 10.15, tvOS 14.0, watchOS 7.0 Android SDK: API Levels: 27, 28, 29, 30, 31 Build Tools: 28.0.3, 29.0.0, 29.0.2, 29.0.3, 30.0.2, 30.0.3 System Images: android-28 | Google APIs Intel x86 Atom IDEs: Android Studio: 4.1 AI-201.8743.12.41.6858069 Xcode: 12.1/12A7403 - /usr/bin/xcodebuild npmPackages: babel-preset-expo: 9.0.1 => 9.0.1 expo: ^44.0.4 => 44.0.4 react: 17.0.1 => 17.0.1 react-dom: 17.0.1 => 17.0.1 react-native: 0.64.3 => 0.64.3 react-native-web: 0.17.1 => 0.17.1 npmGlobalPackages: expo-cli: 5.0.3 Expo Workflow: bare

Reproducible demo

{ “main”: “node_modules/expo/AppEntry.js”, “scripts”: { “start”: “expo start”, “android”: “expo start --android”, “ios”: “expo start --ios”, “web”: “expo start --web”, “eject”: “expo eject”, “test”: “jest --watchAll”, “gen-sdk”: “openapi-sdk-generator generate --def http://14.99.203.50:5027/v1.json --outdir ./src/sdk --cache-type none --throw-on-not-okay-res true --pre-process-def ‘delete doc.components.schemas.PostComment.properties.childPostCommentList.items.$ref;delete doc.components.schemas.AssignmentComment.properties.childAssignmentCommentList.items.$ref;return doc;’” }, “jest”: { “preset”: “jest-expo” }, “dependencies”: { “@expo-google-fonts/roboto”: “^0.1.0”, “@expo/vector-icons”: “^12.0.0”, “@react-native-community/masked-view”: “^0.1.10”, “@react-native-community/viewpager”: “5.0.11”, “@react-navigation/bottom-tabs”: “5.8.0”, “@react-navigation/drawer”: “5.9.0”, “@react-navigation/material-top-tabs”: “5.2.16”, “@react-navigation/native”: “5.7.3”, “@react-navigation/stack”: “5.9.0”, “@stripe/stripe-react-native”: “0.2.3”, “@types/jwt-decode”: “^2.2.1”, “@types/lodash.clonedeep”: “^4.5.6”, “@types/lodash.groupby”: “^4.6.6”, “@types/lodash.set”: “^4.3.6”, “@types/mime”: “^2.0.3”, “@types/react-native-htmlview”: “^0.12.2”, “@types/react-native-snap-carousel”: “^3.8.2”, “@types/react-query”: “^1.1.2”, “@types/yup”: “^0.29.6”, “autolinker”: “^3.14.1”, “date-fns”: “^2.15.0”, “eventemitter3”: “^4.0.7”, “expo”: “^44.0.4”, “expo-application”: “~4.0.1”, “expo-asset”: “~8.4.5”, “expo-av”: “~10.2.0”, “expo-checkbox”: “~2.0.0”, “expo-cli”: “^5.0.3”, “expo-constants”: “~13.0.0”, “expo-document-picker”: “~10.1.0”, “expo-file-system”: “~13.1.0”, “expo-font”: “~10.0.4”, “expo-image-picker”: “~12.0.1”, “expo-intent-launcher”: “~10.1.0”, “expo-linear-gradient”: “~11.0.0”, “expo-linking”: “~3.0.0”, “expo-media-library”: “~14.0.0”, “expo-notifications”: “~0.14.0”, “expo-permissions”: “~13.1.0”, “expo-splash-screen”: “~0.14.1”, “expo-status-bar”: “~1.2.0”, “expo-video-thumbnails”: “~6.1.0”, “expo-web-browser”: “~10.1.0”, “formik”: “^2.1.5”, “intl”: “^1.2.5”, “jwt-decode”: “^2.2.0”, “lodash.clonedeep”: “^4.5.0”, “lodash.groupby”: “^4.6.0”, “lodash.set”: “^4.3.2”, “mime”: “^2.4.6”, “moment”: “^2.29.1”, “react”: “17.0.1”, “react-dom”: “17.0.1”, “react-moment”: “^1.1.1”, “react-native”: “0.64.3”, “react-native-autolink”: “^3.0.0”, “react-native-collapsible”: “^1.5.3”, “react-native-emoji-board”: “^1.2.1”, “react-native-floating-action”: “^1.21.0”, “react-native-gesture-handler”: “~2.1.0”, “react-native-gifted-chat”: “^0.16.3”, “react-native-google-recaptcha-v2”: “^1.1.0”, “react-native-htmlview”: “^0.16.0”, “react-native-material-textfield”: “git+https://github.com/TheLartians/react-native-material-textfield.git#147f3b92b24cb3404c3b4a0229b3da30b81e2c7e”, “react-native-modal”: “^11.5.6”, “react-native-modalize”: “2.0.6”, “react-native-multiple-select”: “^0.5.6”, “react-native-paper”: “^4.9.2”, “react-native-portalize”: “1.0.7”, “react-native-reanimated”: “~2.3.1”, “react-native-root-siblings”: “^4.0.6”, “react-native-root-toast”: “^3.2.1”, “react-native-safe-area-context”: “3.3.2”, “react-native-screens”: “~3.10.1”, “react-native-simple-radio-button”: “^2.7.4”, “react-native-snap-carousel”: “^4.0.0-beta.6”, “react-native-stripe-client”: “0.0.3”, “react-native-svg”: “12.1.1”, “react-native-switch”: “^2.0.0”, “react-native-tab-view”: “^2.15.0”, “react-native-toggle-element”: “^1.0.1”, “react-native-vector-icons”: “^7.1.0”, “react-native-web”: “0.17.1”, “react-native-webview”: “11.15.0”, “react-query”: “^2.5.14”, “rn-material-ui-textfield”: “^1.0.5”, “string-mask”: “^0.3.0”, “use-socketio”: “^2.0.3”, “yup”: “^0.29.3” }, “devDependencies”: { “@babel/core”: “^7.12.9”, “@types/react”: “~17.0.21”, “@types/react-native”: “~0.64.12”, “babel-preset-expo”: “9.0.1”, “jest-expo”: “^44.0.0”, “typescript”: “~4.3.5” }, “private”: true }

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 6
  • Comments: 23 (4 by maintainers)

Most upvoted comments

@stripe/stripe-react-native is supported in Expo Go on Android and iOS out of the box, however, for iOS, it is only available for standalone apps built with EAS Build, and not for apps built on the classic build system- expo build:ios. Android apps built with expo build:android will have access to the @stripe/stripe-react-native library. https://docs.expo.dev/versions/v44.0.0/sdk/stripe/

I have same issue when upgrading from sdk 47 tp 48, tried all of the above solutions but no luck yet.

I upgraded from sdk 42 to 43 and this now happens. It only happens when testing the testflight app i build. It does not occur in development mode in an emutor or on a physical device.

Any help with this would be greatly appreciated.

+1

I’m having the same issue, iOS only. In android, testing in production mode or dev mode it is working just fine. For some reason the app keep stuck in the splash screen only when I test on an iOS simulator or a physical device running in production mode. Using the managed workflow

I also have the exact same issue, works on Android, it doesn’t on iOS, I have updated to SDK 50, by the way.

I’m having the same issue, iOS only. In android, testing in production mode or dev mode it is working just fine. For some reason the app keep stuck in the splash screen only when I test on an iOS simulator or a physical device running in production mode. Using the managed workflow

I also started getting this issue when I upgraded from SDK 42 to 43.

Are there any other packages that cause this? I don’t have stripe-react-native.

Edit: I built with Xcode and it’s the same issue mentioned in https://github.com/expo/expo/issues/7689

User marcusmc wrote this in that issue:

Ran into this problem, and although it’s likely an edge case, thought it would be worth writing down. I had an RN Alert that was being rendered outside of the application’s standard flow (largely as a debug tool). I both received this error and the splash screen never disappeared. Once I removed this alert, the error went away. I imagine that inadvertently attempting to render anything before the splash screen is hidden could cause this issue as well.

My app renders a modal on app open. Removing the modal or rendering it later fixes the splash screen issue.