react-native-worklets
0.13.0 · 18 Sep 2026MIT5.7M / weekRepositoryHomepagenpmAtom feed
Latest releases
All 38 releases- 0.13.x · latest line
0.13.0
18 Sep 2026Worklets: networking module with XMLHttpRequest
Worklets: add Blob and FileReader to the networking module
Worklets: add fetch to the networking module
Key changes
Networking on Worklet Runtimes in Bundle Mode
Worklet Runtimes created in Bundle Mode now ship a standalone networking module:
XMLHttpRequest,Blob,FileReader,fetch(whatwg),Headers,Request,Response,FormData,AbortControllerandAbortSignal. It replaces the earlier networking preview and itsFETCH_PREVIEW_ENABLEDfeature flag.createWorkletRuntimeaccepts a newenableNetworkingoption, which defaults totrueand is forced off on runtimes without the Event Loop.Worklets: networking module with XMLHttpRequest
Worklets: add Blob and FileReader to the networking module
Worklets: add fetch to the networking module
Worklets: add FormData to the networking module
Worklets: add AbortController to the networking module
Worklets: add the enableNetworking runtime option
OXC port of the Worklets Babel plugin
The Worklets Babel plugin has a Rust port built on OXC for Bundle Mode. It is available as
react-native-worklets/plugin-oxc/babel, with prebuilt binaries for macOS, Linux and Windows on x64 and arm64.Worklets: port babel plugin to oxc
Fixed-type Synchronizable
createSynchronizableaccepts a newfixedTypeoption. A fixed-type Synchronizable holds a number or a boolean without serialization and exposessetDirty, a non-exclusive write that doesn't wait for othersetDirtycalls. On the C++ sideSynchronizableis now an interface overstd::variantvalues with aSynchronizableDynamicimplementation, and several races on exotic architectors and lock leaks in the dynamic implementation are fixed.Worklets: fixed-type Synchronizable
Worklets: add setDirty to the Synchronizable interface
Worklets: make Synchronizable value access atomic
Worklets: release the Synchronizable lock when a setter throws
Faster startup
The native side of
WorkletsModuleis created on a background thread as soon as the module is created, soinstallTurboModuleonly attaches it to the RN Runtime. In Bundle Mode the bundle is evaluated on the UI Worklet Runtime on a background thread while the RN Runtime evaluates it, instead of on the JS thread instart.Worklets: initialize the native module ahead of time
Worklets: start the UI runtime in Bundle Mode ahead of time
Hermes microtask queue on Worklet Runtimes
Worklet Runtimes use the built-in Hermes microtask queue instead of a custom JS implementation.
Removed SerializableInitializer (SerializableHandle)
The Serializable handle is gone:
SerializableInitializer,createSerializableInitializerand the__initclone path are removed, andmakeShareableserializes its value eagerly into a retaining Serializable.RetainingSerializablecaches its value per runtime.Serializable::ValueType::HandleTypestays in the Compat Stable API enum for ABI compatibility andextractSerializablethrows for it.worklets: per-runtime cache in retainingSerializable
Leaner Babel plugin output
Worklet closures are stored as arrays instead of objects, closure-free worklets are exported directly in Bundle Mode without factory wrappers, and implicit worklet context objects are removed.
navigatoris a known global, so worklets resolve it on their own runtime instead of capturing the main runtime's object by closure.Worklets: treat navigator as a known global in the Babel plugin
chore(rnre+worklets) - less worklets/serialization on run
iOS Swift Package Manager support
Worklets can be integrated on iOS through Swift Package Manager via
Package.swiftand SPM integration metadata inreact-native.config.js. The nightly compatibility check builds the app via SPM on React Native >= 0.87.rnre+worklets: add support for SPM
Safer Worklet Runtime teardown
Destroying a Worklet Runtime now acquires the runtime mutex first, so a synchronous call in flight on another thread finishes, discarded results of synchronous calls are destroyed under the lock, and pending jobs of the async queue and event loop are aborted under the lock instead of destroying their JSI handles on an unrelated thread.
Worklets: acquire the runtime mutex before destroying the JSI runtime
Worklets: destroy discarded sync call results under the runtime lock
Worklets: abort pending jobs under the runtime lock on teardown
Other changes
Worklets: getCurrentThreadId function
Worklets: pad missing native method arguments with undefined
worklets: stop AnimationFrameQueue when WorkletsModule is invalidated
Worklets: stop AnimationFrameQueue dispatch on reentrant invalidate
Serializable umbrella header for expo
Worklets: correct
RetainingSerializable.hinclude in umbrellaSerializable.hWorklets: capture JSX element names into worklet closures
Worklets: dehoist module.exports assignments
Worklets: stop workletizing getters, setters and constructors
Worklets: Crash when handling proto
builds: too strict lint skip matcher
add json-ld to the worklets docs
- 0.12.x · maintenance
0.12.2
8 Sep 2026cherry-pick(worklets-0.12-stable): stop AnimationFrameQueue when WorkletsModule is invalidated
cherry-pick(worklets-0.12-stable): Crash when handling proto
cherry-pick(worklets-0.12-stable): release the Synchronizable lock when a setter throws
What's Changed
cherry-pick(worklets-0.12-stable): stop AnimationFrameQueue when WorkletsModule is invalidated
cherry-pick(worklets-0.12-stable): Crash when handling proto
cherry-pick(worklets-0.12-stable): release the Synchronizable lock when a setter throws
0.12.1
18 Aug 2026cherry-pick(worklets-0.12-stable): extract UI-thread check into UIScheduler::isOnUIThread
0.12.0
11 Aug 2026Worklets: WeakRef on Worklet Runtimes
Worklets: bring Bundle Mode script loading on par with React Native
Worklets: reuse React Native's downloaded dev bundle on Android
Key changes
WeakRef on Worklet Runtimes
Worklet Runtimes now support
WeakRef. This required enabling Hermes' own microtask queue when the runtime is created, and draining it from C++.Worklets: WeakRef on Worklet Runtimes
Bundle Mode script loading on par with React Native
Bundle Mode used to load the script through in-memory copies. On iOS the whole bundle stayed resident in a
std::stringfor the app's lifetime, and on Android a dev-server bundle passed through a JavaStringand two more copies over JNI. Local bundles are now mmapped and Android dev-server downloads stream to a cache file, the same way React Native's own loaders work. Dev-server fetches now also check the HTTP status and surface the error message Metro returns. In development on Android, initialization reuses the bundle React Native has already downloaded.Worklets: bring Bundle Mode script loading on par with React Native
Worklets: reuse React Native's downloaded dev bundle on Android
enableLockingoption increateWorkletRuntimecreateWorkletRuntimeaccepts a newenableLockingoption, which creates a Worklet Runtime without mutex guards. It is meant for advanced use cases, where you can guarantee thread-safety of the runtime.Worklets: add enableLocking option to createWorkletRuntime
Other changes
Worklets: Descriptive warning in createSerializable
Adjust createSerializableInaccessibleObject to the Release createSerializable behavior
Worklets: RetainingSerializable race condition
Worklets: web scheduleOnUI implementation on errors
Worklets: Jest mocks missing APIs
Worklets: UI loop not pausing when the app is backgrounded
Worklets: missing autorelease drain on detached worklet threads
- 0.11.x · maintenance
0.11.4
12 Aug 2026cherry-pick(worklets-0.11-stable): missing autorelease drain on detached worklet threads
cherry-pick(worklets-0.11-stable): UI loop not pausing when the app is backgrounded
Dependency tracking · free for 3 projects
Know when your own dependencies move
react-native-worklets published 28 releases in the last 12 months. Inlinr folds the routine ones into a line and keeps the few that need you.
Advisories reach you
An email when a critical or high advisory affects a project, before the next install.
Upgrades checked first
Peer ranges, Node, ESM-only and types changes read before you bump.
Only what matters
Majors and breaking notes stay; patches and sibling bumps fold into one line.
Registry facts last checked 21 Oct 2026. Releases and advisories last read 21 Oct 2026.