Scheduled messages
Until Then
Until Then lets you write a letter or record a voice or video message today and have it emailed to the people you choose on a date you set, even years from now.
Visit until-then.cc- Built for
- People leaving something personal for a future moment: a child's 18th birthday, a wedding, a first day, or a time they will not be there for.
- Our role
- Product, brand, design, full-stack build and launch
- Stack
- Next.js, Neon Postgres, Stripe, Cloudflare R2, React, TypeScript, Drizzle ORM, Better Auth, Resend, WebCodecs, Tailwind CSS, Vercel

The problem
Why Until Then exists
Email and messaging only send now. There was no simple, trustworthy way to seal a heartfelt message, especially a recording, and know it will reach the right inbox on the right day, possibly decades later.
The person receiving it should not need an account, an app or a password. And a message that waits years has to survive changing email addresses, large video files and a delivery system that cannot afford to send twice or not at all.
The product
What we built
Until Then is a calm, three-step app: write or record, choose who and when, and it arrives on the day. Written letters are free forever; voice and video messages are a one-time payment, with a lifetime option for people who plan to send many.
Each recipient gets an email on the day and a private page that is only theirs. The sender hears when it has been delivered and sees when each person opened it. After an open window the sender chooses, the recording is deleted for good.
A letter, a voice or a face
Written, voice or video messages of up to ten minutes, recorded in the browser or uploaded, with written words alongside any recording.
Scheduled to the minute, years ahead
Pick a date, time and time zone up to 100 years out, with presets for one, five, ten and eighteen years.
Nothing for recipients to install
No account, app or password. Each recipient gets their own unguessable link to a page made for them.
Delivery and read receipts
The sender gets a delivery confirmation and can see when each person opened their message.
An open window, then gone
The sender picks how long a recording stays open, from one day to a week. After that it is deleted from storage, not just hidden.
Free to write, pay once to record
Letters are free and unlimited. Recordings are a one-time Stripe payment per message, with no subscription.
Screens
A closer look


Under the hood
The engineering
Delivery that cannot send twice
A cron job checks for due messages every five minutes, with Vercel Cron as an hourly backup. Each message is claimed with a single conditional database update, so overlapping runs can never double-send, and a partly failed send retries only the recipients still waiting.
Video compressed in the browser
Before upload, video is re-encoded on the device with WebCodecs to 720p at about 1 Mbps, preferring H.264 and falling back to VP9. A ten-minute message lands at around 80 MB instead of a multi-gigabyte phone file, and the encoder only loads when it is needed.
Uploads straight to storage
Recordings go from the browser directly to Cloudflare R2 through short-lived signed links, so large files never pass through the app server. The server then verifies what actually arrived, its size and its length, and deletes anything over the limit.
Payments that cannot be lost
The Stripe webhook and the return from Checkout run the same idempotent function, so whichever arrives first seals the message. As a last check, the dispatcher refuses to send a recording that has not been paid for.
Protecting a domain that sends years later
A bad address may not surface for years, and every bounce hurts deliverability. Addresses are checked for likely typos, throwaway inboxes and domains that cannot receive mail, and a signed webhook feeds bounces and complaints into a suppression list.
- Next.js
- Neon Postgres
- Stripe
- Cloudflare R2
- React
- TypeScript
- Drizzle ORM
- Better Auth
- Resend
- WebCodecs
- Tailwind CSS
- Vercel