Inspiration
The best part of sharing a photo with a friend is seeing their face when they see it. Messaging apps skip that moment: you send, they look, and you get a "lol" ten minutes later. The iPhone Duo gave us a physical gesture that feels like opening a letter, and we wanted the unfold to be the reveal.
What it does
- A friend sends you a Peek, a photo hidden behind a blurred, darkened card.- You reveal it by physically unfolding your iPhone Duo As the hinge opens, the photo sweeps into view, sharpens and brightens in step with the fold angle. A softhaptic fires when the device starts to open, and the reveal completes only when the Duo is fully open.- While you unfold, the front camera records your reaction, so the moment you see the photo is captured.- On the sender side, Your Peek shows each friend who opened it; tap a friend to
replay their reaction.- A Friends tab lets you manage who you share with. Peek Plus, a subscription built on RevenueCat, is set up as the premium tier.
## How we built it- SwiftUI on iOS 27.1 with Xcode 27.1 beta, using the Observation framework and a
NavigationStackfor the inbox, reveal and reactions flows.- iPhone Duo hinge API: aDuoPostureServicereadsDeviceHingeContext. The hinge angle drives the reveal animation, and the fold status (closed, partially open,fully open) decides when the reveal counts as complete. - AVFoundation:aReactionCaptureServiceruns a front-cameraAVCaptureSessionand records the reaction withAVCaptureMovieFileOutput. RevenueCat SDK:* aSubscriptionServiceconfigures Purchases, loads the currentoffering, watches theplusentitlement through the customer info stream, and exposes purchase and restore.- Bitrig's 3D iPhone Duo simulator let us test fold states before we had hardware.- Liquid Glass*styling across buttons and surfaces.
Challenges we ran into
- Making the reveal feel physical: the hinge angle is continuous, but "revealed"needs to be a firm moment. We use the angle for the animation and the discrete fold status as the final say.- Testing without the device: simulators have no camera, so we built a simulated reaction preview and a fallback that fakes unfolding, keeping the whole flowtestable.
- Keeping the team in sync: several people were pushing UI changes at once, so webuilt the subscription layer on a separate branch and merged it without touching the screens. ## Accomplishments that we're proud of
- The unfold-to-reveal interaction genuinely could not exist on a regular phone.
- A clean architecture: posture, camera capture and subscriptions are each their own service, and the UI just watches them.
- RevenueCat connects end to end and loads a live offering with a monthly package.
What we learned
- How to design around fold states and hinge angles instead of screen taps.
- That the physical gesture itself can be the product.
- How to integrate RevenueCat entitlements and offerings in a SwiftUI app using the Observation framework.
What's next for Peek
- Real sending and receiving between devices, with reaction videos synced to a backend.
- Using the outer display so the closed Duo shows "Aish sent you a Peek" and invites you to unfold.
- A Peek Plus paywall unlocking longer reaction clips, group Peeks and custom reveal effects.
Built With
- avfoundation
- bitrig
- ios
- iphone-duo
- revenuecat
- swift
- swiftui
- xcode
Log in or sign up for Devpost to join the conversation.