Standalone build different from published app

I’d like to understand why the behavior of our Expo Production builds can’t be replicated on standalone builds. It’s impossible to reproduce production bugs in staging when we can’t replicate our production builds.

Is there a difference in how OTA production builds are created vs standalone builds?


hi there! i don’t understand your question. can you be extremely precise and lay out your exact situation? eg: i imagine you’re using release channels? give me a full account of what you’re trying to work through

Hi @notbrent, thanks for the speedy reply!

Our app is built completely on the Expo SDK, v29.0.1, and published via the exp CLI. We’ve tried to use both release channels and .apk's built with exp build:android --release-channel <release-channel-name>. When we’ve published to production using exp publish, we’ve discovered bugs that were completely unreproducible using either release channels or built .apk's. These issues include:

  • The text input on Android being blocked by the keyboard, as bottom does not seem to take into account the virtual navigation bar height.

  • The method KeyboardAvoidingView uses to push up elements differs between the two environments, making it impossible to know what the production build actually looks like until testing on the default release channel. The issue is documented here:

  • We attempted to pass the result of a function that looks something like this:

const htmlSource =
  (key: string): string =>

into a WebView's source as the html prop. While this worked perfectly in a release channel and the standalone build, the final, published result on the default release channel didn’t work.

We always figured that publishing to default created binaries instead of serving an app within the context of the Expo app, but as these issues become more urgent and the divide between our production app and staging app grows, we need to understand what methods we can take to best reproduce our production environment.

@notbrent Is there any documentation on why published builds in the app store act differently from builds in other release channels? For more information about the different behaviour we’re experiencing, see my post above.

  • there is no reason inherent to release channels why the htmlSource example you mentioned would work on one release channel and not on another, i suspect this may be an issue in the app code.
  • what you are referring to with the keyboard depends on the value of android:windowSoftInput and how that relates to the status bar. by default in expo managed apps the android status bar is transparent, but if you change it using the statusBar key in app.json or using the react-native StatusBar api so that it is opaque (and everything is laid out below it) then it changes the behavior of how the window resizes when the keyboard appears. there is no difference that i am aware of with how this behaves in development or in a standalone app or on a different release channel, the only difference is the app code.

we’ll need some kind of reproducible example for the issues you’ve mentioned to investigate further, let me know if you can provide that!

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