What's Included
- TypeScript source (SqueezeGenie.tsx)
- Rounded-image texture baker (createRoundedImage.ts)
- Custom Reanimated + Gesture Handler slider
- UI-thread numeric readout (AnimatedText.tsx)
- Config bottom sheet with gear + reset FABs
About the Project
Built on React Native Skia: the photo is baked once into a rounded texture with createPicture/clipRRect, then warped through a COLS x ROWS Vertices mesh whose points are recomputed in a Reanimated useDerivedValue worklet, so the whole effect runs on the UI thread. A sigmoid 'neck' with split quad/cubic easing sequences the squeeze (top edge tucks first), and a raised-cosine value drives the notch bump. The notch is a RoundedRect drawn last so the image hides behind it, and controls live in a react-native-true-sheet bottom sheet behind a FAB. Layout adapts to safe-area insets so the island aligns on real devices. Requires the New Architecture (Fabric) and a custom dev build because true-sheet is native (npx expo run:ios / run:android). Tested on Expo SDK 56, iOS + Android.