{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/react-native/issues/19737","repository_url":"https://api.github.com/repos/facebook/react-native","labels_url":"https://api.github.com/repos/facebook/react-native/issues/19737/labels{/name}","comments_url":"https://api.github.com/repos/facebook/react-native/issues/19737/comments","events_url":"https://api.github.com/repos/facebook/react-native/issues/19737/events","html_url":"https://github.com/facebook/react-native/issues/19737","id":332776507,"node_id":"MDU6SXNzdWUzMzI3NzY1MDc=","number":19737,"title":"[META] Upgrading JSC","user":{"login":"kelset","id":16104054,"node_id":"MDQ6VXNlcjE2MTA0MDU0","avatar_url":"https://avatars3.githubusercontent.com/u/16104054?v=4","gravatar_id":"","url":"https://api.github.com/users/kelset","html_url":"https://github.com/kelset","followers_url":"https://api.github.com/users/kelset/followers","following_url":"https://api.github.com/users/kelset/following{/other_user}","gists_url":"https://api.github.com/users/kelset/gists{/gist_id}","starred_url":"https://api.github.com/users/kelset/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kelset/subscriptions","organizations_url":"https://api.github.com/users/kelset/orgs","repos_url":"https://api.github.com/users/kelset/repos","events_url":"https://api.github.com/users/kelset/events{/privacy}","received_events_url":"https://api.github.com/users/kelset/received_events","type":"User","site_admin":false},"labels":[{"id":870851515,"node_id":"MDU6TGFiZWw4NzA4NTE1MTU=","url":"https://api.github.com/repos/facebook/react-native/labels/:large_blue_diamond:Android","name":":large_blue_diamond:Android","color":"bfd4f2","default":false},{"id":468774151,"node_id":"MDU6TGFiZWw0Njg3NzQxNTE=","url":"https://api.github.com/repos/facebook/react-native/labels/Core%20Team","name":"Core Team","color":"0052cc","default":false},{"id":298626951,"node_id":"MDU6TGFiZWwyOTg2MjY5NTE=","url":"https://api.github.com/repos/facebook/react-native/labels/For%20Discussion","name":"For Discussion","color":"0052cc","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-06-15T13:38:12Z","updated_at":"2018-06-15T19:13:58Z","closed_at":null,"author_association":"COLLABORATOR","body":"The purpose of this issue is to create a \"single point of truth\" regarding the efforts related to upgrading the JSC used by the `react-native` repo/project, in order to coordinate and recap all the efforts connected to this subject.\r\n\r\n## Foreword\r\n\r\nThe JavaScriptCore (JSC), basically, allows Android developers to use JavaScript natively in their apps - you can read here for [more details about how react native uses engines](https://www.reactnative.guide/3-react-native-internals/3.1-react-native-internals.html).\r\n\r\nCurrently, `react-native` bundles in the Android app [android-jsc](https://github.com/facebook/android-jsc), which is outdated and relies on old native tooling (ex. NDK v10).\r\n\r\n## Why\r\n\r\nUpgrading the JSC would improve **greatly** performances for `react-native` apps running on Android, and allow support for x64 builds on Android apps.\r\n\r\nWhich links back this to the main \"Roadmap of future Android(s)\" issue #19297 - [quote](https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html):\r\n\r\n> In anticipation of future Android devices that support 64-bit code only, the Play Console will require that new apps and app updates with native libraries provide 64-bit versions in addition to their 32-bit versions. This can be within a single APK or as one of the multiple APKs published.\r\n\r\n## Related\r\n\r\n### PRs\r\n\r\nCurrently there are two approaches possible, keep relying on the android-jsc bundled but changing some other configs:\r\n\r\n* [WIP] Android 64-bit #17640\r\n\r\n* add arm64 and x86_64 support #18754\r\n\r\nWhich seems to not be the way to go, given that [internally FB doesn't use it](https://github.com/facebook/react-native/issues/2814#issuecomment-392894183).\r\n\r\nThe alternative is to move to the [JSC fork](https://github.com/react-community/jsc-android-buildscripts) maintained by some important players in the core & community:\r\n\r\n* Build 64bit binaries for Android #19536\r\n\r\n### Issues\r\n\r\n* React Native for Android is incompatible with 3rd-party 64-bit libraries #2814\r\n\r\n* React Native apps fail to build since NDK update to r17 (due to removed support for ARMv5/armeabi) #19321\r\n\r\n* potentially (as @kmagiera wrote in core), this unfortunately would bring some significant footprint penalty: JSC built with intl enabled takes roughly 5M more than without it. This needs to be multiplied by the number of CPU archs included (e.g. x86, armv7, arm64, x86_64), which leads to an \"Hello World\" base app to ~40MBs - unless split apk is enabled. But this it potentially \"automatically\" fixed by Google via their new [Android App Bundle](https://developer.android.com/platform/technology/app-bundle/) feature.\r\n\r\n---\r\n\r\nAgain, this issue is for discussing and keeping everyone updated with decisions around this subject (based on discussions happened with the core team and open issues in the repo). Please avoid going OT."},"comment":{"url":"https://api.github.com/repos/facebook/react-native/issues/comments/397716887","html_url":"https://github.com/facebook/react-native/issues/19737#issuecomment-397716887","issue_url":"https://api.github.com/repos/facebook/react-native/issues/19737","id":397716887,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NzcxNjg4Nw==","user":{"login":"LegNeato","id":368904,"node_id":"MDQ6VXNlcjM2ODkwNA==","avatar_url":"https://avatars0.githubusercontent.com/u/368904?v=4","gravatar_id":"","url":"https://api.github.com/users/LegNeato","html_url":"https://github.com/LegNeato","followers_url":"https://api.github.com/users/LegNeato/followers","following_url":"https://api.github.com/users/LegNeato/following{/other_user}","gists_url":"https://api.github.com/users/LegNeato/gists{/gist_id}","starred_url":"https://api.github.com/users/LegNeato/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LegNeato/subscriptions","organizations_url":"https://api.github.com/users/LegNeato/orgs","repos_url":"https://api.github.com/users/LegNeato/repos","events_url":"https://api.github.com/users/LegNeato/events{/privacy}","received_events_url":"https://api.github.com/users/LegNeato/received_events","type":"User","site_admin":false},"created_at":"2018-06-15T19:13:58Z","updated_at":"2018-06-15T19:13:58Z","author_association":"NONE","body":"FWIW, I have patches out for both the two issues in Buck blocking RN:\r\n\r\nFor #1: https://github.com/facebook/buck/pull/1889\r\nFor #2: https://github.com/facebook/buck/pull/1894"}}
{"actor":{"display_login":"LegNeato"}}