Inspiration

Pipnote started with two very ordinary frustrations. First, I wanted a quicker way to remind myself of something: write a few words, choose a time, and send it off. For those tiny reminders, I did not want to navigate menus or organize a list.

The second idea was more personal. I imagined my wife sending me a reminder while I was busy doomscrolling on the bus, sofa or on the toilet. Could it appear right above whatever I was looking at, in the Dynamic Island, where I would actually notice and action it? That was the idea that pushed me to build Pipnote.

As I built it, the same interaction became useful for something warmer: a “Good luck today” before an interview, a small surprise, or a reminder from someone who cares. A little cute animal courier felt right for that job.

What it does

Pipnote is an iPhone app for short notes and reminders that arrive at a chosen moment. Write up to 60 characters, choose a courier and a delivery time, then keep the note for yourself or share its link through Messages or another app.

When someone accepts a shared note, Pipnote shows who sent it and when it will arrive, while keeping the message sealed in the interface until delivery. At the right moment, a courier brings it to the Dynamic Island or Lock Screen, with local notifications as a fallback. Receiving an Island delivery requires Pipnote on an iPhone running iOS 26 or later.

Delivered notes can become keepsakes, and replies are always free. Pro adds more queued notes, unlimited sends, all four couriers, the full archive, snoozing, daily and weekly reminders, and an ad-free experience. No account is needed to get started.

How I built it

I built the native app with Swift and SwiftUI, using SwiftData for on-device storage and ActivityKit and WidgetKit for Live Activities. A scheduling coordinator prioritizes nearby deliveries and uses local notifications for notes that cannot have an active Live Activity yet.

Shared notes travel in universal links. A companion website handles the sealed preview and App Store handoff. The visual identity combines warm paper, bold ink, postal red, and four illustrated couriers: Pip the hedgehog, Skye the sparrow, Ember the fox, and Moss the tortoise.

RevenueCat powers the Pro entitlement, purchase restoration, and the paywall through RevenueCatUI. The app reads entitlement state to unlock features, while offerings and paywall presentation can be managed in RevenueCat.

Challenges I ran into

The hardest part was making a simple interaction work within Live Activity limits. Notes can be scheduled far ahead, but only a small number of activities can be active at once. I built a proximity-based queue, reserved capacity for incoming notes, and added notification fallbacks.

Shared links brought another challenge: keeping the note sealed in both the app and web preview, and helping a recipient continue after installing the app. I also had to design for the Dynamic Island's tiny presentation sizes and iOS-controlled animation behavior.

Accomplishments and lessons

I am proud that a slightly ridiculous personal idea became an app people can download from the App Store. The small details now form one experience: composing, sending, waiting, delivery, and replying.

The biggest lesson was how much work sits behind “just write a note and pick a time.” Delivery, installation, and purchase flows all have edge cases, but the person sending a note should not have to think about them.

Sharing Pipnote on Hacker News also made me explain why I built it. Someone asked whether they would use it constantly or never at all. Answering that question helped me put the personal motivation into words.

Marketing has been another learning curve. I tried UGC through Noise and reached more than 50,000 views, but saw few downloads. Sharing the struggles publicly has helped me distinguish attention from actual interest in the app. With Layers, I turned that question into a focused experiment.

Growth experiment with Layers

I installed the Layers SDK and verified that it reports app events; the September 25 check also confirmed SDK health beacons. I used Layers through its MCP to record the audience, hypothesis and success criteria, publish and schedule two real-app demo variants, and inspect social performance and product signals.

The audience was iPhone users whose partner was having a demanding day. My hypothesis was that an occasion-specific opening would generate more saves and shares per 1,000 views than a feature-led opening. Both videos used the same 15-second demo, caption and call to action; only the first three seconds of opening text changed. Version A, published September 11, opened with “A tiny courier delivers notes to their Dynamic Island.” Version B, published September 12 at the same local time, opened with “Their day is a lot. Send a little kindness.”

As of September 25, A had 140 views and no likes, saves or shares; B had 98 views, one like, and no saves or shares. Neither reached the predeclared minimum of 500 views per arm, and there were no saves or shares to support a winner. These are cumulative results, not captured 72-hour snapshots. Only the first pair ran; different posting days and nearby automated posts also limit comparison. I regard the result as inconclusive, not evidence that either message works better.

The review also exposed measurement gaps. The shared campaign link had no recorded clicks, so I cannot attribute app activity to these posts. Pipnote sends onboarding_finished, which Layers records but its standard onboarding funnel does not count. This showed me that receiving SDK events and having a usable growth funnel are separate checks.

My next step is to verify campaign-link placement and correct the onboarding mapping, then test a shorter demo that shows the delivered note immediately. That is a new hypothesis, not a conclusion from the first test. I would keep the remaining creative and posting conditions comparable, capture results at a fixed age, and evaluate engagement separately from campaign clicks and first-note activation.

What's next

I want to learn which moments people use Pipnote for, keep improving the first shared-note experience, and refine delivery across real devices. The goal is to make a small reminder feel worth noticing and sometimes worth keeping.

Built With

Share this project:

Updates

Submission history