(solved) Latest js bundle not downloaded [Android]

#1

Hi all,

I have a situation where my ejected Android app doesn’t load the latest bundle from the Expo servers.

Or, that is, I can see from Sentry logs that a few phones have downloaded the latest version. But the vast majority - 99% ish hasn’t. The app is in production.

(this has not been a problem earlier with this app)

I did the following to make sure.

  1. expo publish (bundle1)
  2. Build signed app in Android Studio
  3. adb install on phone
  4. Confirm bundle1 is loading in app on phone, :white_check_mark:
  5. expo publish (bundle2, version number += 1)
  6. Confirm bundle2 is loading in app on phone, :white_check_mark:
  7. Upload to Play Store, rollout
  8. Wait a few hours
  9. Uninstall manually installed app from phone
  10. Install app from Play Store
  11. Confirm bundle2 is loading in app on phone, :stop_sign:nope, bundle1 is being served
  12. Scratch head
  13. expo publish (bundle3, version number += 1)
  14. Confirm bundle3 is loading in app on phone, :stop_sign:nope, bundle1 is being served
  15. Scratch head again, search forums and GitHub for clues
  16. Post question in forum
  17. Wait…
    :slight_smile:

The weirdest thing is that a tiny small percentage of my user base has recieved the bundle3 version.

Is there a way to trace the query from my app and the response the bundle server returns? Without doing it from inside the app.

If someone at @Expo looks in to this, the app is @fmckl/REG. Bundle version being served (to most users) is 3.75.1, latest version is 3.75.3. Release channel expo-31.

Thanks
// Kristofer

  Expo CLI 2.4.0 environment info:
    System:
      OS: macOS High Sierra 10.13.6
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.13.0 - ~/.nvm/versions/node/v10.13.0/bin/node
      npm: 6.4.1 - ~/.nvm/versions/node/v10.13.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    IDEs:
      Android Studio: 3.1 AI-173.4907809
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      expo: ^31.0.5 => 31.0.5
      react: 16.5.0 => 16.5.0
      react-native: https://github.com/expo/react-native/archive/sdk-31.0.1.tar.gz => 0.57.1
      react-navigation: ^2.18.2 => 2.18.2
    npmGlobalPackages:
      expo-cli: 2.4.0
#2

Cheers, following up this question. Did some more digging and tried a few things but no success.

Recap:

Hi, I have a situation where it takes forever for new OTA bundles to be distributed to Android. When I do a fresh install of my app on a phone, I get the JS bundle that was current when I built the app - it is an ejected app. Then, maybe 36 hours later and a number of restarts etc inbetween, the latest bundle is downloaded and activated. The iOS version works as expected, OTA bundles delivered as soon as the user restarts the app.

I tried the following code in an attempt to load new version manually. But, checkForUpdateAsync, update.isAvailable, is false even though I have published a new version (same release-channel).

  async checkForUpdates() {
    this.setState({ isChecking: true });
    try {
      const update = await Updates.checkForUpdateAsync();
      if (update.isAvailable) {
        await Updates.fetchUpdateAsync();
        this.setState({ isUpdateAvailable: true });
      } else {
        this.setState({ isUpdateAvailable: false });
      }
      this.setState({ isChecking: false });
    } catch (e) {
      //error handling
      this.setState({ isChecking: false });
    }
  }

Any ideas? @esamelson @adamjnav

Best // Kristofer

#3

Sigh.

Doing a fresh expo eject seems to have solved the problem.

closed #4

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.