Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: software-mansion/react-native-reanimated

Reanimated - 4.4.0

26 May 09:54

Choose a tag to compare

Key changes

iOS CSS Core Animation

Reanimated 4.4.0 introduces a new platform-backed CSS animation engine on iOS that runs animations
directly on Core Animation layers instead of going through the JS-driven update loop. It is hidden
behind the IOS_CSS_CORE_ANIMATION static feature flag.

  • feat: Wire CSSPlatformTransition with iOS platform implementation by @MatiPl01 in #9325
  • chore: Hide platform animations behind a feature flag by @MatiPl01 in #9493

Animation Backend

A new Animation Backend has been integrated behind a feature flag, which will help greatly with the flow of updating the Shadow Tree in animations.

New useTimestamp hook

A new useTimestamp hook exposes the current frame timestamp as a Shared Value that updates every
frame with the time elapsed since the first frame, with an isActive flag to pause and resume updates.

Precompiled headers on Android

Reanimated's native build on Android now uses precompiled headers (ReanimatedPCH.h), significantly
reducing C++ compile times for both fresh and incremental builds.

Other changes

  • fix(Reanimated): Spring jitter by @piaskowyk in #9463
  • feat: emit ESM package json by @tjzel in #9481
  • Add support for placeholderTextColor in synchronous props by @tomekzaw in #9409
  • Add support for shadowColor in synchronous props by @tomekzaw in #9411
  • Add support for shadowOffset in synchronous props by @tomekzaw in #9412
  • Add support for outlineColor, outlineOffset and outlineWidth in synchronous props by @tomekzaw in #9417
  • Add support for borderBlockColor, borderBlockStartColor and borderBlockEndColor in synchronous props by @tomekzaw in #9418
  • Unify synchronous props logic between platforms by @tomekzaw in #9381
  • Preallocate and reuse synchronous props buffers on Android by @tomekzaw in #9425
  • fix(Reanimated): laggy LA outside of Animation Backend by @tjzel in #9431
  • feat: CSSPlatformAnimation abstraction by @MatiPl01 in #9278
  • feat: CSSPlatformTransition abstraction by @MatiPl01 in #9324
  • chore: Rename EXPERIMENTAL_PLATFORM_CSS_ANIMATIONS to IOS_CSS_CORE_ANIMATION by @MatiPl01 in #9506
  • fix(Reanimated): RCTModernEventEmmitter for older RN by @tjzel in #9181
  • chore(Reanimated): post release 4.3.0 by @tjzel in #9182
  • Add check for conflicting feature flags by @tomekzaw in #9174
  • Store ShadowNodeFamily instead of ShadowNode in UpdatesRegistry by @tomekzaw in #9156
  • Store ShadowNodeFamily::Shared instead of ShadowNodeFamily * in PropsMap and ChildrenMap by @tomekzaw in #9184
  • Remove useInterpolateConfig function and InterpolateConfig and ColorSpace types by @tomekzaw in #9150
  • Bump React Native to 0.85.0-rc.6 by @tomekzaw in #9193
  • Update doNotStrip to keepDebugSymbols by @wisniewskij in #8636
  • Migrated packages/react-native-reanimated java->kotlin by @tshmieldev in #9163
  • removed JSCallInvokerResolver.kt by @tshmieldev in #9198
  • chore: Bump RN to 0.85.0 stable by @MatiPl01 in #9233
  • fix: animation cancellation race condition by @Nodonisko in #9235
  • fix: animation cancellation race condition missing code by @tjzel in #9242
  • Change UI runtime slow animations invocation pattern by @tshmieldev in #9205
  • chore: Remove no longer used StaticPropsRegistry methods and props by @MatiPl01 in #9226
  • chore: Remove unused css code by @MatiPl01 in #9227
  • fix: Incorrect CSS props reverting on CSS transition detach by @MatiPl01 in #9220
  • feat: Strict TS types in LA withInitialValues method by @MatiPl01 in #9232
  • fix: Freeze example crash and different timings by @MatiPl01 in #9247
  • feat: Add support for separate transform props in LA initial values config by @MatiPl01 in #9237
  • refactor: decouple raf and events by @tjzel in #9244
  • feat(Reanimated): Export NativeEventsManager by @j-piasecki in #8655
  • feat: adds withTargetValues modifier to default layout animations by @PiotrWszolek in #8848
  • chore(Reanimated): jest tests for useFrameCallback by @tjzel in #9255
  • docs: Remove withInitialValues for layout transitions by @MatiPl01 in #9258
  • fix: Remove withInitialValues and withTargetValues from layout transitions by @MatiPl01 in #9259
  • feat: Update initial value of shared value by @pranko17 in #8782
  • chore(Reanimated): add lint step to disallow worklets includes by @tjzel in #9262
  • docs: Add new types of initial values in layout animation configs by @MatiPl01 in #9257
  • docs: Add withTargetValues to Layout Animations docs by @PiotrWszolek in #9168
  • fix: Fix handling falsy values in jestUtils getCurrentStyle by @edkimmel in #7494
  • fix: Unistyles flattening regression in 4.3.0 by @MatiPl01 in #9284
  • fix(Reanimated): not flushing updates without mapper runs by @tjzel in #9270
  • fix(Reanimated): useScrollOffset on renderScrollComponent by @tjzel in #9286
  • chore: Extract CSS loop to the separate OperationsLoop class by @MatiPl01 in #9285
  • Chore(Reanimated): reanimatedmoduleproxy refactor by @tshmieldev in #9342
  • fix(Reanimated): registries race conditions by @tjzel in #9323
  • Remove checks for new arch enabled by @tomekzaw in #9311
  • feat: Add short-circuit for scheduleOnUI called from the UI thread on Android by @MatiPl01 in #9343
  • feat: Add LoopOperation interface and operation-based scheduling primitives by @MatiPl01 in #9346
  • docs: remove outdated "Debugging worklets" guide by @tomekzaw in #9355
  • Use REACT_NATIVE_VERSION_MINOR provided by React Native instead of custom definition by @tomekzaw in #8412
  • fix: Attempt to fix EXC_BAD_ACCESS in ReanimatedModuleProxy::performOperations during AnimationFrameBatchinator::flush by @MatiPl01 in #9308
  • Remove legacy CDP debugger setup via HermesExecutorRuntimeAdapter by @tomekzaw in #9356
  • chore(Reanimated)...
Read more

Worklets - 0.9.1

26 May 09:37

Choose a tag to compare

Key changes

Support for cross-runtime Promises

Now functions that return a promise like runOnRuntimeAsync can be used on all runtimes in Bundle Mode, not only the RN Runtime.
The code responsible for memory-management of JavaScript callbacks in C++ was overhauled to support this, which should reduce
the memory imprint and stability of long-held callbacks in brownfield app.

  • feat(Worklets): cross-runtime promise handling in Bundle Mode by @tjzel in #9451
  • refactor(Worklets): remoteFunction memory model by @tjzel in #9272

Uniform Shareable hosting

Shareables can now be hosted on any runtime, not only the UI Runtime.

DX improvements

  • Passing a local function to scheduleOnRN no longer crashes the app in C++ but throws an actionable error in JavaScript.

    • feat(Worklets): actionable error when passing local function to scheduleOnRN by @tjzel in #9386
  • We append an asynchronous stacktrace to error thrown in Worklets for easier debugging.
    This is an opt-out feature that can be disabled with ENABLE_CROSS_RUNTIME_STACK_TRACES static feature flag.

  • Console implementation in Bundle Mode now prints objects exactly the same way on Worklet Runtimes as on the RN Runtime.

Other changes

  • feat(Worklets): Serializable regexp by @tshmieldev in #9494
  • feat(Worklets): respect relative requires in worklets by @tjzel in #9486
  • feat(Worklets): simplified Bundle Mode setup vol2 by @tjzel in #9465
  • feat(Worklets): add native ArrayBuffer serialization support and explicitly deprecate _createSerializable by @tjzel in #9464
  • feat(Worklets): native Error serialization by @tjzel in #9452
  • feat(Worklets): use __RUNTIME_NAME for better error messages by @tjzel in #9410
  • migrated worklets from java to kotlin by @tshmieldev in #9130
  • fix(Worklets): misplaced else when cloning remote function by @tjzel in #9141
  • fix(Worklets): wrong config object in .podspec by @tjzel in #9169
  • chore(Worklets): improve async scheduling API error messages by @tjzel in #9183
  • fix: Worklets x Reanimated compatibility CI by @tjzel in #9188
  • refactor(Worklets): load unpackers with JSI by @tjzel in #8984
  • refactor(Worklets): two-step initialization by @tjzel in #9203
  • Replaced WorkletsError and ReanimatedError with lint rule by @tshmieldev in #9243
  • fix(Worklets): duplicate definitions to call microtasks by @tjzel in #9245
  • Refactored JSIWorkletsModuleProxy to not inherit from HostObject by @tshmieldev in #9252
  • [fix]ed installUnpackers being called in bundleMode by @tshmieldev in #9283
  • CallGuard in cpp, added support for worklet batching by @tshmieldev in #9313
  • Added tests for bundle mode in babel plugin by @tshmieldev in #9318
  • fix(Worklets): shareable deadlock by @tjzel in #9321
  • chore(Worklets): removed stackDetails from bundleMode by @tshmieldev in #9331
  • chore(Worklets): remove duplicate RNRuntime decoration by @tjzel in #9332
  • chore(Worklets) Changed scheduleOnUI to schedule in helper by @tshmieldev in #9376
  • chore(Worklets): documented stack trace flag by @tshmieldev in #9378
  • chore(Worklets): various cleanups by @tjzel in #9387
  • chore(Worklets): update deprecated API snippets by @tjzel in #9392
  • Worklets: fixed memleak in shareable and serializable by @tshmieldev in #9393
  • chore(Worklets): renamed cleanupIfRuntimeExists by @tshmieldev in #9426
  • chore(Worklets): cleaned up ts createWorkletRuntime interface by @tshmieldev in #9427
  • fix(Worklets): remove unused hermes/hermes.h include in UnpackerLoader.h by @tomekzaw in #9448
  • chore(Worklets): serialization code nits by @tjzel in #9453
  • fix(Worklets): repair NDEBUG-only build error in SerializableRemoteFunction by @tomekzaw in #9456
  • chore(Worklets): add recent expo issues to troubleshooting page by @tshmieldev in #9460
  • refactor(Worklets): add hostRuntimeId to JSIWorkletsModuleProxy by @tjzel in #9461
  • chore(Worklets): throw when serializing promises by @tjzel in #9468
  • Symbol serializable hotfix by @tshmieldev in #9476
  • fix(Worklets): unused lambda capture in release Android build by @tomekzaw in #9480
  • chore(Worklets): remove unnecessary CI-s by @tshmieldev in #9484
  • fix(Worklets): eager imports issue by @tjzel in #9488

New Contributors

Full Changelog: worklets-0.8.3...worklets-0.9.1

Reanimated - 4.3.1

07 May 15:44

Choose a tag to compare

What's Changed

  • cherry-pick(Reanimated): Incorrect CSS props reverting on CSS transition detach (#9220) by @MatiPl01 in #9288
  • cherry-pick(Reanimated): Fix animation cancellation race condition missing code (#9242) by @MatiPl01 in #9289
  • cherry-pick(4.3-stable): workflow for OIDC publishing (#9095) by @tjzel in #9298
  • cherry-pick(4.3-stable): useScrollOffset on renderScrollComponent (#9286) by @tjzel in #9299
  • cherry-pick(Reanimated): Fix Unistyles flattening regression in 4.3.0 (#9284) by @MatiPl01 in #9301
  • cherry-pick(4.3-stable): fix registries race conditions (#9323) by @tjzel in #9349
  • release(Reanimated): 4.3.1 by @tjzel in #9353

Full Changelog: 4.3.0...4.3.1

Worklets - 0.8.3

04 May 14:42
eaf522e

Choose a tag to compare

Full Changelog: worklets-0.8.2...worklets-0.8.3

What's Changed

Full Changelog: worklets-0.8.2...worklets-0.8.3

Worklets - 0.8.2 (deprecated)

04 May 12:16
5860be4

Choose a tag to compare

What's Changed

  • cherry-pick(worklets-0.8-stable): shareable deadlock (#9321) by @tjzel in #9335

Full Changelog: worklets-0.8.1...worklets-0.8.2

Reanimated - 4.3.0

25 Mar 16:59

Choose a tag to compare

Key changes

CSS SVG Animations

CSS animations now support animating SVG components and their properties, including Path, Image, LinearGradient, RadialGradient, Pattern and Text. This includes support for animating the d property of Path components with a special handling for path morphing.

Shared Value re-implementation

Shared Value internal implementation changed - now it uses Shareable type from react-native-worklets as its internal value container. That means you can finally use Shared Values from other Worklet Runtimes than just the UI Runtime. Also USE_SYNCHRONIZABLE_IN_MUTABLE optimization feature flag is now enabled by default.

  • feat(Reanimated): enable Synchronizable in Mutable by default by @tjzel in #9068
  • feat(Reanimated): use Shareable for Mutables by @tjzel in #9004

Animated Styles type changes

TypeScript type of Animated Styles now makes it impossible to accidentally pass them to non-animated components. This replaces previous runtime-check for this kind of mistake, which proved to be prone to false positives.

  • refactor: make AnimatedStyle type fail on non-animated components by @tjzel in #8990

Fixes

  • fix: use native processTransformOrigin instead of web version by @maxpotemkin in #8738
  • fix: prefab headers locations by @tjzel in #8747
  • fix: Proper support for nested animatedProps objects and correct cleanup by @MatiPl01 in #8726
  • fix(web): Support originX and originY in layout animations by @choi138 in #8733
  • fix: Web entering animations triggered on view exiting by @MatiPl01 in #8772
  • fix: Animation names array order updates on keyframes order change by @MatiPl01 in #8777
  • fix: Infinity parsing in web CSS animationIterationCount by @MatiPl01 in #8787
  • fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS feature flag crashes by @MatiPl01 in #8822
  • fix: SharedValue.modify strict type definition by @huextrat in #8846
  • fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS incorrect color alphas by @DouweBos in #8841
  • fix: Guard for undefined style in Jest utils by @msynowski in #8878
  • fix: Stop passing nativeID to component in jest unit tests by @MatiPl01 in #8881
  • Fix the issue with next.js throwing errors while hydrating by @5ZYSZ3K in #8869
  • fix: useHandler not working on web without babel plugin by @MatiPl01 in #8883
  • fix: noplugin option being ignored in the web-example by @MatiPl01 in #8933
  • fix: CSS SVGPath android parsing bugfix by @wisniewskij in #8918
  • fix: free __cxa_demangle allocations in SingleInstanceChecker by @jingjing2222 in #8964
  • fix: pass shouldPersistRemote to cloneObjectProperties by @aljadan in #8995
  • fix: Fix native matchVersion not allowing patch version mismatches by @kitten in #9018
  • fix: CSS transitions not working when a prop is added or removed by @MatiPl01 in #9014
    react-native-reanimated/pull/9015
  • fix: static frameworks missing header paths by @tjzel in #9035
  • Fix sync props back to React mechanism by @tomekzaw in #9046
  • Fix: Add missing initialization in SVG Path by @wisniewskij in #9058
  • fix: RN 0.81 TS errors by @tjzel in #9059
  • fix: CSS animation box-shadow crashes by @MatiPl01 in #9065
  • fix: CSS transition flickering on transitionProperty change by @MatiPl01 in #9120
  • fix: guard against null styleProps in PropsRegistry GC by @mobinni in #9052
  • fix - passing negative values to filter crashes on iOS by @intergalacticspacehighway in #9155
  • [Android] Fix commits during drawing by @bartlomiejbloniarz in #9072
  • perf: Don't trigger CSS transition for props with effective duration 0 by @MatiPl01 in #9118
  • chore: useHandler reimplementation by @MatiPl01 in #9090

Refactors

Chores

  • Add _beginSection and _endSection JSI bindings for systraces by @tomekzaw in #9101
  • Add _startProfiling and _stopProfiling JSI bindings for Hermes sampling profiler by @tomekzaw in #9102
  • feat: Common fallback style props builder for any unsupported component by @MatiPl01 in #8989
  • feat: peer dependencies validation by @tjzel in #9019
  • feat: stable API versioning checks by @tjzel in #9105
  • chore: modernize build.gradle scripts by @tjzel in #8707
  • chore: consider new arch always enabled in react-native 0.82+ by @gabrieldonadel in #8771
  • chore: Change props overriding behavior in the props builder by @MatiPl01 in #8877
  • chore: Change folly::dynamic to jsi::Value in updateKeyframes for CSS transitions by @MatiPl01 in #8982
  • chore: bump gradle versions by @tjzel in #8994
  • chore: only consider latest patch in compatibility tables by @tjzel in #9142
  • chore: unpin dependencies by @tjzel in #9143
  • chore(Rea): migrate to RCTModernEventEmitter by @tjzel in #9033
  • chore: Remove unused `has...
Read more

4.2.3

20 Mar 13:24
ea88f03

Choose a tag to compare

What's Changed

Full Changelog: 4.2.2...4.2.3

4.1.7

20 Mar 15:20
c3124e3

Choose a tag to compare

What's Changed

Full Changelog: 4.1.6...4.1.7

Worklets - 0.8.1

20 Mar 13:16

Choose a tag to compare

What's Changed

  • cherry-pick(0.8-stable): misplaced else when cloning remote function (#9141) by @tjzel in #9144
  • release(Worklets): 0.8.1 by @tjzel in #9146

Full Changelog: worklets-0.8.0...worklets-0.8.1

Worklets - 0.8.0

19 Mar 15:24

Choose a tag to compare

Key changes

Features:

  • New shared memory type, Shareable, a building block for Reanimated's Shared Value implementation. See Docs and blogpost for more details.

    • feat(Worklets): implement Shareable type by @tjzel in #8673
  • Stable C++ API bindings for libraries to use.

    • feat(Worklets): stable api bindings for Reanimated by @tjzel in #8996
  • New runOnRuntimeSync API - allows you to schedule a worklet on any Worklet Runtime synchronously. Docs

  • New scheduling APIs, scheduleOnRuntimeWithId, runOnRuntimeSyncWithId - allows you to schedule worklets on Worklet Runtimes just by knowing their id. Docs

    • feat(Worklets): dispatch to Worklet Runtimes from id by @tjzel in #8991
  • New runOnRuntimeAsync API - allows you to schedule a worklet on any Worklet Runtime asynchronously and return a promise with the result. Docs

  • New useful API shorthands for checking current runtime context. Docs

    • feat(Worklets): better runtimeKind checking API by @tjzel in #8758
  • New Worklets Babel plugin option, strictGlobal, that prevents accidental captures of variables from global scope in worklets. Docs

    • feat(Worklets): Babel plugin strict global option by @tjzel in #8857
  • You can now schedule worklets on Worklet Runtimes even outside of Bundle Mode, but with some limitations. There are no limitations when using the Bundle Mode.

    • feat(Worklets): limited scheduling on worklet runtimes outside of bundle mode by @tjzel in #9092

Bundle mode improvements:

  • You no longer need to patch React Native to use Bundle Mode, meaning that you can use pre-built React Native for faster compilation.

    • feat(Worklets): run Bundle Mode without patches to React Native by @tjzel in #8744
  • You no longer need to re-compile Worklets when switching between Bundle Mode and non-Bundle Mode (metro cache reset is still required).

    • feat(Worklets): always compile bundle mode symbols by @tjzel in #9064
  • (experimental) You can now run network request in Bundle Mode Docs

    • feat(Worklets): Worklet Runtime ios fetch by @tjzel in #8410
    • feat(Worklets): android fetch by @tjzel in #8850

Docs:

  • Documentation explaining what are closures in context of worklets, how they work and how to use them. Docs
    • feat(Worklets): docs about closures by @tjzel in #8889

Other changes

  • chore: modernize build.gradle scripts by @tjzel in #8707
  • chore(Worklets): Bundle Mode patches for 0.83.0 by @tjzel in #8737
  • fix: prefab headers locations by @tjzel in #8747
  • fix(Worklets): Add HERMES_V1_ENABLED flag to iOS podspec for Hermes V1 compatibility by @kimchi-developer in #8754
  • feat(Worklets): docs for plugin types by @tjzel in #8633
  • fix(Worklets): missing sideEffects property by @tjzel in #8760
  • chore(Worklets): cleanup metro overrides for bundle mode by @tjzel in #8851
  • refactor(Worklets): obtain BundleMode flag from static feature flags by @tjzel in #8853
  • refactor(Worklets): dont use @react-native/babel-preset for unit tests by @tjzel in #8862
  • fix(Worklets): Synchronizable serialization for objects outside of Bundle Mode by @tjzel in #8887
  • chore(Worklets): rename __generatedWorklets dir by @tjzel in #8894
  • feat(Worklets): docs for new bundle mode by @tjzel in #8759
  • fix(Worklets): false-positive inlineStyles warning on computed [value] by @tjzel in #8897
  • fix: Simplify run-loop and always attach JNI on Android by @mrousavy in #8905
  • Fix bundle mode on windows by @OrfeasZ in #8910
  • fix(worklets): avoid HERMES_V1_ENABLED macro redefinition on RN 0.84+ by @kimchi-developer in #8908
  • chore(Worklets): fix runAsync mock signature by @tjzel in #8916
  • refactor(Worklets): move serializable factories by @tjzel in #8560
  • feat: docs for runOnRuntimeAsync by @riteshshukla04 in #8911
  • fix: sidebar title of runtimeAsync by @riteshshukla04 in #8921
  • docs(Worklets): add gtm by @p-malecki in #8937
  • docs: add gtm by @p-malecki in #8936
  • Remove workaround for dynamic frameworks by @tomekzaw in #8927
  • chore(Worklets): compatibility docs by @tjzel in #8971
  • fix: free __cxa_demangle allocations in SingleInstanceChecker by @jingjing2222 in #8964
  • fix(Worklets): pulling native implementation for Jest tests by @tjzel in #8988
  • chore(Worklets): cleanup dispatch functions and tests by @tjzel in #9006
  • [docs] Fix scheduleOnRN call to remove extra invocation by @piaskowyk in #9017
  • refactor(Worklets): always spin AnimationFrameQueue by @tjzel in #8900
  • fix: Fix native matchVersion not allowing patch version mismatches by @kitten in #9018
  • chore(Worklets): install serializer on UI Runtime by @tjzel in #9024
  • chore(Worklets): merge isSynchronizable impl by @tjzel in #9027
  • chore(Worklets): stabilize Serializable enum by @tjzel in #9025
  • chore(Worklets): add RuntimeId type alias by @tjzel in #9026
  • chore(Worklets): export unpackers in prod env by @tjzel in #9029
  • fix: Reanimated synchronous events by @tjzel in #9057
  • chore(Worklets): update createWorkletRuntime docs by @tjzel in #9030
  • fix(Worklets): cascade raf callbacks with reanimated by @tjzel in #9080
  • feat: stable API versioning checks by @tjzel in #9105
  • feat: Reanimated x Worklets compilation compatibility CI by @tjzel in #8997
  • fix(Worklets): remote function re-serialization by @tjzel in #9115
  • chore(Worklets): update algolia keys by @tjzel in #9128
  • release(Worklets): 0.8.0 by @tjzel in #9131

New C...

Read more