About the Project
Built on react-native-reanimated v4 and react-native-gesture-handler: a Pan and a Tap gesture race, so a drag opens the row and a tap presses it, both sharing one highlight shared value (the row background and corner radius animate off the drag distance itself, not a boolean). Action buttons derive their own reveal window from the row's progress, so they stagger in as their slot is uncovered; dragging past the open width stretches the edge button's circle into a pill, and passing the trigger point arms the full-swipe action, which fires on release via scheduleOnRN. Cross-row coordination (only one open row, and separators that hide when either neighbour is active) runs through makeMutable values in a plain module, so it stays entirely on the UI thread with no context or re-renders. Rows accept a resetKey and index so they survive list recycling. No native code — pure JS/worklets, works in Expo Go. Tested on Expo SDK 56 (RN 0.85), iOS + Android.