Important changes
- Adopt Android Gradle Plugin 9 by @hurali97 in #4263
- Implement
Pressablebased onTouchableby @m-bert in #4411 - Add hover callbacks to
Touchableon Android, iOS and Web by @j-piasecki in #4396, #4397 and #4398 - Refactor
Touchablenot to rely onGestureDetectoron Android, iOS and Web by @j-piasecki in #4342, #4343 and #4344 - Fix fatal crash
Cannot read property 'translationX' of undefinedwhen a touch event is serialized withoutallTouchesby @huextrat in #4316
Improvements
- [Android] Skip the underlay drawable when it can never be visible by @j-piasecki in #4359
- [Android] Apply the button's managed handler config once per prop transaction by @j-piasecki in #4357
- [Android] Configure the button's handler directly instead of through a
ReadableMapby @j-piasecki in #4358
Bug fixes
- [Android] Guard update events to only be dispatched in
ACTIVEstate by @j-piasecki in #4332 - Pass empty callbacks to UI when
runOnJSistrueby @m-bert in #4326 - [Web] Fix incorrectly calculated
timeDeltaby @m-bert in #4329 - [Web] Fix incorrect
Tapoffset by @m-bert in #4330 - Fix
minVelocityprops behavior by @m-bert in #4327 - [Android] Fix
minDistancebeing reset by partial config updates by @m-bert in #4347 - Move Interceptor on
ScrollView, not its content by @m-bert in #4331 - [iOS] Re-sync layer opacity and transform from retained props when recycling buttons by @m-bert in #4360
- [Android] Properly handle
requestDisallowInterceptTouchEventfor v3 by @j-piasecki in #4367 - Fix
Touchablenot respectingkeyboardShouldPersistTaps="handled"by @m-bert in #4372 - [macOS] Fix touch events never being delivered by @m-bert in #4390
- Fix crash when mount listener fires after
GestureDetectorunmount by @kosmydel in #4268 - [macOS] Fix
Panactivation criteria being ignored by @m-bert in #4387 - [macOS] Fix
manualActivationnever blocking gesture activation by @m-bert in #4389 - [iOS] Fix touch events never being delivered to
VirtualDetectorhandlers by @m-bert in #4392 - [iOS] Fix gestures attached via
VirtualGestureDetectornever recognizing continuous gestures by @m-bert in #4393 - [macOS] Fix
Flingnot sending touch events and begin/end states consistently by @m-bert in #4395 - [Android] Fix handlers cancelled while awaiting leaking in the orchestrator by @m-bert in #4402
- [iOS] Fix gesture callback guarantees when view is detached mid-gesture by @m-bert in #4321
- Default
GestureDetectormoduleId to -1 by @kosmydel in #4412 - Clear pending timers on unmount in
StatefulPressableby @m-bert in #4413
Miscellaneous
- Update types to respect Strict TS API by @m-bert in #4319
- Export
PressableEventtype by @m-bert in #4324 - Don't dispatch orphaned touch events by @m-bert in #4341
- Get
uiRuntimedirectly from react-native-worklets by @coado in #4276 - [iOS] Check if
enableTrackpadTwoFingerGestureisnilbefore applying by @m-bert in #4349 - Pass
nullhitSlop instead of coercing it to zero by @j-piasecki in #4356 - Add Imperative Gesture Handler Testing API by @coado in #4309
- Move hitSlop normalization to JS by @coado in #4388
- Add ref forwarding to
VirtualDetectorand v2wrapby @tshmieldev in #4369 and #4385 - Extract
CALLBACK_TYPEto shared module by @m-bert in #4374 - Don't evaluate
__DEV__orReanimatedat module scope by @m-bert in #4375 - Replace React Native type imports in
EventTypes/eventUtilswith structural equivalents by @m-bert in #4377 - De-couple the web handlers from React Native by @m-bert in #4381
- Use
globalThisinstead of bareglobalin utils by @m-bert in #4380 - Extract the RN-free half of
ScrollViewinterop fromScrollViewResponderInterceptorby @m-bert in #4376 - Extract
HoverEffectto a standalone module by @m-bert in #4379 - Lift
ButtonEventout of the codegen spec into shared types by @m-bert in #4382 - Stub the Windows module's
Gesturesmap by @m-bert in #4383 - Align
pointerTypeacross native and JS by @j-piasecki in #4403 - [Apple] Remove trailing semicolons from
RNGHGestureRecognizerState*macros by @m-bert in #4391 - Fix stale deprecation messages pointing to
Clickableby @j-piasecki in #4394 - Replace
makeMutablewithcreateShareableby @tjzel in #4406 - Update deprecated Reanimated API use with Worklets by @tjzel in #4407
- [macOS] Downgrade
react-native-workletsby @m-bert in #4410 - Derive
Pressablepressed state fromtestOnly_pressedby @m-bert in #4414 - [Android] Resolve the button event dispatcher by react tag by @m-bert in #4415
- Bump to React Native 0.87 by @m-bert in #4310
- [Android] Fix basic-example
hermescpath by @j-piasecki in #4371 - [CI] Upload application artifacts by @j-piasecki in #4378
- Update
AGENTS.mdby @m-bert in #4339 - [Docs] Improve docs by @m-bert in #4325
- [Docs] Uncover banner by @m-bert in #4338 and fix TopbarBanner not refilling content after navigation by @p-malecki in #4348
- [Docs] Update sponsors section by @m-bert in #4355
- [Docs] Reintroduce states flow chart by @m-bert in #4352
- [Docs] Add callbacks flow charts by @m-bert in #4354
- [Docs] Do not highlight wrong
onBegintransition by @m-bert in #4361 - [Docs] Add "Getting Started" page by @m-bert in #4362
- [Docs] Add announcement
Chipby @m-bert in #4366 - [Docs] Restructure SideBar by @m-bert in #4365
- [Docs] Add
Touchablesection to landing page by @m-bert in #4368 - [Docs] Add platform circles by @m-bert in #4370
- [Docs] Document
Touchablehover callbacks by @j-piasecki in #4399 - Dependency bumps by @dependabot in #4317, #4333, #4334, #4335, #4336, #4337, #4345, #4346, #4351, #4373, #4384, #4405 and #4409
New contributors
Full changelog: v3.1.0...v3.2.0
Release card