APK and Expo Client android app are different

Please provide the following:

  1. SDK Version: 36
  2. Platforms(Android/iOS/web/all): all

I am building a cross-platform app with expo SDK36. I am testing with the expo client on android and ios.

It seems that the built expo apk downloaded on expo is different than the android version tested from my android expo client.

I can’t scroll on my views with the app APK, hopefully, I saw it.

  • Is this an expo bug and is this expected? I was expecting to have the same app on both expo and real app.
  • I must rebuild until I find the bug, the APK and expo pipelines are quite busy, how can I troubleshoot efficiently without ejecting?

There are some differences between standalone apps and apps running in the Expo client, but not something like scrolling.

Can you make a small example that reproduces the problem?

If you want to build the app yourself you could look into running turtle-cli.

Thanks for your reply, can you precise the differences?

About the small example, this It is one of my public expo projects, perhaps I can email it to you? (QR code + apk), I can’t find your email anywhere.

Sorry, I don’t have a list. The documentation should mention differences. e.g.:


I have read that link and I am not sure if I am following you. Why do you need a list?

This link does not advertise about the differences between android and apk. So far I am not able to troubleshoot the apk efficently, I need to build it on expo pipelines which can takes week before I found a solution.

I am not willing to eject as I will have to take care of ios configuration and I currently do not have any macos at my disposition.

The offering to test the app was kind and I hope you can have a look at some point.

Thanks and best

You asked for a list of the differences between an app running in the Expo client and a standalone app. I do not have such a list.

I understand that debugging by making a change and building on Expo’s build servers could take a long time and be very frustrating. So I suggest you look into building the app yourself using turtle-cli. This is a way to build standalone apps yourself instead of using Expo’s build servers. This is not about ejecting. I have not tried it myself yet, so I’m not sure what’s involved if you do not have access to a Mac, and presumably you’d only be able to build an Android app in that case. But if you need to bypass the Expo build servers, this would be the way to do it.

Wrt. having a look at your app, it’s best to create an example that is as small as possible that still demonstrates the problem. Often when doing this one figures out the problem, and if not, it makes it easier for someone else to figure out without being bogged down by code that is unrelated to the problem.

EDIT: I posted the link above as an example of a difference between a standalone app and an app running in the Expo client.

It says:

TaskManager works out of the box in the Expo client on Android, […]
Standalone apps need some extra configuration […]

Sure, I will try to to go that way then. At least, to find the root cause.

About my minimal example, there is no such hard code, the reproduction will include the same implementation for the routing, because the most basic app example doesn’t have that issue and you probably know it.

I had to implement both react-router and react-navigation to support web and native, they can be change at runtime for development convenience (since RN5 use JSX it was possible).

All the pages can be unplugged to the routing system, the error happen on the home page which does not have anything.

The related code that could cause the scrolling issue can be :

  1. in RN5 (since it’s the default navigation library activated for the apk)
  2. in my core where I init the routing (a ScrollView, an overflow, ListView within ListView…)

This is why the reproduction code would remain the same minus all the unecessary pages.

I believe the issue is in (2) but it is hard to catch since (1) is massively tested, but as you said it is pretty hard to catch especially that I do not know if the expo client app is a web app completely different than the native builded apk.

Regarding TaskManager, why is it necessary and how having it enabled on the apk will make the app identical to the expo distributed app, this is a mystery.

I still do not get how big are the differences and how I could rely on expo client , at what point, for both ios and android development.

Thanks a lot for your time.

Hi. It seems we are talking past each other :slight_smile:

I am not saying you need TaskManager. You asked if it was expected for there to be differences between a standalone app and the Expo client app. I said yes there were certain differences. You asked for a list of those differences and I said I don’t have any, but for example, the TaskManager is one such place where there is a difference.

I hope that clarifies what I was trying to say. If not, then please forget I mentioned the TaskManager :slight_smile:

A standalone app and an app running in the Expo client should be mostly the same. There are a few differences (e.g. with TaskManager) but I don’t have a list of all the differences. So you should be able to use the Expo app for development as long as you read the documentation to see if there are any documented differences, and also test standalone builds periodically.

I hope that helps.

1 Like

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