Version Packages (rc) - #394
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
August 11, 2026 06:52
74be91a to
0cfc8c5
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
August 11, 2026 07:16
0cfc8c5 to
5f3c061
Compare
kraenhansen
force-pushed
the
next
branch
2 times, most recently
from
August 12, 2026 10:13
87f54e2 to
bedf5dd
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
August 12, 2026 10:14
5f3c061 to
5f4534e
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
7 times, most recently
from
August 13, 2026 08:27
c869c4a to
b815394
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
2 times, most recently
from
August 13, 2026 10:51
7116a7a to
2b1b187
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
12 times, most recently
from
August 13, 2026 19:00
790c8f1 to
6da56d5
Compare
github-actions
Bot
force-pushed
the
changeset-release/next
branch
from
August 13, 2026 22:16
6da56d5 to
8b62cea
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to next, this PR will be updated.
nextis currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, runchangeset pre exitonnext.Releases
react-native-node-api@2.0.0-rc.0
Major Changes
c3c321e: Adopt Hermes' first-party Node-API (the
hermesNapitarget on thestatic_hbranch) instead of patching Hermes with our own implementation. Addons now run
against a real Node-API environment created with
hermes_napi_create_env(), oneper addon as in Node, and Node-API is bumped from v8 to v10.
This drops support for React Native 0.79–0.81: the vendored Hermes is built from
a pinned
static_hcommit and requires the Hermes build scripts shipped withReact Native 0.87 and later. Older React Native versions are still served by
previously published releases.
Minor Changes
cf5ed4e: Provide a
hermes_napi_hostimplementation to the Hermes Node-API environments. This enables thread-safe functions (napi_create_threadsafe_functionand friends) and movesnapi_async_workexecution onto a worker pool — previously theexecutecallback ran on the JavaScript thread, blocking it for the duration of the work. The host is also in place before an addon's module init runs, so async work and thread-safe functions can now be created during initialization.56ae5f8: Stop compiling Hermes as part of every iOS app build. The Cocoapods integration
now resolves the pinned commit with
prebuilt-hermesand hands the archive'spath to React Native through
HERMES_ENGINE_TARBALL_PATH— sohermes-engine.podspecvendors the prebuilt frameworks instead of running its"Build Hermesc" and "Build Hermes" script phases.
Building Hermes from source remains available and is the faster loop while
iterating on Hermes itself, since Xcode then rebuilds it incrementally: set
REACT_NATIVE_NODE_API_HERMES_FROM_SOURCE=1beforepod install. SettingREACT_NATIVE_OVERRIDE_HERMES_DIRorHERMES_ENGINE_TARBALL_PATHyourselfstill takes precedence, and Android is unchanged.
166b3bf: Add a
prebuilt-hermescommand, which resolves an archive of the pinned Hermescommit prebuilt for Apple platforms and prints its path. The archive holds the
destrootlayout React Native'shermes-engine.podspecexpects from a tarballpointed at by
HERMES_ENGINE_TARBALL_PATH, so an app that sets that variablevendors the prebuilt frameworks rather than compiling Hermes as part of its own
build.
It is resolved from a local cache, then from a release asset published for the
pinned commit, and only built locally if neither has it. Its name covers
everything that changes its contents — the pinned commit, the React Native
version whose
ReactCommon/jsiit is compiled against, the build type and theplatforms — so a stale archive can never be mistaken for a matching one.
Nothing consumes this yet:
pod installstill builds Hermes from source.715a24e: Route
napi_fatal_exceptionthrough React Native'sErrorUtils.reportFatalErrorinstead of unconditionally logging and callingabort(). This is what node-addon-api calls whenever an exception escapes a thread-safe-function callback, so a single throwing tsfn callback no longer hard-kills the app: in dev the error and its stack now surface in LogBox, in release RN's default handler rethrows into the native crash path, and apps can observe or handle it viaErrorUtils.setGlobalHandler— the moral equivalent of Node's'uncaughtException'. The previous stringify-and-abort behavior remains as a fallback for whenErrorUtils/reportFatalErrorisn't available (non-RN embedders, very early startup) or the handler itself throws.Patch Changes
48fa7fc: Upgrade
bufoutto v1.0.0, which keeps the number of listeners on the processand the output streams constant regardless of how many children are spawned
concurrently: a single shared
exit/SIGINTlistener is attached only whilechildren are running, and every child pipes into one shared pass-through per
destination stream.
That removes the reason for the CLIs to raise
EventEmitter.defaultMaxListenersto 100, so those assignments are gone and Node's default limit again applies —
restoring the leak warning it exists to give.
c22f39c: Drop the host's shadowing implementations of Node-API functions that Hermes'
first-party Node-API already provides, so addons observe Hermes' behavior
instead of the host's older shims:
napi_get_node_versionnow reports Hermes' own version (release name"hermes") instead of unconditionally failing withnapi_generic_failure.napi_is_buffernow returnstrueonly forUint8Array, matching Node,instead of any
ArrayBuffer/TypedArray.napi_get_buffer_infonow returnsnapi_invalid_argfor non-Uint8Arrayvalues, matching Node, instead of
napi_okwith zeroed output.napi_create_buffer_copynow writes a non-NULLresult_dataargument, asdocumented, instead of silently ignoring it.
napi_create_buffer,napi_create_external_bufferandnapi_get_versionare unchanged in observable behavior, now served by Hermes directly.
This also fixes a bug where calling
napi_get_buffer_infoon a non-Uint8Arraytyped array (e.g. a
Float64Array) left a process-global flag corrupted, sothat every subsequent
napi_create_buffer/napi_create_external_buffercallproduced the wrong typed array view.
napi_fatal_errorkeeps its host-side implementation, so fatal Node-APIerrors keep reaching logcat on Android instead of only stderr.
f41deb0: Load addons through Hermes'
hermes_napi_load_moduleinstead of the host's owndlopen+dlsymimplementation:napi_module_registerare now supported. Previously only addons exporting anapi_register_module_v1symbol could be loaded, and the rest resolved toundefined.requireNodeAddonnow throws an error naming the addon, the paththat was tried and the underlying reason (e.g. the
dlopenerror), insteadof silently resolving to
undefined.node_api_get_module_file_namenow reports the path the addon was loadedfrom, instead of an empty string.
This also opens a Node-API handle scope around loading and initializing an
addon. Without one, the
exportsobject handed to the addon's initializationfunction was not reachable by the garbage collector, so a collection triggered
during initialization could free it while the addon was still populating it.
263a3bc: Fix
prebuilt-hermesfailing to configure the host Hermes compiler. It passedCMAKE_OSX_ARCHITECTURES=arm64;x86_64to build a universalhermesc, but amulti-arch host configure makes llvh's feature try-compiles fail — standard
headers report as missing and the configure dies with "Host compiler appears to
require libatomic, but cannot find it". The host compiler is now configured the
way Hermes and React Native configure it, for the host architecture only.
hermescis consequently native to the Mac that built the archive, so thearchive name now carries the host architecture. An Intel Mac finds no published
archive for its architecture and builds its own, rather than downloading one
whose
hermescit cannot execute.8f91084: Fix
prebuilt-hermesfailing to configure the host Hermes compiler with "Hostcompiler appears to require libatomic, but cannot find it". It exported all
three deployment targets Hermes'
build-apple-framework.shcan ask for to everycommand it ran, including the host compiler build.
XROS_DEPLOYMENT_TARGETisalso a clang driver variable, so clang targeted visionOS against the macOS
sysroot, and every API marked unavailable there —
pthread_mutexattr_init, thefd_sethelpers reached throughunistd.h— failed to compile. Each platformbuild now gets only the deployment target it needs, and the host compiler build
gets none.
0b3df68: Stop emitting
log_debug's per-addon diagnostic chatter (libraryfound/loaded, symbol resolution, ...) in release builds. It is now compiled
out in
NDEBUGbuilds (CMake'sRelease/MinSizeRel/RelWithDebInfoconfigurations, and Xcode's default
Releaseconfiguration), mirroring ReactNative's own dev/release logging split.
log_warningandlog_errorareunaffected and keep firing in every build type.
8cc8e59: Make
vendor-hermes --silentactually silent. The spinners were passedisEnabled: false, which stops the animation but still writes the spinner textand its final symbol to stderr. They now use
isSilent, which suppresses theoutput entirely, leaving the vendored Hermes path on stdout as the command's
only output.
Updated dependencies [48fa7fc]
Updated dependencies [c3c321e]
cmake-rn@0.8.0-rc.0
Minor Changes
1ab6a11: Add support for building projects declaring multiple shared object libraries into Node-API addons.
Each addon is emitted next to the sources it was built from, so that a project
declaring many addons produces the same layout as building each of them on its
own. Both the location and the name of an artifact are derived from the target
that produced it:
--outsupports a new{targetSourceDir}placeholder, expanding to the sourcedirectory of the target being emitted, and now defaults to
{targetSourceDir}/build/{configuration}. This resolves to the same path asbefore, unless
--buildis pointed outside of the source directory.OUTPUT_NAMErather than the CMaketarget name. These are the same unless
OUTPUT_NAMEis set explicitly, which ishow a project can give its targets the unique names CMake requires without
affecting the name of the addon.
Also adds
--concurrency, limiting how many build tasks run at once. It defaultsto the available parallelism, or to 1 when
--verboseis enabled, sinceinterleaved output from concurrent builds is hard to read.
0c1d597: Let a consumer override the Android
ANDROID_STLCMake cache variable viathe existing
-D/--defineoption (e.g.--define ANDROID_STL=c++_static).It still defaults to
c++_shared, matching what React Native itself uses,but an addon that must match a prebuilt third-party dependency's STL, or one
that's genuinely self-contained, can now ask for a different value.
This also fixes an ordering bug where a
--definetargeting any of theAndroid platform's own default CMake variables (including
ANDROID_STL) wassilently discarded: our hardcoded defaults were appended to the CMake
command line after the user-provided
-Darguments, and CMake resolves acache variable set multiple times via
-Dto its last occurrence.d9ab417: Add a
--code-signing-allowedflag tocmake-rn.CODE_SIGNING_ALLOWED=NOremains the default (needed for the free-standing dynamic libraries we produce), but a consumer who needs signed binaries in the XCFramework can now pass--code-signing-allowedto opt in.Patch Changes
48fa7fc: Upgrade
bufoutto v1.0.0, which keeps the number of listeners on the processand the output streams constant regardless of how many children are spawned
concurrently: a single shared
exit/SIGINTlistener is attached only whilechildren are running, and every child pipes into one shared pass-through per
destination stream.
That removes the reason for the CLIs to raise
EventEmitter.defaultMaxListenersto 100, so those assignments are gone and Node's default limit again applies —
restoring the leak warning it exists to give.
Updated dependencies [48fa7fc]
Updated dependencies [c22f39c]
Updated dependencies [c3c321e]
Updated dependencies [f41deb0]
Updated dependencies [cf5ed4e]
Updated dependencies [56ae5f8]
Updated dependencies [166b3bf]
Updated dependencies [263a3bc]
Updated dependencies [8f91084]
Updated dependencies [0b3df68]
Updated dependencies [715a24e]
Updated dependencies [8cc8e59]
gyp-to-cmake@0.6.0-rc.0
Minor Changes
1ab6a11: Add --namespaced-targets to allow a root project to add many sub-projects.
CMake requires target names to be unique across a project tree, so sub-projects
that each declare an
addontarget cannot be added to a single root project. Thisprefixes the target name with the project name, while setting
OUTPUT_NAMEso theartifact keeps the name a
requireresolves against.Patch Changes
weak-node-api@0.2.0-rc.0
Minor Changes
c3c321e: Adopt Hermes' first-party Node-API (the
hermesNapitarget on thestatic_hbranch) instead of patching Hermes with our own implementation. Addons now run
against a real Node-API environment created with
hermes_napi_create_env(), oneper addon as in Node, and Node-API is bumped from v8 to v10.
This drops support for React Native 0.79–0.81: the vendored Hermes is built from
a pinned
static_hcommit and requires the Hermes build scripts shipped withReact Native 0.87 and later. Older React Native versions are still served by
previously published releases.
@react-native-node-api/cli-utils@0.1.5-rc.0
Patch Changes
48fa7fc: Upgrade
bufoutto v1.0.0, which keeps the number of listeners on the processand the output streams constant regardless of how many children are spawned
concurrently: a single shared
exit/SIGINTlistener is attached only whilechildren are running, and every child pipes into one shared pass-through per
destination stream.
That removes the reason for the CLIs to raise
EventEmitter.defaultMaxListenersto 100, so those assignments are gone and Node's default limit again applies —
restoring the leak warning it exists to give.
ferric-cli@0.4.2-rc.0
Patch Changes
48fa7fc: Upgrade
bufoutto v1.0.0, which keeps the number of listeners on the processand the output streams constant regardless of how many children are spawned
concurrently: a single shared
exit/SIGINTlistener is attached only whilechildren are running, and every child pipes into one shared pass-through per
destination stream.
That removes the reason for the CLIs to raise
EventEmitter.defaultMaxListenersto 100, so those assignments are gone and Node's default limit again applies —
restoring the leak warning it exists to give.
c73d30c: Add
--dts-onlyflag toferric build, generating just the TypeScript declaration file and JS entrypoint without cross-compiling any Android/Apple binaries. It still runs a real hostcargo build(napi-rs has no lighter typegen-only mode), so it's meant for regenerating a checked-in declarations fixture rather than for environments without a Rust toolchain.Updated dependencies [48fa7fc]
Updated dependencies [c22f39c]
Updated dependencies [c3c321e]
Updated dependencies [f41deb0]
Updated dependencies [cf5ed4e]
Updated dependencies [56ae5f8]
Updated dependencies [166b3bf]
Updated dependencies [263a3bc]
Updated dependencies [8f91084]
Updated dependencies [0b3df68]
Updated dependencies [715a24e]
Updated dependencies [8cc8e59]