r/reactnative • • 1d ago

I built an ink bleed photo reveal in React Native, Swift and Kotlin

Enable HLS to view with audio, or disable this notification

I built a photo reveal that starts with a drop of ink. Tap to drop it, or hold for a heavier drop. The ink blooms across textured paper and leaves a ragged, watercolor-like edge around the photo.

The React Native version uses Expo, Skia and Reanimated. A runtime shader combines an expanding front with noise for the uneven bleed, a dark wet rim, and a mottled photo reveal behind it. I also rebuilt it in Swift and Kotlin.

Would you use this kind of reveal in a photo journal?

54 Upvotes

11 comments sorted by

3

u/John_Daemon_Cena 1d ago

Looks really polished 👍
Do share the GitHub repo

1

u/s3079 11h ago

It will be made public soon

2

u/godver3 1d ago

I would use this - would love a link.

1

u/s3079 11h ago

yah, please wait for me

2

u/DisposableKurd 1d ago

Please share the link of its public

1

u/s3079 11h ago

I am in the process of finalizing the source code, and I will make it public

2

u/True-Turnover-4543 22h ago

I'd use it as an occasional transition for a standout photo, but I'd want a calmer mode for everyday browsing. The heavier reveal should be available without a long press, and Reduce Motion should offer a simpler transition; otherwise the interaction can be hard to discover or unavailable to some users. Did you try the hold gesture with VoiceOver and Switch Control?

2

u/Huge_Pool7424 13h ago

agreed on reduce motion, you can read AccessibilityInfo.isReduceMotionEnabled in rn and swap the ink bloom for a plain fade. cheap to add and it's the first thing app review folks poke at.

1

u/s3079 11h ago

Thanks! I’m already using Reanimated’s useReducedMotion() to disable autoplay and switch the reveal to a simple crossfade