Live Memory is built specifically to satisfy iOS’s undocumented requirements for the Lock Screen’s “Motion” toggle, not just to produce a Live Photo file. I defined the product, the pricing and the architecture, debugged on physical devices and handled the App Store submission. Implementation was done with Claude Code under my direction.
Status: submitted for App Store review and awaiting Apple’s decision, so not yet public. It is already in daily use by a small group of beta users, with an early waitlist ahead of launch.
Tech: SwiftUI, AVFoundation, PhotoKit and StoreKit 2. The marketing site is hand-written HTML, CSS and JS, deployed on Vercel.

The challenge
A static Lock Screen is static. Live Memory lets iPhone owners turn a real video moment into one that actually animates on wake. That sounds like a file conversion, but it isn’t: a generated Live Photo can look valid in Photos and still be silently rejected by the Lock Screen’s own motion check, for reasons Apple doesn’t document.

My approach
- Privacy by default. Conversion runs entirely on-device, with no account or server. That is simpler for users and removes a whole category of things to secure.
- Evidence over guessing. When the platform’s rejection reason wasn’t documented, I didn’t patch around the symptom. I ran controlled experiments to find the real cause.
- Intentional monetization. Three free creations, then weekly or yearly subscriptions. I walked back an early “~90% off” framing for a more credible 80% badge, because the first would read as too good to be true.
- Scope discipline. I built a custom launch animation, then cut it once the plain system launch proved fast enough. Work that stopped earning its place didn’t stay.
Key challenges
1. The undocumented wallpaper-motion rejection
A generated Live Photo showed the LIVE badge in Photos, but the Lock Screen editor rejected it as “Motion Not Available”. I extracted and compared the metadata structure of a real camera-generated Live Photo against mine, then ran several rounds of controlled, single-variable tests on a physical iPhone: audio presence, container structure, encoding, still-image resolution and format, one at a time.
The testing isolated the cause: the geometric alignment between the still image and the video’s declared transform metadata, not resolution, codec or audio, which I had initially suspected. It was confirmed working end to end on device after the fix.
2. App Store compliance
The first submission was rejected for a missing, functional Terms of Use link in the product page metadata. I root-caused it against Apple’s rejection text, fixed it and resubmitted the same day. I turned this, together with the rejection history of another app, into a reusable pre-submission checklist so the same mistakes don’t recur.
3. The marketing site
I translated a Framer design reference into a hand-written, framework-free site with no starting template, including reimplementing interaction details like a drag-and-inertia carousel from scratch. It is live in production on its own domain.

Beta feedback
Before I submitted the app to App Review, a small group of beta users used it in their daily routine, and their feedback was positive. It is an early signal from a small group, ahead of the public launch.
Outcomes
Verified
- Live Photo wallpaper motion works end to end on a physical iPhone.
- The marketing site is live, subscription products are configured in App Store Connect, and the App Preview video assets are validated against Apple’s technical spec.
- The first review rejection was fixed and the app resubmitted the same day.



