Developer Update: January 2022

In my last blog post, I announced that I had started work on a major update, nicknamed "FoodNoms 2". A few things have changed since that post, and it's been quite a while without any official updates, so time for another developer update!


I originally hoped to ship FoodNoms 2 in Fall 2021. That obviously didn't happen. There are a variety of reasons why I pushed back the launch date. At a high-level, it comes down to simply overestimating how much time I'd have and underestimating how much time it'd take.

FoodNoms is a "nights and weekends" project. In 2020, it was easier for me to focus on FoodNoms because I was stuck at home in quarantine mode. This changed in 2021 when vaccines became available – I was finally able to see family and friends again that I hadn't seen in months or years. Naturally as I reinvested more into my personal life, I spent less time on FoodNoms.

On the flip side, FoodNoms 2 has been way more involved and time consuming than I originally expected. FoodNoms 2 isn't a complete rewrite, but it's pretty dang close. I have completely replaced Core Data and NSPersistentCloudKitContainer with GRDB and my own CloudKit library. I redesigned the schema for all of the data models. I rewrote several screens to use collection views and Combine instead of SwiftUI and table views.

They say rewriting software is almost always a mistake, because it often takes way longer than you originally expect, and you often introduce (or re-introduce) a ton of bugs. FoodNoms 2 is not an exception.

I've worked on several large software rewrites in my past, but FoodNoms is special in its technical complexity. I certainly underestimated how long it would take to harden the new codebase to a point where it'd be ready for beta testing. I've spent literally hundreds of hours debugging CloudKit syncing issues, battling performance regressions, and fixing various logical regressions.

Even though it's taken longer and been more painful than I originally anticipated, I have zero regrets about embarking on this rewrite. I am very happy with how both the codebase and app are turning out. Thankfully, these big technical hurdles are behind me now, so I can focus mostly on building high-level features from here on out.

FoodNoms 2 Project Status

FoodNoms 2 is approaching parity with FoodNoms 1. I've also finished several new features, some of which I've openly discussed and some I've yet to disclose.

Here's a breakdown of where FoodNoms 2 is at today (asterisks denote features that are either completely new or full reimplementations):

Finished

  • Bidirectional Apple Health syncing*
  • iCloud syncing*
  • Smart Suggestions v2*
  • Custom Meal Types*
  • FoodNoms 1 data migration*
  • Logging (search, scanner, editing, drinks, etc.)
  • Watch app
  • Widgets
  • Quick Look extension
  • Settings screens
  • Onboarding
  • Community Database
  • Several unannounced features; some large and some small

Almost Finished

  • Goals*
  • Library management (Created Foods, Recipes, and Meals)
  • Shortcuts

Remaining Work

  • Goal details
  • Food, recipe, and meal sharing
  • Favorites
  • Onboarding-like experience for upgrading from FoodNoms 1
  • App URLs for Quick Actions widget and app icon shortcut handling
  • Proper handling of future backwards-incompatible CloudKit schema migrations
  • Quick entries
  • Several unannounced features; some large and some small

I also shipped several minor updates in 2021. Version 2021.3, released in September, was actually a rather significant update. It introduced a highly-requested feature to scan nutrition labels from your photo library. It also fixed several critical bugs and reworked the App Store screenshots in an effort to improve download rates.

Chart of number of crashes over time in 2021, with a substantial decrease in September after the 2021.3 update.
The number of crashes reduced by more than 2x with version 2021.3.

I really took my eye off the ball on the marketing side of things. It was difficult to find time to even think about marketing. In 2022, I plan to focus on spending more time figuring out the best ways to reinvest earnings back into the business.

I want to capitalize on the FoodNoms 2 launch as much as possible. I can't wait to being more transparent about FoodNoms 2 and start to build some hype, but I am patiently waiting for it to be closer to being ready to ship.

For all those eager to learn more, please stay tuned, and thank you for the support! If you want to make sure you don't miss out on any updates, subscribe to the new FoodNoms Insiders newsletter (no spam, I promise!).

– Ryan (@ryanashcraft)