Key changes
Bundle Mode considered stable
Bundle Mode is now considered stable and the recommended way of using Worklets.
Previous mode (called Legacy Eval Mode) is still enabled by default.
https://docs.swmansion.com/react-native-worklets/docs/bundleMode/
Robust API for module import forwarding
Previous workletizableModules API was removed and replaced with more
configurable importForwarding, along with documentation explaining how to use it.
https://docs.swmansion.com/react-native-worklets/docs/bundleMode/importForwarding/
- feat(Worklets): module import forwarding API by @tjzel in #9638
- docs(Worklets): importForwarding API by @tjzel in #9665
Native serialization support for ArrayBufferView
ArrayBufferView objects (like TypedArrays) are now serialized via a dedicated
native code path, reducing serialization overhead.
- Worklets: added native serialization for ArrayBufferView by @tshmieldev in #9475
Other changes
- worklets plugin: preserve JSX imports in bundle mode by @hannojg in #9212
- feat(Worklets): shared memory docs guide by @tjzel in #9282
- fix(bundlemode):
getBundleModeMetroConfigconsider user config's resolveRequest by @hannojg in #9327 - fix: runtime tests in release by @tjzel in #9500
- fix(deps): declare @babel/types as a dependency by @pkuczynski in #9511
- refactor: Encapsulate runtime registration lock with RAII by @tomekzaw in #9519
- chore: enable Bundle Mode in repository by default by @tjzel in #9523
- fix: use optional chaining on Platform.OS to prevent crash in Bundle Mode by @MelloB1989 in #9525
- Worklets: changed inaccessibleobject to error by @tshmieldev in #9532
- docs: Sort worklets compatibility table versions numerically by @MatiPl01 in #9572
- perf: Cache
isOnJSQueueThreadJNI method lookup by @tomekzaw in #9578 - fix: Remove use-after-move in
makeJWorkletRuntimeWrapperby @tomekzaw in #9580 - refactor: Remove no-op
registerNatives({})inJWorkletRuntimeWrapperby @tomekzaw in #9582 - refactor: Deduplicate
AndroidUISchedulerglobal ref, avoid null-deref after invalidate by @tomekzaw in #9583 - fix(pods): Fix invalid
react-native/../react-nativeresolution for aliases by @kitten in #9592 - fix(Worklets): always expecting sourceMaps in unpackers by @tjzel in #9607
- fix(Worklets): Babel plugin not detecting production environment by @tjzel in #9609
- fix: build.gradle.kts not falling back to default ABIs by @tjzel in #9611
- chore(Worklets): cxx nits by @tjzel in #9612
- fix: 30fps layout animations on iOS release builds by @bartlomiejbloniarz in #9616
- fix: ruby scripts leaking functions to global scope by @tjzel in #9617
- fix(Worklets): multiple passes for generated worklet files by @tjzel in #9618
- feat(Worklets): test Babel plugin on a Windows runner by @tjzel in #9619
- fix(Worklets): autoworkletization for nested worklets by @tjzel in #9632
- chore(Worklets): runtime tests nits by @tjzel in #9633
- refactor(Worklets): use shims for react-native imports by @tjzel in #9640
- Remove CMake version requirement by @piaskowyk in #9643
- fix: Resolve unused HERMES_V1_ENABLED CMake warning by @tomekzaw in #9645
- fix(worklets): Keep getTransformOptions arguments in metro for bundle mode by @Warabi1915181 in #9658
- chore(Worklets): versioned docs by @tjzel in #9664
- fix(Worklets): RemoteFunction memory cycle by @tjzel in #9673
- docs(worklets): Try out section get started leads to getting started by @enisdenjo in #9674
- docs(Worklets): rename plugin options page to .mdx by @tjzel in #9678
- chore: bundle mode for tvos by @tjzel in #9693
- chore: pre-release nits by @tjzel in #9698
New Contributors
- @MelloB1989 made their first contribution in #9525
- @pkuczynski made their first contribution in #9511
- @finloop made their first contribution in #9534
- @sorinc03 made their first contribution in #9589
- @audrius-savickas made their first contribution in #9649
- @kasperski95 made their first contribution in #9435
- @enisdenjo made their first contribution in #9674
- @Warabi1915181 made their first contribution in #9658
Full Changelog: worklets-0.9.2...worklets-0.10.0