BookShelf
Mobile · 2026
A native iOS reading app recreating a Pinterest design concept in Expo SDK 57, where a collection's fanned book covers fly onto a looping wooden shelf.
- Role
- Solo engineer
- Impact
- Concept-to-native recreation of every transition in the reference
Challenge
Recreate a motion-heavy design concept frame for frame while keeping every screen native SwiftUI through Expo UI, which animates modifier changes but not views moving between screens.
Contribution
Designed and built the whole app: the collection cards, the detail sheet, an infinitely looping snap-scrolling shelf, a floating tab bar, and a hero layer that flies three covers between the card and the shelf in both directions.
Outcome
A working iOS 27 build that matches the reference's open, close, shelf, and tab transitions, documented with a framed simulator recording and open-sourced on GitHub.
Details
BookShelf started from a short Pinterest video of a book app concept: collection cards with three layered, tilted covers that lift off the card and settle onto a wooden shelf when you open a collection.
Every screen is drawn by native SwiftUI through Expo UI. Expo UI animates modifier changes but not views moving between two screens, so the shared-element move is a dedicated overlay: the card and the shelf report their on-screen frames, and three covers spring between those poses while the real covers stay hidden.
The shelf repeats its books three times and silently recentres when scrolling settles, so it loops in both directions. The detail sheet closes from a back button, the grabber, or a pull-down, and the covers fly back from wherever the shelf was scrolled to.
- Hero flight that straightens and lands three tilted covers on the shelf, then flies them home on close
- Looping, snapping horizontal shelf built from SwiftUI scroll position and scroll phase events
- Pull-down, grabber, and back-button dismissal all sharing one close animation
- Config plugin adopting the UIKit scene life cycle that the iOS 27 SDK requires



Stack
Expo SDK 57 · Expo UI · SwiftUI · React Native · TypeScript · iOS
