Releases: software-mansion/react-native-reanimated
Reanimated - 4.3.0
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.
- feat: Implement CSS SVG Polyline by @wisniewskij in #9003
- feat: Implement CSS SVG Polygon by @MatiPl01 in #9008
- feat: Support
%length values in SVG CSS animations by @MatiPl01 in #9011 - Add css SVG Path parser and normalizer by @wisniewskij in #8709
- CSS SVGPath interpolation by @wisniewskij in #8710
- Enable support for SVGImage in CSS by @wisniewskij in #8830
- feat: Add support for SVG
Patterncomponent in SVG animations by @MatiPl01 in #9041 - CSS SVGRadialGradient support by @wisniewskij in #8871
- CSS SVGLinearGradient support by @wisniewskij in #8917
- Enable support for SVGText in CSS by @wisniewskij in #9022
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.
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
animatedPropsobjects 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:
Infinityparsing in web CSSanimationIterationCountby @MatiPl01 in #8787 - fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS feature flag crashes by @MatiPl01 in #8822
- fix:
SharedValue.modifystrict 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:
useHandlernot working on web without babel plugin by @MatiPl01 in #8883 - fix:
nopluginoption 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
matchVersionnot 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
transitionPropertychange by @MatiPl01 in #9120 - fix: guard against null styleProps in PropsRegistry GC by @mobinni in #9052
- fix - passing negative values to
filtercrashes 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:
useHandlerreimplementation by @MatiPl01 in #9090
Refactors
- refactor(Reanimated): use own SingleInstanceChecker by @tjzel in #8935
- refactor: move events to Reanimated by @tjzel in #8934
- refactor(Reanimated): use own JSIUtils by @tjzel in #8938
- refactor: Rename processOpacity to processPercentage by @wisniewskij in #8947
- Extract
applySynchronousUpdatesfromperformOperationsby @bartlomiejbloniarz in #9078 - Replace
isIntwithisNumberin synchronous props check by @tomekzaw in #9113
Chores
- Add
_beginSectionand_endSectionJSI bindings for systraces by @tomekzaw in #9101 - Add
_startProfilingand_stopProfilingJSI 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::dynamictojsi::ValueinupdateKeyframesfor 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...
4.2.3
What's Changed
- [cherry-pick][4.2] Fix commits during the Android draw pass by @bartlomiejbloniarz in #9123
- cherry-pick(4.2-stable): peer dependencies validation (#9019) by @tjzel in #9136
- chore(4.2-stable): bump accepted worklets by @tjzel in #9137
Full Changelog: 4.2.2...4.2.3
4.1.7
What's Changed
- [cherry-pick][4.1] Fix commits during the Android draw pass by @bartlomiejbloniarz in #9124
- chore(4.1-stable): bump accepted worklets by @tjzel in #9135
- cherry-pick(4.1-stable): peer dependencies validation (#9019) by @tjzel in #9134
Full Changelog: 4.1.6...4.1.7
Worklets - 0.8.1
Worklets - 0.8.0
Key changes
Features:
-
New shared memory type, Shareable, a building block for Reanimated's Shared Value implementation. See Docs and blogpost for more details.
-
Stable C++ API bindings for libraries to use.
-
New
runOnRuntimeSyncAPI - allows you to schedule a worklet on any Worklet Runtime synchronously. Docs- feat(Worklets):
runOnRuntimeSyncby @skusnierz in #8224
- feat(Worklets):
-
New scheduling APIs,
scheduleOnRuntimeWithId,runOnRuntimeSyncWithId- allows you to schedule worklets on Worklet Runtimes just by knowing their id. Docs -
New
runOnRuntimeAsyncAPI - allows you to schedule a worklet on any Worklet Runtime asynchronously and return a promise with the result. Docs- feat: add runOnRuntimeAsync by @riteshshukla04 in #8901
-
New useful API shorthands for checking current runtime context. Docs
-
New Worklets Babel plugin option,
strictGlobal, that prevents accidental captures of variables from global scope in worklets. Docs -
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.
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.
-
You no longer need to re-compile Worklets when switching between Bundle Mode and non-Bundle Mode (metro cache reset is still required).
-
(experimental) You can now run network request in Bundle Mode Docs
Docs:
- Documentation explaining what are closures in context of worklets, how they work and how to use them. Docs
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
matchVersionnot 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...
Reanimated - 4.3.0-rc.0
What's Changed
- chore: post Reanimated 4.2.0 and Worklets 0.7.0 release updates by @tjzel in #8703
- docs:
useAnimatedKeyboardtoreact-native-keyboard-controllermigration guide by @kirillzyusko in #8622 - docs: add warning about Expo Go not supporting static feature flags by @tomekzaw in #8708
- chore: unify Profiling setup by @tjzel in #8711
- Improve about example by @tomekzaw in #8717
- chore: bump RN to 0.83.0-rc.4 by @tjzel in #8706
- chore: modernize build.gradle scripts by @tjzel in #8707
- Enable
USE_COMMIT_HOOK_ONLY_FOR_REACT_COMMITSfeature flag by default by @tomekzaw in #8716 - feat: Web StrictMode e2e test and playwright setup by @MatiPl01 in #8715
- feat: Web-specific jest tests support by @MatiPl01 in #8712
- chore: bump RN to 0.83-rc.5 by @tjzel in #8719
- fix: docs dependency issue by @tjzel in #8722
- feat: Support for android and ios specific jest unit tests by @MatiPl01 in #8713
- chore: fix VSCode crying about tsconfig excludes in docs by @tjzel in #8724
- feat(Worklets):
runOnRuntimeSyncby @skusnierz in #8224 - fix: RN 0.80 android compatibility by @MatiPl01 in #8723
- chore(Worklets): fix broken anchor in docs by @tjzel in #8734
- chore: bump RN to 0.83.0 by @tjzel in #8735
- chore: remove react-native-pager-view example by @tjzel in #8736
- chore(Worklets): Bundle Mode patches for 0.83.0 by @tjzel in #8737
- fix: use native processTransformOrigin instead of web version by @maxpotemkin in #8738
- fix: prefab headers locations by @tjzel in #8747
- fix: assets in FabricExample by @tjzel in #8748
- chore: fix hermesc path in FabricExample by @tjzel in #8746
- refactor: docs workflows by @tjzel in #8751
- chore: Rename box shadow processing function by @MatiPl01 in #8756
- fix: Proper support for nested
animatedPropsobjects and correct cleanup by @MatiPl01 in #8726 - fix(Worklets): Add HERMES_V1_ENABLED flag to iOS podspec for Hermes V1 compatibility by @kimchi-developer in #8754
- chore: Rename style builder to props builder by @MatiPl01 in #8757
- feat(Worklets): docs for plugin types by @tjzel in #8633
- fix(web): Support originX and originY in layout animations by @choi138 in #8733
- feat(Worklets): run Bundle Mode without patches to React Native by @tjzel in #8744
- 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
- chore: Bump macos runner version and xcode version on CI by @MatiPl01 in #8721
- fix:
Infinityparsing in web CSSanimationIterationCountby @MatiPl01 in #8787 - docs: remove reading from shared value on JS thread in "your first animation" example by @pawicao in #8788
- docs: add sorn25 banner to readme by @p-malecki in #8793
- Add Shared Element Transitions to v4 docs by @bartlomiejbloniarz in #8798
- docs(Worklets): add sorn25 banner to readme by @p-malecki in #8795
- Add css SVG Path parser and normalizer by @wisniewskij in #8709
- CSS SVGPath interpolation by @wisniewskij in #8710
- fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS feature flag crashes by @MatiPl01 in #8822
- Make parser create implicite new subPaths by @wisniewskij in #8824
- docs: Require worklets in denyList when using RNRepo by @roitium in #8821
- chore: Add jest unit tests for web Strict Mode layout animations by @MatiPl01 in #8792
- chore: Add
animatedPropse2e test for web by @MatiPl01 in #8796 - chore: Add e2e test step to release markdown by @MatiPl01 in #8797
- chore: Remove the
equalsReversingAdjustedStartValuemethod from CSS classes by @MatiPl01 in #8808 - Implement CSSIndex by @wisniewskij in #8829
- docs: remove sorn25 banner by @p-malecki in #8834
- docs(Worklets): remove sorn25 banner by @p-malecki in #8835
- Enable support for SVGImage in CSS by @wisniewskij in #8830
- fix(Worklets): missing sideEffects property by @tjzel in #8760
- Add tree-shakability checks by @patrickmichalik in #8794
- Add libworklets.so to excludes by @radoslawrolka in #8831
- refactor(AnimatedSensorModule): remove assert in destructor by @tomekzaw in #8823
- chore: consider new arch always enabled in react-native 0.82+ by @gabrieldonadel in #8771
- fix:
SharedValue.modifystrict type definition by @huextrat in #8846 - feat(Worklets): better runtimeKind checking API by @tjzel in #8758
- fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS incorrect color alphas by @DouweBos in #8841
- feat: Common props builder for CSS and worklets by @MatiPl01 in #8693
- feat: Web props and rule builders functional reimplementation by @MatiPl01 in #8764
- 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
- feat(Worklets): Worklet Runtime ios fetch by @tjzel in #8410
- feat: Add JS prop diffing mechanism for CSS transitions triggering from JS by @MatiPl01 in #8856
- feat: JS-triggered CSS transitions integration with C++ by @MatiPl01 in #8858
- feat(Worklets): android fetch by @tjzel in #8850
- fix: clang-tidy error by @tjzel in #8868
- docs: Fix typo (relay -> rely) by @j-piasecki in #8870
- refactor(Worklets): dont use @react-native/babel-preset for unit tests by @tjzel in #8862
- chore: Bump RN version to 0.84.0-rc.2 by @MatiPl01 in https://github.com/software-mansion/react-native-rean...
Worklets - 0.8.0-rc.0
What's Changed
- chore: post Reanimated 4.2.0 and Worklets 0.7.0 release updates by @tjzel in #8703
- docs:
useAnimatedKeyboardtoreact-native-keyboard-controllermigration guide by @kirillzyusko in #8622 - docs: add warning about Expo Go not supporting static feature flags by @tomekzaw in #8708
- chore: unify Profiling setup by @tjzel in #8711
- Improve about example by @tomekzaw in #8717
- chore: bump RN to 0.83.0-rc.4 by @tjzel in #8706
- chore: modernize build.gradle scripts by @tjzel in #8707
- Enable
USE_COMMIT_HOOK_ONLY_FOR_REACT_COMMITSfeature flag by default by @tomekzaw in #8716 - feat: Web StrictMode e2e test and playwright setup by @MatiPl01 in #8715
- feat: Web-specific jest tests support by @MatiPl01 in #8712
- chore: bump RN to 0.83-rc.5 by @tjzel in #8719
- fix: docs dependency issue by @tjzel in #8722
- feat: Support for android and ios specific jest unit tests by @MatiPl01 in #8713
- chore: fix VSCode crying about tsconfig excludes in docs by @tjzel in #8724
- feat(Worklets):
runOnRuntimeSyncby @skusnierz in #8224 - fix: RN 0.80 android compatibility by @MatiPl01 in #8723
- chore(Worklets): fix broken anchor in docs by @tjzel in #8734
- chore: bump RN to 0.83.0 by @tjzel in #8735
- chore: remove react-native-pager-view example by @tjzel in #8736
- chore(Worklets): Bundle Mode patches for 0.83.0 by @tjzel in #8737
- fix: use native processTransformOrigin instead of web version by @maxpotemkin in #8738
- fix: prefab headers locations by @tjzel in #8747
- fix: assets in FabricExample by @tjzel in #8748
- chore: fix hermesc path in FabricExample by @tjzel in #8746
- refactor: docs workflows by @tjzel in #8751
- chore: Rename box shadow processing function by @MatiPl01 in #8756
- fix: Proper support for nested
animatedPropsobjects and correct cleanup by @MatiPl01 in #8726 - fix(Worklets): Add HERMES_V1_ENABLED flag to iOS podspec for Hermes V1 compatibility by @kimchi-developer in #8754
- chore: Rename style builder to props builder by @MatiPl01 in #8757
- feat(Worklets): docs for plugin types by @tjzel in #8633
- fix(web): Support originX and originY in layout animations by @choi138 in #8733
- feat(Worklets): run Bundle Mode without patches to React Native by @tjzel in #8744
- 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
- chore: Bump macos runner version and xcode version on CI by @MatiPl01 in #8721
- fix:
Infinityparsing in web CSSanimationIterationCountby @MatiPl01 in #8787 - docs: remove reading from shared value on JS thread in "your first animation" example by @pawicao in #8788
- docs: add sorn25 banner to readme by @p-malecki in #8793
- Add Shared Element Transitions to v4 docs by @bartlomiejbloniarz in #8798
- docs(Worklets): add sorn25 banner to readme by @p-malecki in #8795
- Add css SVG Path parser and normalizer by @wisniewskij in #8709
- CSS SVGPath interpolation by @wisniewskij in #8710
- fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS feature flag crashes by @MatiPl01 in #8822
- Make parser create implicite new subPaths by @wisniewskij in #8824
- docs: Require worklets in denyList when using RNRepo by @roitium in #8821
- chore: Add jest unit tests for web Strict Mode layout animations by @MatiPl01 in #8792
- chore: Add
animatedPropse2e test for web by @MatiPl01 in #8796 - chore: Add e2e test step to release markdown by @MatiPl01 in #8797
- chore: Remove the
equalsReversingAdjustedStartValuemethod from CSS classes by @MatiPl01 in #8808 - Implement CSSIndex by @wisniewskij in #8829
- docs: remove sorn25 banner by @p-malecki in #8834
- docs(Worklets): remove sorn25 banner by @p-malecki in #8835
- Enable support for SVGImage in CSS by @wisniewskij in #8830
- fix(Worklets): missing sideEffects property by @tjzel in #8760
- Add tree-shakability checks by @patrickmichalik in #8794
- Add libworklets.so to excludes by @radoslawrolka in #8831
- refactor(AnimatedSensorModule): remove assert in destructor by @tomekzaw in #8823
- chore: consider new arch always enabled in react-native 0.82+ by @gabrieldonadel in #8771
- fix:
SharedValue.modifystrict type definition by @huextrat in #8846 - feat(Worklets): better runtimeKind checking API by @tjzel in #8758
- fix: FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS incorrect color alphas by @DouweBos in #8841
- feat: Common props builder for CSS and worklets by @MatiPl01 in #8693
- feat: Web props and rule builders functional reimplementation by @MatiPl01 in #8764
- 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
- feat(Worklets): Worklet Runtime ios fetch by @tjzel in #8410
- feat: Add JS prop diffing mechanism for CSS transitions triggering from JS by @MatiPl01 in #8856
- feat: JS-triggered CSS transitions integration with C++ by @MatiPl01 in #8858
- feat(Worklets): android fetch by @tjzel in #8850
- fix: clang-tidy error by @tjzel in #8868
- docs: Fix typo (relay -> rely) by @j-piasecki in #8870
- refactor(Worklets): dont use @react-native/babel-preset for unit tests by @tjzel in #8862
- chore: Bump RN version to 0.84.0-rc.2 by @MatiPl01 in https://github.com/software-mansion/react-native-rean...
4.2.2
What's Changed
- chore: use Worklets from NPM on 4.2.0-stable branch by @tjzel in #8837
- remove assert in AnimatedSensorModule destructor by @MatiPl01 in #8957
- fix FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS incorrect color alphas by @MatiPl01 in #8956
- Guard for undefined style in Jest utils by @MatiPl01 in #8955
- Stop passing nativeID to component in jest unit tests by @MatiPl01 in #8954
- Fix the issue with next.js throwing errors while hydrating by @MatiPl01 in #8959
- fix
useHandlernot working on web without babel plugin by @MatiPl01 in #8960 - fix FORCE_REACT_RENDER_FOR_SETTLED_ANIMATIONS feature flag crashes by @MatiPl01 in #8958
- Add
workletmock helper function for jest unit tests by @MatiPl01 in #8970 - chore: Add support for RN 0.84 by @MatiPl01 in #8953
- Web-specific jest tests support cherry-pick and remaining test fixes by @MatiPl01 in #8972
Full Changelog: 4.2.1...4.2.2
Worklets - 0.7.4
What's Changed
Added RN 0.84 to compatible versions.
Full Changelog: worklets-0.7.3...worklets-0.7.4