Auto-workletize React Native Gesture Handler callback functions #2433
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR adds support for detecting patterns in JavaScript code which are specific to React Native Gesture Handler, like
Gesture.Tap().onEnd(...)
, so that they can be automatically converted into worklets even if they are not marked with'worklet';
directive.The general pattern is
Gesture.Foo()[*].bar(fun)
, where:Foo
is a gesture object, likeTap
,Pan
,Pinch
, etc.[*]
is any number of chained builder method calls (e.g.numberOfTaps(2)
oronStart(...)
)bar
is any builder method name, e.g.onEnd
fun
is a function declaration, function expression or arrow function expressionThe following callback functions will be auto-workletized:
Please note that the following callback functions will not be auto-workletized:
In all the above cases, you still need to specify the
'worklet';
directive explicitly.Changes
processIfGestureHandlerEventCallbackFunctionNode
function inbabel.config.js
Test code and steps to reproduce
Checklist