Stable release of Gesture Handler 3 - rebuilt for the New Architecture, introducing the new hook-based API, a new Touchable component, and a deeper Reanimated integration, among many others.
What's Changed
- Update how Gesture Handler exposes
setGestureStateto the Reanimated UI runtime by @j-piasecki in #3207 - Simplify Android event builders by @j-piasecki in #3603
- Remove actions testing build for the old architecture by @j-piasecki in #3604
- Implement base for a native detector component by @j-piasecki in #3599
NativeDetector<->Reanimatedintegration by @m-bert in #3617- Remove
onChangecallback references by @m-bert in #3631 - Handle
Animated.EventinonUpdatecallback by @m-bert in #3630 - Fix
onUpdatecrash by @m-bert in #3636 - Remove
AnimatedEventaction type fromNativeDetectorby @m-bert in #3646 - Automatically assign
dispatchesAnimatedEventsby @m-bert in #3650 - Remove
dispatchesAnimatedEventsfrom the native detector by @j-piasecki in #3652 - Adapt
NativeViewGestureHandlertoNativeDetectorby @m-bert in #3638 - [Web] Native detector component by @akwasniewski in #3637
- [Web] Adapt
NativeViewGestureHandlertoNativeDetectorby @akwasniewski in #3653 - Add
overridekeyword toTypeScriptpart of codebase by @m-bert in #3667 - Lazy addition of callbacks to
useHandlerby @m-bert in #3674 - Remove paper support by @latekvo in #3639
- Fix native gesture reattach by @akwasniewski in #3672
- [Web] v3 typing and using handler data by @akwasniewski in #3651
- Fix gesture detach on component drop by @akwasniewski in #3669
- Remove
sync-architecturesscript from commit hook by @m-bert in #3681 - Bind
SharedValuesin handler config by @m-bert in #3658 - [Web] many children check by @akwasniewski in #3684
- [cherry-pick] Support react-native 0.81 (#3607) by @m-bert in #3688
- Fix
ConcurrentModificationExceptionby @m-bert in #3691 - Fix macos newarch flag by @akwasniewski in #3692
- [Web] Config refactor - update logic and drop class field by @akwasniewski in #3673
- Bump Reanimated in
expo-exampleby @m-bert in #3690 - Separate
ReanimatedfromJSby @m-bert in #3682 - Gesture relations by @m-bert in #3693
- [Tests] Tests for relations traversal algorithm by @m-bert in #3701
- Bump libraries versions by @m-bert in #3702
- Properly type gesture config by @m-bert in #3700
- Align web events with native by @akwasniewski in #3707
- Remove remaining
anyin gesture config type by @m-bert in #3709 - [Web] Separate Reanimated from JS by @akwasniewski in #3683
- Typed gesture hooks by @m-bert in #3706
- Fix relations old api by @akwasniewski in #3715
- [Web] Gesture relations by @akwasniewski in #3713
- Update hook usage in the NativeDetector by @j-piasecki in #3714
- fix relations by @akwasniewski in #3722
- [Web] Remove mouse buttons map by @m-bert in #3728
- [Web] Add
nameproperty to handlers by @m-bert in #3729 - Add
changeEventCalculatorto handlers by @m-bert in #3708 - Add
SharedValuetype to config. by @m-bert in #3717 - Logic Detector by @akwasniewski in #3689
- Fix composed types by @m-bert in #3744
- Filter config by @m-bert in #3710
- Remove deprecated components by @m-bert in #3734
- Do not use
handleGestureEventforAnimated.Eventby @m-bert in #3748 - Change logic of
workletdetection in config by @m-bert in #3745 - [Web] Disable
onPointerMoveon hover on gestures other thanHoverby @m-bert in #3727 - Split
utilsinto multiple files by @m-bert in #3746 - Add
runOnJSto config by @m-bert in #3743 - Add missing types by @akwasniewski in #3731
- Split types by @m-bert in #3750
- Fix
hasWorkletEventHandlersby @m-bert in #3758 - [Web] Fix handling of
enabledprop by @m-bert in #3726 - Bump
nodein DFS CI by @m-bert in #3774 - Reattach gestures when the Detector moves back to the window on iOS by @j-piasecki in #3771
- Update props whitelists by @m-bert in #3773
- Clean callbacks when unregistering gesture by @j-piasecki in #3775
- Remove
RNGestureHandlerEnabledRootViewandgestureHandlerRootHOCby @m-bert in #3780 - Add support for nested Text to LogicDetector by @j-piasecki in #3778
- Remove remaining paper references by @m-bert in #3783
- Remove checks for React 19 by @m-bert in #3785
- One detector to rule them all by @akwasniewski in #3732
- [Android] Remove workaround for touch events allowing to change state too soon by @j-piasecki in #3793
- [General] Fix
DiagonalDirectionstype by @j-piasecki in #3795 - Remove incorrectly passed
gestureEventsby @m-bert in #3799 - Rename logic detector to virtual detector by @akwasniewski in #3796
- Virtual detector native gestures by @akwasniewski in #3765
- Throw error when detectors are not placed inside
GestureHandlerRootViewby @m-bert in #3798 - [Web] Remove workaround for touch events allowing to change state too soon by @j-piasecki in #3794
- [Types] Remove
onUpdatefrom discrete gestures by @j-piasecki in #3811 - [Web] Don't try to remove context menu listeners when not initialized by @j-piasecki in #3814
- [iOS] Correctly attach
Nativegesture by @m-bert in #3802 - Memoize internal event handlers by @j-piasecki in #3812
- Rename
onTouchesCancelledtoonTouchesCancelby @j-piasecki in #3818 - Rename relation props in config by @j-piasecki in #3817
- Memoize cloned configs in gesture hooks by @j-piasecki in #3816
- Apply more granular memoization by @j-piasecki in #3815
- [iOS] Remove dropped native handlers by @m-bert in #3819
- Swipeable and drawer, new api by @akwasniewski in #3803
- Simplify
VirtualDetector/InterceptingGestureDetectorand reduce the number of renders by @j-piasecki in #3813 - [General] Make
VirtualDetectorpart of the public API by @j-piasecki in #3825 - [Android][iOS] Don't handle events on the detector surface by @j-piasecki in #3823
- [General] Allow explicit opt-in for the Animated codepaths when not using native driver by @j-piasecki in #3824
- [General] Make
InterceptingGestureDetectorthrow when not rendered under GHRootView by @j-piasecki in #3829 - [Web] Fix context menu by @m-bert in #3826
- [General] Rename gesture hooks to include
Gesturesuffix by @j-piasecki in #3828 - [General] Schedule flushes instead of flushing immediately by @j-piasecki in #3830
- [Web] Use correct config field for Reanimated flag by @j-piasecki in #3835
- Rename gesture composition hooks by @j-piasecki in #3834
- [General] Batch native operations by @j-piasecki in #3831
- [General] Reduce the number of calls to
useEventby @j-piasecki in #3836 - [General] Unwrap
handlerDatawhen passing event to user-defined callbacks by @j-piasecki in #3840 - [iOS] Fix Animated events with no native driver by @j-piasecki in #3841
- [General] Rename
useMultipleGesturestouseCompetingGesturesby @j-piasecki in #3848 - [General] Rename
onStart/onEndtoonActivate/onDeactivateby @j-piasecki in #3847 - Fix imports by @m-bert in #3845
- Update
InterceptingGestureDetectorwith Text example by @j-piasecki in #3851 - [General] Listen for Reanimated events directly, without
createAnimatedComponentwhen possible by @j-piasecki in #3837 - [General] Hide internal fields from gesture events by @j-piasecki in #3844
- [General] Reduce number of created closures by @j-piasecki in #3853
- Change components implementation by @m-bert in #3800
- Change exports by @m-bert in #3858
- Handle
testIDprop by @m-bert in #3838 - [Android] Fix
ScrollViewby @m-bert in #3867 - Correctly expose
avgTouchesby @m-bert in #3869 - Bring back missing fields from events by @m-bert in #3871
- Add missing
cancelsTouchesInViewby @m-bert in #3870 - Change
directiontype inFlingby @m-bert in #3872 - Revert "Change direction type" by @m-bert in #3876
- Change
runCallbacktypes by @m-bert in #3860 - Change
hoverEffecttoeffectby @m-bert in #3878 - [General] Restore
handlerTagto events by @j-piasecki in #3881 - [Web] Detector DOM props by @m-bert in #3877
- [docs] Gesture hooks by @m-bert in #3868
- [docs] Update team by @m-bert in #3892
- [Docs] Add compatibility table by @m-bert in #3882
- State Manager by @akwasniewski in #3880
- State manager deactivate by @akwasniewski in #3910
- [web] Fix handlers not sending events by @m-bert in #3911
- [iOS] Fix
ScrollViewdetection when used with NativeDetector by @j-piasecki in #3888 - [General] Pass
testIDto native side in dev by @j-piasecki in #3883 - Increase maximum number of tracked pointers by @m-bert in #3915
- Rename
tagtohandlerTagby @m-bert in #3916 - Add CMakeLists.txt to package by @m-bert in #3917
- add manualActivation prop by @akwasniewski in #3923
- [General] Cleanup duplicated callbacks by @j-piasecki in #3885
- V3 pressable by @akwasniewski in #3907
- [General] Fix layout jumps with native detector by @j-piasecki in #3930
- [docs] Gesture detectors by @m-bert in #3894
display: contentsbased button styling by @j-piasecki in #3634- [iOS] Restore scroll view behavior on gesture unbind by @j-piasecki in #3931
- [General] Fix
onBeginnot being called when the native recognizer skips theBEGANstate by @j-piasecki in #3932 - [docs] Update quick start by @m-bert in #3895
- Move
Reanimatedavailability check toJSside by @m-bert in #3935 - [web] fix context menu by @akwasniewski in #3939
- Fix state manager on unregistered gestures by @akwasniewski in #3913
- [iOS] Prevent gesture recognizers from beginning, when they should not by @j-piasecki in #3936
- Update mocks by @akwasniewski in #3854
- Cleaning manually activated handlers by @akwasniewski in #3943
- [Native] Fix
shouldCancelWhenOutsidenot tracking the view by @j-piasecki in #3942 - [docs] State management by @m-bert in #3905
- [docs] Migration guide by @m-bert in #3896
- Fix
HitSloptype in config. by @m-bert in #3946 - V3 examples by @akwasniewski in #3857
- [docs] Rename callback and update migration guide by @m-bert in #3951
- Fix intercepting detector props by @akwasniewski in #3952
- Merge Gesture Handler 3 working branch to main by @j-piasecki in #3954
- Update compatibility table for Gesture Handler 3 beta by @m-bert in #3955
- Add missing semicolons and improve indentation by @tomekzaw in #3957
- Publish proper nightly releases by @j-piasecki in #3956
- Fix reattaching by @akwasniewski in #3960
- Add LLM skill for migration to RNGH3 by @j-piasecki in #3947
- [Android] Handle gestures on transparent views directly under the Detector by @j-piasecki in #3962
- [Native] Automatically unflatten detector children by @j-piasecki in #3963
- [Native] Fix host detector when used alongside
Activityby @j-piasecki in #3967 - [docs] Add gtm by @p-malecki in #3969
- Do not export
PureNativeButtonby @m-bert in #3972 - Test examples by @akwasniewski in #3961
- [Native] Fix ButtonWrapper Shadow Node custom layout logic by @akwasniewski in #3974
- [docs] Update docs by @m-bert in #3959
- [docs]
GestureHandlerRootViewby @m-bert in #3970 - Export new
createNativeWrapperby @m-bert in #3971 - [docs] Buttons by @m-bert in #3968
- Update
GestureButtonprops type by @m-bert in #3973 - [General] Only overwrite ref if the dropped handler didn't change by @j-piasecki in #3984
- Fix GestureDetector unresponsive after display:none toggle (New Arch) by @janicduplessis in #3964
- [docs] Redirects by @m-bert in #3976
- [iOS] Add wrapper for
handleGesture:fromReset:by @m-bert in #3983 - [docs] Add platform badges by @m-bert in #3975
- Support React Native 0.84 by @m-bert in #3912
- Change handler reference to weak pointer to prevent memleaks by @WoLewicki in #3987
- Fix failing
JestCI by @m-bert in #3988 - [ios] Force going through begin in state manager by @akwasniewski in #3979
- [docs] Add version badges by @m-bert in #3978
- [docs] Make
platformsoptional parameter by @m-bert in #3992 - [web] handle common props in virtual detector by @akwasniewski in #3982
- Use shared release action by @j-piasecki in #3994
- [iOS] Fix wrong
pointerTypeinHovergesture by @m-bert in #3989 - [docs] Components' props by @m-bert in #3990
- Pin nightlies to 3.0.0 by @j-piasecki in #3998
- Use action from the main organization by @j-piasecki in #3999
- Split
HandlerDataby @m-bert in #3980 - docs: Add banner rotator by @p-malecki in #4000
FlatList&Reftypes by @m-bert in #4002- Fix
fillInDefaultValueswarning by @m-bert in #4004 - [docs] Add analytics and close banner btn by @p-malecki in #4005
- Depracate old components by @m-bert in #4006
- [macOS] Bump example app by @m-bert in #3993
- [docs] Add React Native 0.81 to compatibility table by @m-bert in #4007
- [General] Allow gesture detector to have multiple children by @j-piasecki in #3981
- Revert "Export new
createNativeWrapper(#3971)" by @m-bert in #4001 - Memoize
Textcomponent by @m-bert in #4003 - [iOS] Distinguish between mouse and stylus when hovering by @AndreasHogstrom in #3991
- Import legacy pressables in examples by @akwasniewski in #4009
- [Android] Check all pointers in move events by @m-bert in #4010
- Move @types/react-test-renderer to dependencies by @YevheniiKotyrlo in #4015
- Enable
exactOptionalPropertyTypessupport by @YevheniiKotyrlo in #4012 - [iOS] Fix concurrent modification crash by @m-bert in #4008
- [ios] not calling activation callback on inactive gestures by @akwasniewski in #3986
- [android] dont cancel manually activated gestures by @akwasniewski in #4011
- Fix
LegacyPressableby @m-bert in #4016 - [Android] Clear blocking relations on drop by @m-bert in #4020
- [iOS] Add
numberOfPointerstoNativegesture events by @m-bert in #4023 - [iOS] Fix missing
onFinalizecallback inTapby @m-bert in #4029 - Add missing handlers callbacks to buttons by @m-bert in #4033
- Bring back
onUpdatetoNativegesture by @m-bert in #4034 - Remove begin from StateManager by @akwasniewski in #4024
- Update
yarnby @m-bert in #4035 - Do not import
NativeWrapperPropsas type by @m-bert in #4030 - [General] Implement basic button interactions using native primitives by @j-piasecki in #4032
- docs: remove paradise banner by @p-malecki in #4037
- [android] fix talkback on pressable by @akwasniewski in #4017
- Add
Panoffset props toPropsToFilterby @m-bert in #4026 - [iOS] Handle
FullWindowOverlayas the native root by @j-piasecki in #4039 - Bump Reanimated by @m-bert in #4040
- [iOS] Ignore Apple's default retention offset for buttons and rely strictly on hitslop instead by @j-piasecki in #4038
- Make buttons activate immediately by @m-bert in #4036
Clickablecomponent by @m-bert in #4018- fix(ios): guard +load with #ifdef RCT_DYNAMIC_FRAMEWORKS by @DavidDuarte22 in #4047
- [Native] Replace
display: contentsbased buttons with a single-view implementation by @j-piasecki in #4044 - Add
childrento button mock by @m-bert in #4054 - [General] Update button's animation duration props by @j-piasecki in #4046
- [docs] Fix grammatical errors by @m-bert in #4056
- [tvOS] Fix build error by @m-bert in #4060
- [ios] fix pressable with intercepting detector by @akwasniewski in #4041
- Support React Native 0.85 by @m-bert in #4014
- [iOS] Fix buttons crash when unmounting children by @m-bert in #4065
- Fix Touchables typescript errors by @m-bert in #4067
- Do not emit
commonjsby @m-bert in #4069 - Bump rexml from 3.4.1 to 3.4.2 in /apps/macos-example by @dependabot[bot] in #3711
- Bump node-forge from 1.3.1 to 1.3.2 in /packages/docs-gesture-handler by @dependabot[bot] in #3843
- Bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /packages/docs-gesture-handler by @dependabot[bot] in #3856
- Bump node-forge from 1.3.2 to 1.4.0 in /packages/docs-gesture-handler by @dependabot[bot] in #4072
- Bump fast-xml-parser from 4.5.3 to 4.5.6 in /packages/docs-gesture-handler by @dependabot[bot] in #4073
- Bump addressable from 2.8.7 to 2.9.0 in /apps/basic-example by @dependabot[bot] in #4071
- Bump lodash from 4.17.21 to 4.18.1 in /packages/docs-gesture-handler by @dependabot[bot] in #4074
- Bump picomatch from 2.3.1 to 2.3.2 in /packages/docs-gesture-handler by @dependabot[bot] in #4075
- Bump activesupport from 7.2.2.1 to 7.2.3.1 in /apps/macos-example by @dependabot[bot] in #4076
- Rename
ClickabletoTouchableby @m-bert in #4063 - [Web] Fix focal and anchor points coordinates by @m-bert in #4061
- Add legacy mocks by @m-bert in #4055
- [Docs]
Touchableby @m-bert in #4022 - Bump svgo from 3.3.2 to 3.3.3 in /packages/docs-gesture-handler by @dependabot[bot] in #4077
- [Android] Correct
Rotationhandler by @m-bert in #4079 - [General] Replace
enabledwithdisabledprop on Clickable by @j-piasecki in #4057 - [Web] Fix
PinchandRotationby @m-bert in #4078 - Remove remaining
commonjsreferences by @m-bert in #4083 - [Web] Remove
invokeNullableMethodby @m-bert in #4084 - [docs] Bump
t-rex-uiby @patrycjakalinska in #4019 - Bump activesupport from 7.1.5.1 to 7.2.3.1 in /apps/basic-example by @dependabot[bot] in #4081
- Bump addressable from 2.8.7 to 2.9.0 in /apps/macos-example by @dependabot[bot] in #4080
- Bump rexml from 3.4.1 to 3.4.2 in /apps/basic-example by @dependabot[bot] in #4086
- Add
AGENTS.mdby @m-bert in #4085 - SwipeableProps from RefObject to Ref by @litinskii in #3759
- [eslint] Consistent
importrules by @m-bert in #4087 - Bump @react-native-community/cli from 18.0.0 to 18.0.1 in /apps/common-app by @dependabot[bot] in #3874
- [General] Move the end flag to the event passed to
onDeactivateandonFinalizeby @j-piasecki in #3887 - [eslint] Add
simple-import-sortby @m-bert in #4092 - [Android] Fix
InterceptingandVirtualdetectors hit testing by @Copilot in #4095 - Remove
forwardRefby @m-bert in #4093 - [Android] Fix
hitSlopon native detector by @m-bert in #4049 - [General] Fix gestures becoming unresponsive after a fast refresh by @j-piasecki in #4096
- [iOS] Fix button events with
numberOfPointers: 0by @j-piasecki in #4098 - [iOS] Fix
Touchableanimation ending in the wrong state by @j-piasecki in #4099 - [General] Remove
onActiveStateChangefromTouchableby @j-piasecki in #4101 - [Web] Don't cancel buttons when pointer moves inside by @j-piasecki in #4100
- Deprecate builder API by @m-bert in #4103
- [General] Don't emit duplicate events for
NativeViewGestureHandlerby @j-piasecki in #4102 - Do not check for
workletsif babel plugin was not used by @m-bert in #4107 - [docs] Update compatibility by @m-bert in #4110
- [docs] Update examples by @relextm19 in #4091
- [Native] Fix
Touchablebehavior when nested within gesture handlers by @j-piasecki in #4106 - [iOS] Handle
0duration animation correctly onTouchableby @j-piasecki in #4113 - [Native] Add
cancelOnLeaveprop toTouchableby @j-piasecki in #4105 - [Web] Fix nested touchables and gestures by @j-piasecki in #4108
- [Web | iOS] Fix
Switchcomponent by @m-bert in #4112 - [Web] Find
Switchinput only in direct children by @m-bert in #4122 - [Web] Fix
Pressablenot callingonPress*callbacks by @m-bert in #4124 - [General] Allow to create gestures with no config by @j-piasecki in #4115
- [iOS] Fix
LegacyPressablenot emittingonPressOutby @j-piasecki in #4121 - [General] Don't activate buttons on start by @j-piasecki in #4120
- [Android] Dispatch cancel event only when root view is enabled by @j-piasecki in #4123
- [Android] Restore button pressed state on drag in by @j-piasecki in #4118
- [General] Change
Touchablecallback order by @j-piasecki in #4126 - [iOS] Prevent duplicated events in Native gesture handling by @m-bert in #4125
- [Android] Cancel button gesture when other handlers are extracted before it by @j-piasecki in #4127
- [Web] Cancel button gesture when other handlers are extracted before it by @j-piasecki in #4128
- [iOS] Remove a redundant
detachHandlerWithTagdefinition by @j-piasecki in #4132 - [iOS] Activate buttons on pointer up by @j-piasecki in #4129
- [iOS] Handle view recycling in
Touchableby @j-piasecki in #4131 - [Web] Remove explicit reset from
onPointerCancelby @j-piasecki in #4133 - [Web] Don't call
cancelon unregistered handlers by @j-piasecki in #4134 - [Native] Use correct coordinate space when using native detector by @j-piasecki in #4137
- [General] Remove
createNativeWrapperfromTouchableby @j-piasecki in #4138 - [iOS] Remove unused methods from
Hoverby @j-piasecki in #4139 - [iOS] Fix
enabledstate diverging between the handler and its recognizer by @j-piasecki in #4140 - [General] Add
yieldsToNativeGesturesproperty to native gesture by @j-piasecki in #4135 - [Example] Use
Touchableinstead ofRectButtonby @j-piasecki in #4136 - Add RNRepo to ci builds by @radoslawrolka in #4141
- [General] Do not prepare config multiple times by @m-bert in #4144
- Add rnrepo config to
expo-exampleby @m-bert in #4151 - [Web] Assign role for
Nativegesture in detector by @m-bert in #4130 - [Android] Unify
PinchandRotationwith respect toiOSby @m-bert in #4153 - [docs] Add "Wrapped components" section by @m-bert in #4119
- [Web] Do not reset
roleon handler reset by @m-bert in #4154 - [General] Change
yieldsToNativeGesturestoyieldsToContinuousGesturesby @j-piasecki in #4152 - Add
cancelsJSResponderprop to the gesture handlers by @coado in #4094 - [Android] Remove getChildInDrawingOrderAtIndex by @javache in #4156
- [Web] Continuous
PinchandRotationby @m-bert in #4155 - [Web] Do not set
roleon non HTMLElement nodes by @m-bert in #4159 - [docs] Update compatibility table by @m-bert in #4161
- [Web] Add hover effects to the
Touchablecomponent by @j-piasecki in #4146 - [General] Avoid unnecessary object allocations by @j-piasecki in #4147
- [General] Change
Touchabledefault underlay props by @j-piasecki in #4164 - Fix
RNRendererimport for React Native 0.86+ by @zoontek in #4160 - [General] Update
Touchableanimation duration props by @j-piasecki in #4165 - [Android] Fix
TextInputsimultaneous relations by @m-bert in #4169 - [Swipeable] Rename
dragOffsetFrom*Edgeprop by @m-bert in #4168 - Bump postcss from 8.5.9 to 8.5.14 in /packages/docs-gesture-handler by @dependabot[bot] in #4148
- Bump ip-address from 10.1.0 to 10.2.0 by @dependabot[bot] in #4149
- Bump @xmldom/xmldom from 0.8.12 to 0.8.13 by @dependabot[bot] in #4111
- Bump fast-uri from 3.1.0 to 3.1.2 in /packages/docs-gesture-handler by @dependabot[bot] in #4162
- Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 by @dependabot[bot] in #4163
- [Native] Fix exiting animation crash by @j-piasecki in #4173
- [General] Allow to customize the duration of out animation for long press by @j-piasecki in #4167
- [Android] Fix
ScrollViewinvalid pointer id during navigation by @j-piasecki in #4177 - Update
ReanimatedDrawerLayouttypes by @m-bert in #4178 - [iOS] Fix
InterceptingGestureDetectornot recognizing gestures by @m-bert in #4170 - Bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /packages/docs-gesture-handler by @dependabot[bot] in #4176
- Update
Swipeabletypes by @m-bert in #4175 - [Native] Snap
Touchablestate on sub-frame animations by @j-piasecki in #4181 - Bump webpack-dev-server from 5.2.3 to 5.2.4 in /packages/docs-gesture-handler by @dependabot[bot] in #4183
- [iOS] Fix underlay animation not firing in ScrollView with
in: 0by @j-piasecki in #4184 - [General] Change how gestures are attached to the native detector to fix StrictMode by @j-piasecki in #4179
- [General] Use handler observer API for relation updates by @j-piasecki in #4180
- [iOS] Fix bad access when decorating runtime by @j-piasecki in #4187
- [iOS] Fix duplicated
testIDby @m-bert in #4186 - [Native] Fix buttons staying pressed in after detached from window by @j-piasecki in #4188
- [Android] Fix buttons cutting of borders of their child views by @j-piasecki in #4189
- [Android] Accept percentage-based border radius by @j-piasecki in #4185
- [Android] Fix
Touchablechildren clipping by @j-piasecki in #4190 - [docs] Update compatibility table by @m-bert in #4191
- [Web] Correctly attach v3 handlers by @m-bert in #4194
- [Android] Fix discrete gestures not triggering
onFinalizeby @m-bert in #4196 - [General] Support reduced motion/animation scale for button animations by @j-piasecki in #4197
- Update skill and docs by @j-piasecki in #4198
- [iOS] Fix handler retrieval and mismatched coordinate space by @j-piasecki in #4199
- [Android] Make
BorderlessButtonborderless by default by @j-piasecki in #4200 - [iOS] Don't iterate to root while resolving recognizer by @j-piasecki in #4202
- [Android] Fix ScrollView momentum after JS responder cancellation by @coado in #4203
- [Release] Don't pin nightly version by @j-piasecki in #4201
- Revert "[Release] Don't pin nightly version" by @m-bert in #4204
- [General] Fix relations not being applied in api V1 by @j-piasecki in #4207
- Reapply "[Release] Don't pin nightly version" (#4204) by @j-piasecki in #4205
- [Docs] Add compatibility table for release by @m-bert in #4206
New Contributors
- @AndreasHogstrom made their first contribution in #3991
- @YevheniiKotyrlo made their first contribution in #4015
- @DavidDuarte22 made their first contribution in #4047
- @litinskii made their first contribution in #3759
- @relextm19 made their first contribution in #4091
- @radoslawrolka made their first contribution in #4141
- @javache made their first contribution in #4156
Full Changelog: v2.31.2...v3.0.0