Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interaction with CodePush #36

Closed
jacque006 opened this issue Jul 15, 2019 · 4 comments
Closed

Interaction with CodePush #36

jacque006 opened this issue Jul 15, 2019 · 4 comments
Labels
question Further information is requested

Comments

@jacque006
Copy link

Hello,

Is Hermes usable with Microsoft's Code Push? Or does the pre-compilation depend on JS assets being in the iOS/Android binary?

@kaushikwavhal
Copy link

IMO, it should be. OTA is one of the USP of RN. And as far as i now, OTA bundle is essentially a zip file, so it can contain image assets and bytecode file.

@dulinriley dulinriley added the question Further information is requested label Jul 17, 2019
@willholen
Copy link
Contributor

We don't currently have an official strategy or integration with Code Push. However, nothing stops you from pushing your own pre-compiled bytecode files -- they essentially correspond 1:1 to JavaScript bundle files and can be loaded and managed in much the same way.

When given a file, Hermes will examine the header to determine whether it's JS or bytecode and load it accordingly, so you don't have to change anything about how the file is loaded or even which extension it has.

There is one significant caveat though: a bundle compiled with one version of Hermes will not run on a different version.

To maximize efficiency and productivity, we don't try to maintain forward or backward compatibility between versions. If you want to decouple app and code releases through code pushes, you should either stick to a specific version of Hermes, or have a strategy for pushing different bytecode to each applicable Hermes version.

(Specifically, the compiler encodes a bytecode version number in the bundle that the engine verifies on load).

None of this applies to standard apps that just include their bytecode in the APK. In this case you're free to upgrade Hermes at any time since the bytecode will always be compiled with the relevant version.

@kaushikwavhal
Copy link

@willholen Thanks for the update.
As i understand, An Hermes version upgrade can be treated in the same we as we treat a React-Native version upgrade in OTA. Backward and forward compatibility can work for the app versions which don't involve any change on the native side (Hermes or RN ).

@eggli
Copy link

eggli commented Aug 6, 2019

Just a head up, I've created a PR to add Hermes support on CodePush CLI here, feel free to comment:

microsoft/appcenter-cli#627

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

5 participants