Expo Publish After Ejecting

Hey all!

I’ve recently ejected and when I run expo publish and then restart the app it just crashes.

It only works again if I revert to the managed workflow and publish from there again then it’s back.

I’ve followed the OTA expo-updates instructions but still the same.

Anyone have any issues with this? Publishing updates after ejecting?

This is for an app already on the app store.

Would be so good to publish fast for my users again…

run expo diagnostics in your project and share the results here. also share crash logs if you have any.

Sorry this is the correct one:

Expo CLI 4.7.2 environment info:
System:
OS: macOS 11.4
Shell: 5.8 - /bin/zsh
Binaries:
Node: 16.4.0 - ~/.nvm/versions/node/v16.4.0/bin/node
Yarn: 1.22.10 - /usr/local/bin/yarn
npm: 7.18.1 - ~/.nvm/versions/node/v16.4.0/bin/npm
Watchman: 2021.06.07.00 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.10.1 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4
IDEs:
Android Studio: 4.1 AI-201.8743.12.41.7199119
Xcode: 12.5.1/12E507 - /usr/bin/xcodebuild
npmPackages:
expo: ^41.0.0 => 41.0.1
react: 16.13.1 => 16.13.1
react-dom: 16.13.1 => 16.13.1
react-native: ~0.63.4 => 0.63.4
react-native-web: ~0.13.12 => 0.13.18
react-navigation: ^3.11.0 => 3.13.0
Expo Workflow: bare

Thanks a lot for the quick support @notbrent

Unfortunately no crash report. I think I understand why it’s not working. I assume I’d need to eas build the ios version that has the expo-update await Updates.fetchUpdateAsync(); etc in app.js.

Is that correct. Kind of makes sense now. If you could let me know if I’m missing anything else that would be amazing.

sorry i don’t understand the question :open_mouth:

if you are using bare workflow you should be able to see crash logs from the usual sources on google play or xcode crashes organizer. you can also run a release build locally to test expo-updates.

Thanks again for the reply:

Here’s a screenshot of Crashes Report;
https://drive.google.com/file/d/1Z0cyn3z9pgo6B0BVqZeNuAzCxoHWyfbT/view?usp=drivesdk

Steps:

  1. Publish from Bare Workflow
  2. Download App from Apple AppStore.
  3. Restart app to get the most recent update.
  4. App Crashes after loading screen.

Steps I have take to get my app running again:

  1. Switch back to Managed workflow and expo publish.
  2. Restart App to get recent update.

My thinking as to why this is happening is that the app binary doesn’t have the expo-updates call in it on did mount.

So I am planning to submit that version to the app store today in the hope that publishing from the Bare Workflow will now work once that is in place.

I wanted to check though, if I had missed anything else.

Hope it makes sense sorry if I have got this wrong…

hello! any chance you could provide a reproducible example? you can test this easily on your own machine in a minimal project by running:

expo init # choose the bare workflow template
yarn ios --configuration Release
# wait for it to build, look at it
# make some change to App.js, then:
expo publish
# wait for publish to complete
# close and reopen the app a couple times in your simulator, notice that it is updated

it’s hard to say what might be going on here without some code to look at. that error from blobmanager could be coming from another part of your app, afaik expo-updates does not use it at all

Thanks heaps Brent… Just makeing sure you know it’s the live app in the apple app store I’m downloading right? Not the expo client…

yeah. your diagnostics you shared showed that you have a bare workflow project, so I am suggesting you try to reproduce this locally in xcode

Ah okay, I’ll try but I think it runs fine locally and when I eas build to submit to app store.

But you’re probably right, I’ll try to find a way to reproduce it locally.

by the way, the error message you’re seeing related to RCTBlobManager has nothing to do with expo-updates. it seems like maybe the bug is elsewhere in your code

FYI for anyone else that has this issue. The solution was just as the documentation says to add:

const update = await Updates.checkForUpdateAsync();
if (update.isAvailable) {
await Updates.fetchUpdateAsync();
// … notify user of update …
await Updates.reloadAsync();
}

And the rest as mentioned in Configuring OTA Updates - Expo Documentation

Then expo publish works without crashing thanks.