I launched Little Memory in 2011 as a Rails app. The iOS app followed in 2012. You write one line about your day, and a year later it comes back to you. Everyone's entries lived in my database, which always made me feel uneasy. If something ever happened to me, someone else would have to keep the servers running just so users could keep using their own diaries. Over the years, people have written over 1 million memories in Little Memory.
2.0 is a full rewrite. Entries live on the phone and sync through the user's own iCloud. Going forward, new entries never touch my servers. It's a fresh new start after the original app had accumulated so much tech debt over so many years.
What came up:
Building out the import/migration took a big chunk of time for the project. Many long-time users have thousands of entries. I previously let folks add entries via SMS, and the migration revealed a bug that broke the import: Twilio used to split long messages into separate webhook requests with no shared ID, and they didn't always arrive in order. One of the design decisions in the app is that you can only write one entry each day, but this bug ended up writing 2 entries on a single day. It was only from running the importer through real data during a TestFlight beta that I found this bug.
Four long-time users imported their real archives and found problems I would have shipped, including a concurrency bug that silently failed to attach photos to entries. I had to set up background tasks on iOS so I wouldn't require users to keep the app open during larger imports, especially when downloading their photos: some users had thousands of photos they needed to import!
Some users write from a desktop at night, and moving the app to be offline-first took that away. I didn't want to go back to storing entries, so the web now saves a draft that the app picks up the next time it opens.
Little Memory 2.0 is now live on the App Store, and I'm excited to continue the work building the app out with new features and new opportunities. I wrote more about the rewrite on my blog.
Interesting take. Would you still recommend this approach to someone starting today?
Appreciate the honesty here, most people only share the wins.
Solid lesson. Which channel has worked best for you so far?
Nice progress. What is the next thing you are focusing on?
Solid lesson. Which channel has worked best for you so far?
Solid lesson. Which channel has worked best for you so far?
Curious how long it took before you saw the first real results?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
With desktop users now relying on draft handoff, what behavior will tell you the privacy and ownership benefits outweigh the added friction in their daily journaling routine?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Interesting approach. What was the hardest part to get right?
Nice progress. What is the next thing you are focusing on?
Thanks for writing this up. Bookmarking it for later.
Thanks for sharing the numbers, that makes it much easier to follow.
Clear and practical, thanks. Did anything surprise you along the way?
Solid lesson. Which channel has worked best for you so far?
Good write-up. What would you do differently if you started again?
Interesting. How are you measuring whether it is working?
Curious how long it took before you saw the first real results?
Helpful post. How did you get your first bit of traction?
Interesting. How are you measuring whether it is working?
How did you decide this was worth building in the first place?
Really relatable. How much time do you put into this each week?
Recently, most of the time has been getting ready for the 2.0 launch, so it's been a lot of marketing work and less on the app itself. Though, as I noted, testers revealed a good amount of bugs. I'd say it's about 8 hrs/week right now with most of it working on the marketing.
Offline first is a serious product decision, not just a storage swap. The migration work and real archive imports are exactly where durable trust gets built, especially for a journal people expect to outlive the app. The desktop writing case also feels like the key test. Are you planning a local desktop client or a browser companion next?
I wish I had started with offline-first, and it's been on my mind for years to do this migration. I don't have current plans to build a desktop client, but I do see some usage on iPad from existing users. I'm trying not to get ahead of myself and staying pretty minimal. It can be dangerous trying to maintain too many platforms as an indie dev.
This resonates a lot — how long did it take before you saw any real signal on it?
Back in 2011, after I added email reminders, I started to see retention and folks coming back to it. And a couple years later when a competitor, OhLife shut down and brought in a bunch of new users who became dedicated Little Memory users. It's certainly helpful to be able to bring in orphans when other apps shut down!