{"id":14647,"library":"jsc-android","title":"JavaScriptCore for Android (React Native)","description":"jsc-android provides pre-built versions of JavaScriptCore (JSC) for integration into React Native applications running on the Android platform. It is a critical native dependency for React Native's JavaScript runtime on Android, allowing developers to use a modern and optimized JavaScript engine. The project is actively maintained by the React Native community, with releases tied to WebKitGTK updates and React Native compatibility. Recent stable versions like `v294992.0.0` (as of its release) include updates to WebKitGTK and React Native compatibility. Its key differentiator is providing an up-to-date, performant JSC engine for Android, often replacing older system-provided WebView JavaScript engines. This approach allows for more frequent JSC updates on Android, aligning with how React Native on iOS utilizes the built-in, frequently updated JSC.","status":"active","version":"250231.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/react-native-community/jsc-android-buildscripts","tags":["javascript","react-native","android","jsc"],"install":[{"cmd":"npm install jsc-android","lang":"bash","label":"npm"},{"cmd":"yarn add jsc-android","lang":"bash","label":"yarn"},{"cmd":"pnpm add jsc-android","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core JavaScript runtime provider for React Native Android applications.","package":"react-native","optional":false},{"reason":"Required for building the native binaries from source, though pre-built AARs are typically consumed.","package":"android-ndk","optional":true}],"imports":[{"note":"This package is a native Android dependency providing the JavaScript execution environment for React Native. It is integrated at the Android build level (via `build.gradle`) and does not expose symbols for direct import into JavaScript or TypeScript code. Developers interact with its presence through the React Native build system.","wrong":"import JSC from 'jsc-android';","symbol":"JavaScriptCore Runtime","correct":"/* No direct JavaScript/TypeScript import statement for jsc-android. */"}],"quickstart":{"code":"import React from 'react';\nimport { View, Text, StyleSheet, SafeAreaView } from 'react-native';\n\nconst App = () => {\n  return (\n    <SafeAreaView style={styles.container}>\n      <View style={styles.content}>\n        <Text style={styles.title}>Welcome to React Native!</Text>\n        <Text style={styles.subtitle}>\n          Your JavaScript code on Android is powered by{' '}\n          <Text style={styles.highlight}>jsc-android</Text>.\n        </Text>\n        <Text style={styles.instruction}>\n          jsc-android is implicitly included as a native dependency in most React Native projects.\n          To verify the version used, check your Android project's `app/build.gradle` file for a\n          dependency similar to `implementation \"org.webkit:android-jsc-intl:+\"`.\n        </Text>\n      </View>\n    </SafeAreaView>\n  );\n};\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    backgroundColor: '#f5f5f5',\n  },\n  content: {\n    flex: 1,\n    justifyContent: 'center',\n    alignItems: 'center',\n    padding: 20,\n  },\n  title: {\n    fontSize: 24,\n    fontWeight: 'bold',\n    marginBottom: 10,\n    color: '#333',\n  },\n  subtitle: {\n    fontSize: 18,\n    textAlign: 'center',\n    marginBottom: 20,\n    color: '#555',\n  },\n  highlight: {\n    fontWeight: 'bold',\n    color: '#007bff',\n  },\n  instruction: {\n    fontSize: 14,\n    textAlign: 'center',\n    color: '#777',\n    marginTop: 15,\n  },\n});\n\nexport default App;\n","lang":"typescript","description":"This code illustrates a basic React Native application that implicitly uses `jsc-android` as its JavaScript runtime on Android. It highlights that no direct JavaScript/TypeScript imports are needed, as `jsc-android` is a native build dependency. The description also guides users to verify its inclusion via the Android project's `build.gradle` file."},"warnings":[{"fix":"Update your `minSdkVersion` to 21 or higher in `android/app/build.gradle`.","message":"From `v294992.0.0` onwards, the minimum supported Android SDK version is 21. Projects targeting an SDK version below 21 will fail to build.","severity":"breaking","affected_versions":">=294992.0.0"},{"fix":"Ensure your `android/app/build.gradle` specifies `implementation \"org.webkit:android-jsc-intl:+\"` and that any `resolutionStrategy` is updated accordingly.","message":"Starting with `v294992.0.0`, only the `Intl` variant (`org.webkit:android-jsc-intl`) is officially supported and distributed. Attempting to use the non-Intl variant or older `android-jsc` artifact might lead to build failures or missing internationalization features.","severity":"breaking","affected_versions":">=294992.0.0"},{"fix":"Upgrade to `jsc-android@250230.2.1` or a newer version to benefit from crash fixes for `arm64` architectures.","message":"Earlier versions of `jsc-android` (prior to `v250230.2.1`) were known to cause crashes on `arm64` devices due to issues in the underlying WebKitGTK or NDK versions used for compilation.","severity":"gotcha","affected_versions":"<250230.2.1"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Increase `minSdkVersion` to 21 or higher in your `android/app/build.gradle` file.","cause":"The project's `minSdkVersion` in `build.gradle` is set below 21, which conflicts with `jsc-android` requirements from version `294992.0.0` onwards.","error":"Minimum supported Android SDK is 21, but project minSdkVersion is lower."},{"fix":"Add `maven { url \"$rootDir/../node_modules/jsc-android/dist\" }` to your `allprojects.repositories` block in `android/build.gradle`. Ensure the dependency in `app/build.gradle` is `implementation \"org.webkit:android-jsc-intl:+\"`.","cause":"This usually indicates that the Maven repository for `jsc-android` is not correctly configured in your `android/build.gradle` or there's a typo in the dependency declaration.","error":"Could not find `org.webkit:android-jsc-intl:+` or `org.webkit:android-jsc:+`."},{"fix":"Upgrade `jsc-android` to version `250230.2.1` or later, which includes fixes for `arm64` crashes.","cause":"Older versions of `jsc-android` had known issues leading to crashes on `ARM64` architecture devices.","error":"Native crash in JavaScriptCore (JSC) on `ARM64` devices."},{"fix":"Add `packagingOptions { pickFirst '**/libgnustl_shared.so' }` (or the conflicting file path) to your `android` block in `app/build.gradle`.","cause":"Multiple dependencies are trying to include the same native library (`.so` file), leading to an APK packaging conflict during the Android build.","error":"More than one file was found with OS independent path 'lib/armeabi-v7a/libgnustl_shared.so' (or similar native library conflict)."}],"ecosystem":"npm"}