Is isRemoteJSEnabled iOS only?


#1

The way the docs are describing it it is, but from what I read it seems as it also should work for android.


#2

Yes isRemoteJSEnabled is iOS only. Did something in the documentation lead you to believe it would work for Android?


#3

Thanks for your response @davepack

No it was a response to a question on Stack Overflow that made me wonder. I read the docs as it is iOS only.

But then comes my next question: Can I somehow avoid publishing to Android?

In a bigger perspective, I want to build .ipa’s and .apk’s that I can distribute to testers before going into prod.

Another approach I’ve been considering is to make a branch tool that will change the required properties in my app.json so my app will be published on a different expo url. I’m not sure which properties that would though, but slug, bundleIdentifier (iOS) and package (android) would an ok guess I think.

You might want to start a new thread, which is totally ok, just let me know.


#4

For anyone coming by here with the same problem as I have, this might help you: https://github.com/oliverbenns/expo-deploy

I haven’t tried it out yet as we will probably detach instead.


#5

Just recently detached our app to implement IAP. One problem that we continuously notice (even before the detachment) is that the app seems to hang (sometimes crash) during the 1st load on Android. Reloading the app seems to solve the problem in every case.

We would like to try disabling the automatic JS download, as that may be what’s causing this issue (or at least its worth a try).

From the docs

(Note that this will not work out of the box with ExpoKit projects)

How can we disable the remote JS download using ExpoKit?


Here is a copy of the error message that occurs on 1st load:

E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
                  Process: com.modenero.***, PID: 5275
                  java.lang.NullPointerException: Attempt to invoke interface method 'void host.exp.exponent.experience.DevBundleDownloadProgressListener.onProgress(java.lang.String, java.lang.Integer, java.lang.Integer)' on a null object reference
                      at versioned.host.exp.exponent.ExponentDevBundleDownloadListener.onProgress(ExponentDevBundleDownloadListener.java:27)
                      at com.facebook.react.devsupport.DevSupportManagerImpl$22.onProgress(DevSupportManagerImpl.java:819)
                      at com.facebook.react.devsupport.BundleDownloader$1$1.execute(BundleDownloader.java:122)
                      at com.facebook.react.devsupport.MultipartStreamReader.emitChunk(MultipartStreamReader.java:69)
                      at com.facebook.react.devsupport.MultipartStreamReader.readAllParts(MultipartStreamReader.java:116)
                      at com.facebook.react.devsupport.BundleDownloader$1.onResponse(BundleDownloader.java:91)
                      at expolib_v1.okhttp3.RealCall$AsyncCall.execute(RealCall.java:135)
                      at expolib_v1.okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                      at java.lang.Thread.run(Thread.java:761)


#6

Found the following “solution” in Canny, but don’t know where the path shown is located. Can anyone verify this is the proper solution to disable the JS download for Android in ExpoKit.

For IOS, isRemoteJSEnabled option works pretty well for this issue.

For Android, we have a walk around:

Delete the line 59 - 62 at android/expoview/src/main/java/host/exp/exponent/Constants.java, before > build the app. It will still request the manifest but will not download the JS bundle anymore.


#7

Something new on this? We are experiencing the same problems. How can we do isRemoteJSEnabled on android when not ejected and when ejected?