What's Changed
- refactor: move Worklets JS core from Reanimated by @tjzel in #6973
- fix: move requestAnimationFrame back to Reanimated by @tjzel in #6991
- docs: Add new supported props from RN 0.77 to supported props table by @MatiPl01 in #6963
- chore: remove duplicated directories when building Reanimated by @tjzel in #6984
- feat(plugin): multiple worklet referencing by @tjzel in #6904
- refactor: move _UI injection from Reanimated to Worklets by @tjzel in #6985
- Add sticky header example by @tomekzaw in #7002
- chore: drop React Native 0.74 specific code by @tjzel in #6995
- Enable systraces by default in example app by @tomekzaw in #7001
- feat: Add support for
transition
shorthand by @tomekzaw in #6968 - Add
displayName
toforwardRef
fromAnimatedComponent
by @m-bert in #6978 - chore: remove apps from node_modules by @tjzel in #7003
- chore(deps): bump serialize-javascript from 6.0.1 to 6.0.2 in /packages/docs-reanimated by @dependabot in #7018
- Fix typo in docs by @tamlyn in #7022
- chore(deps): bump nanoid from 3.3.7 to 3.3.8 by @dependabot in #7024
- fix: lack of
transform
in keyframes on web caused crash by @patrycjakalinska in #7020 - Update README.md by @tomekzaw in #6976
- fix:
useAnimatedProps
on input component not working on web by @patrycjakalinska in #6964 - chore(deps-dev): bump esbuild from 0.20.2 to 0.25.0 by @dependabot in #7009
- Fix web layout transition by @piaskowyk in #7026
- Remove UI runtime usage by CSS Animations by @piaskowyk in #7006
- Fix iOS build with
USE_FRAMEWORKS=dynamic
by @tomekzaw in #7025 - Remove
install_modules_dependencies_legacy
in RNReanimated.podspec by @tomekzaw in #7032 - Enable
supportsLocking
increateWorkletRuntime
by @tomekzaw in #7033 - chore: CSS values cleanup by @MatiPl01 in #6986
- feat(worklets): Android validation by @tjzel in #7028
- feat: enable clang-tidy by @tjzel in #6956
- feat(worklets): Apple validation by @tjzel in #7029
- [Android] Add support for 16KB page size by @m-bert in #7037
- chore: Make CSS interpolators stateless by @MatiPl01 in #6993
- feat: prevent flattening style arrays by @jpudysz in #7021
- Enable fabric examles by @piaskowyk in #7056
- Handle component internal animated ref by @piaskowyk in #7054
- chore: migrate from old UI manager acquistion api on Android by @tjzel in #6901
- fix(worklets): compilation on iOS by @tjzel in #7045
- feat: CSS animation keyframes registry to attach animations by name by @MatiPl01 in #7015
- fix: CSS transition shorthand property behavior in react-native-web by @MatiPl01 in #7019
- Fix
Keyframe
mock by @bartlomiejbloniarz in #6961 - docs: Add missing information about animated styles precedence by @MatiPl01 in #7070
- Fix
getAnimatedStyle
error when called with component that doesn't have animated styles by @AcostaB in #6746 - Add extraPlugins and extraOptions to babel plugin by @graszka22 in #7072
- fix: Break circular reference in
NativeProxy
andAndroidUIScheduler
by @lukmccall in #6697 - feature: Detect edge-to-edge and set isStatusBarTranslucentAndroid / isNavigationBarTranslucentAndroid by @zoontek in #6732
- docs: fix animationName "to" keyword by @MoOx in #7083
- refactor: RN$Bridgeless as isFabric by @tjzel in #7043
- Add build from source snippet in fabric-example on Android by @tomekzaw in #7088
- Cleanup build.gradle by @tomekzaw in #7085
- Improve animated keyboard example by @szydlovsky in #6905
- Remove non-layout style and prop updates path via
synchronouslyUpdatePropsOnUIThread
by @tomekzaw in #7014 - docs: Bump Reanimated in docs to nightly 4.0.0 and uncomment related docs by @patrycjakalinska in #7090
- feat: make Reanimated depend on Worklets by @tjzel in #7087
- refactor(worklets): move reanimated-babel-plugin by @tjzel in #7066
- Remove unused and sort imports in build.gradle by @tomekzaw in #7094
- Update eslint-plugin-reanimated after
useWorkletsResolver
removal by @tomekzaw in #7096 - Move logic from
ReanimatedRuntime::make
tomakeRuntime
in WorkletRuntime.cpp by @tomekzaw in #7095 - docs: add deprecated useAnimatedGestureHandler by @kacperkapusciak in #6354
- Remove
isFabric()
,viewName
,getScrollableNode
along with all usages by @tomekzaw in #7103 - Remove JS runtime logic from Reanimated build.gradle by @tomekzaw in #7093
- fix: Cubes example invalid matrix transform usage error by @MatiPl01 in #7097
- Fix
EasingFunctionFactory
type usage by @bartlomiejbloniarz in #6958 - Fix react-freeze by @bartlomiejbloniarz in #7053
- chore(worklets): draft README by @tjzel in #7084
- refactor(worklets): remove nesting of some source files by @tjzel in #7091
- Restore
JSScheduler::scheduleOnJS
method by @tomekzaw in #7100 - Remove
RCT_NEW_ARCH_ENABLED
macros and unused functions on iOS by @tomekzaw in #7104 - docs: Update
useAnimatedKeyboard
to reflect floating keyboard fixes by @szydlovsky in #6887 - Remove
RCT_NEW_ARCH_ENABLED
macros and unused functions on Android by @tomekzaw in #7105 - Remove
BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
and unused functions on Android by @tomekzaw in #7106 - Remove Layout Animations and SET from iOS on Paper by @piaskowyk in #7110
- feat(worklets): AnimationFrameQueue by @tjzel in #7017
- Remove Layout Animations and SET from Android on Paper by @piaskowyk in #7113
- chore: Remove RCT_NEW_ARCH_ENABLED from CSS code, apply clang tidy suggestions by @MatiPl01 in #7115
- Remove
isBridgeless
flag by @tomekzaw in #7112 - chore: build packages in repo topologically by @tjzel in #7111
- Remove
RCT_NEW_ARCH_ENABLED
macros and unused functions in Common C++ by @tomekzaw in #7118 - Restore original value of
canOverrideExistingModule
by @tomekzaw in #7120 - Remove
UIManagerReanimatedHelper
class by @tomekzaw in #7121 - Merge
NativeProxyCommon
intoNativeProxy
by @tomekzaw in #7122 - Remove SET from JS on Paper by @piaskowyk in #7116
- Remove
JNIHelper
by @tomekzaw in #7123 - Remove SET code from common C++ codebase by @piaskowyk in #7119
- Remove redundant includes on Android by @tomekzaw in #7124
- feat: Enable callbacks in withSequence with reduce motion enabled by @patrycjakalinska in #6895
- Remove
android-npm
directory by @tomekzaw in #7128 - fix: ColorsExample shadow color animation on web and android by @MatiPl01 in #7117
- Remove unused
convertProps
function andREAJSIUtils
functions by @tomekzaw in #7127 - Remove unused methods from
NativeMethods
on iOS by @tomekzaw in #7126 - Remove redundant includes on iOS by @tomekzaw in #7131
- docs: Add 3.17.1 to compatibility table in docs by @MatiPl01 in #7142
- Move reduced motion enabled check function to a separate file on iOS by @tomekzaw in #7138
- Merge
commonInit
function intocreateReanimatedModule
function in NativeProxy on iOS by @tomekzaw in #7139 - Obtain
jsCallInvoker
usingRCTCallInvokerModule
in Worklets on iOS by @tomekzaw in #7140 - Replace
REANIMATED_EXAMPLE_APP_NAME
withIS_REANIMATED_EXAMPLE_APP
on iOS by @tomekzaw in #7141 - fix: Swipeable list example not working on web by @MatiPl01 in #7130
- Merge
commonInit
function intoNativeProxy
constructor on Android by @tomekzaw in #7149 - Remove redundant
commonInit
declaration in NativeProxy.h by @tomekzaw in #7148 - Add asserts for queue during Reanimated initialization on iOS by @tomekzaw in #7136
- Add asserts for queue during Worklets initialization on iOS by @tomekzaw in #7137
- Extract
AnimationFrameCallback
from NativeProxy.h by @tomekzaw in #7150 - Add asserts for
TurboModuleManager
queue by @tomekzaw in #7157 - Extract
EventHandler
from NativeProxy.h by @tomekzaw in #7151 - Extract
KeyboardWorkletWrapper
from NativeProxy.h by @tomekzaw in #7153 - Extract
SensorSetter
from NativeProxy.h by @tomekzaw in #7152 - Improve obtaining RN runtime reference by @tomekzaw in #7160
- Remove
requiresMainQueueSetup
withYES
by @tomekzaw in #7133 - Remove queue asserts in
AnimationFrameQueue
by @tomekzaw in #7161 - Remove
methodQueue
withRCTGetUIManagerQueue
by @tomekzaw in #7156 - Add missing includes on Android by @tomekzaw in #7165
- Add missing files to worklet's package.json by @piaskowyk in #7147
- Merge
ReaCompatibility
intoNodesManager
by @tomekzaw in #7166 - refactor: run
_maybeFlushUIUpdatesQueue
through_microtaskQueueFinalizers
by @tjzel in #7064 - Add thread asserts during initialization on Android by @tomekzaw in #7164
- fix: Crash caused by passing animated ref to the animated component by @MatiPl01 in #7158
- fix: Impossibility to remove layout transitions by @MatiPl01 in #7159
- Remove implementation of
UIManagerListener
andUIManagerModuleListener
interfaces inReanimatedModule
on Android by @tomekzaw in #7169 - Avoid storing
ReactApplicationContext
in cleanup lambda capture inReanimatedModule
by @tomekzaw in #7173 - Remove unused arguments in
REANodesManager
initializer by @tomekzaw in #7175 - Merge
getUIManager
intoinstallTurboModule
inREAModule
by @tomekzaw in #7176 - Remove
RCTUIManagerObserver
protocol fromREAModule
by @tomekzaw in #7184 - Create
NodesManager
instance inReanimatedModule
constructor instead of in getter method by @tomekzaw in #7186 - Remove
Utils.isChromeDebugger
on Android by @tomekzaw in #7187 - Use
WorkletsModule
instance fromNativeProxy
constructor arguments instead of usinggetNativeModule
call by @tomekzaw in #7188 - Remove unused
getAndroidUIScheduler
method by @tomekzaw in #7189 - Remove unused
getWorkletsModule
method by @tomekzaw in #7190 - Explicitly pass
NodesManager
toNativeProxy
on Android by @tomekzaw in #7191 - Remove
NodesManager
null checks on Android by @tomekzaw in #7194 - Remove unused
mUnsubscribe
inNodesManager
by @tomekzaw in #7195 - docs: update react native gesture handler quick start url by @KMalkowski in #7201
- Rename ReanimatedJSIUtils.h to WorkletsJSIUtils.h by @tomekzaw in #7203
- chore: remove unused valueUnpackerCode members by @tjzel in #7200
- Replace "[Reanimated]" with "[Worklets]" in react-native-worklets by @tomekzaw in #7204
- Rename
ReanimatedHermesRuntime
toWorkletHermesRuntime
by @tomekzaw in #7205 - Call
NodesManager.initWithContext
and thus createNativeProxy
inReanimatedModule
constructor by @tomekzaw in #7206 - Merge
initWithContext
method intoNodesManager
constructor by @tomekzaw in #7209 - Pass runtime reference from
REAModule
toNativeProxy
on iOS by @tomekzaw in #7215 - [docs] Fix broken link in transition-property.mdx by @erickriva in #7202
- Remove unused
REAModule
argument inmakePlatformDepMethodsHolder
by @tomekzaw in #7216 - Pass
REANodesManager
instead ofREAModule
tocreateReanimatedModule
by @tomekzaw in #7217 - (package.json) add keywords to package.json to improve npm search result by @MoOx in #7218
- feat(worklets): release 0.1.0 by @tjzel in #7168
- chore(worklets): fix android studio warnings by @tjzel in #7208
- Rename
REAModule
toReanimatedModule
andcreateReanimatedModule
tocreateReanimatedModuleProxy
by @tomekzaw in #7221 - chore: fix WorkletFunction and ValueUnpacker types by @tjzel in #7167
- fix: invalid Android invalidation of hybrid data by @tjzel in #7197
- Remove unused
reanimatedModule
property inREANodesManager
by @tomekzaw in #7222 - Remove leftover
removeObserver
call inReanimatedModule
on iOS by @tomekzaw in #7224 - feat: Proper multiple CSS animations support in native by @MatiPl01 in #7183
- feat(worklets): prepare releasing pipeline by @tjzel in #7107
- fix: crash on OTA reload by @tjzel in #7196
- Bump prismjs from 1.29.0 to 1.30.0 in /packages/docs-reanimated by @dependabot in #7225
- Bump @babel/runtime-corejs3 from 7.20.13 to 7.26.10 in /packages/docs-reanimated by @dependabot in #7230
- Bump axios from 1.7.7 to 1.8.2 by @dependabot in #7234
- Bump @babel/helpers from 7.25.6 to 7.26.10 by @dependabot in #7233
- Bump @babel/runtime from 7.25.6 to 7.26.10 by @dependabot in #7232
- refactor: remove runOnUIImmediately by @tjzel in #7226
- fix: nightly release CI by @tjzel in #7241
- fix: Filter out null values from the CSS animation style by @MatiPl01 in #7242
- chore: use Worklets NPM token by @tjzel in #7243
- chore: Use [] operator instead of .at() where possible by @MatiPl01 in #7212
- Remove Paper global variables from types by @piaskowyk in #7247
- chore: Add css namespace for CSS-related code by @MatiPl01 in #7213
- refactor: lint worklets like reanimated by @tjzel in #7223
- chore(deps-dev): bump esbuild from 0.20.2 to 0.25.0 in /packages/docs-reanimated by @dependabot in #7257
- chore(deps): bump @babel/runtime from 7.21.0 to 7.26.10 in /packages/docs-reanimated by @dependabot in #7256
- chore(deps): bump @babel/helpers from 7.20.13 to 7.26.10 in /packages/docs-reanimated by @dependabot in #7255
- Remove suffix Fabric from global runtime methods by @piaskowyk in #7249
- fix: CSS issues introduced by react-freeze fix by @MatiPl01 in #7237
- Add the new architecture assert by @piaskowyk in #7260
- release: 4.0.0-beta.3 by @MatiPl01 in #7262
New Contributors
- @tamlyn made their first contribution in #7022
- @jpudysz made their first contribution in #7021
- @AcostaB made their first contribution in #6746
- @zoontek made their first contribution in #6732
- @MoOx made their first contribution in #7083
- @KMalkowski made their first contribution in #7201
- @erickriva made their first contribution in #7202
Full Changelog: 4.0.0-beta.2...4.0.0-beta.3