Sign in

Ryan Ashcraft

@ryanashcraft.com
2.4K followers 356 following 431 posts

Indie iOS dev building a nutrition tracking app called @foodnoms.com. Living in SF Bay Area with @tannersmith.me. 🏳️‍🌈

PostsRepliesMedia
Reposted by Ryan Ashcraft
Foodnoms @foodnoms.com · 01/01/2026
2025 was a big year for Foodnoms. Rewrote and redesigned the entire app. Grew subscription revenue 24% while cutting ad spending. Shipped 31 updates and learned a lot of valuable lessons. Full recap: foodnoms.com/news/2025-ye...
foodnoms.com
Foodnoms in 2025: Year in Review | Foodnoms
The best food tracker for people who want simplicity. Log meals, track nutrition, and ditch the bloat of other apps. A fresh alternative to MyFitnessPal.
1181
Ryan Ashcraft @ryanashcraft.com · 15/09/2025
So proud of this update!
1140
Ryan Ashcraft @ryanashcraft.com · 10/09/2025
So excited to share what we’ve been working on this summer!
090
Ryan Ashcraft @ryanashcraft.com · 08/07/2025
Two weeks ago I started prototyping an iOS 26 "Liquid Glass" redesign concept for Foodnoms in almost all SwiftUI. I've been continuously iterating on it, and it's already come a long way. Several UX wins and a few delightful touches. I think I may very well end up shipping this in the Fall 😱
1250
Reposted by Ryan Ashcraft
Federico Viticci @viticci.macstories.net · 18/06/2025
Last week, I sat down with Craig Federighi for 30 minutes to talk about the iPad. We covered a lot: the iPad's multitasking journey, being inspired by macOS, iPad criticisms over the years and…the essence of the iPad in 2025. I'm proud of this one. My story: www.macstories.net/stories/inte...
macstories.net
Interview: Craig Federighi Opens Up About iPadOS, Its Multitasking Journey, and the iPad’s Essence
It’s a cool, sunny morning at Apple Park as I’m walking my way along the iconic glass ring to meet with Apple’s SVP of Software Engineering, Craig Federighi, for a conversation about the iPad. It’s th...
510916
Ryan Ashcraft @ryanashcraft.com · 18/06/2025
😟
151
Reposted by Ryan Ashcraft
Pol Piella Abadia @polpielladev.bsky.social · 16/06/2025
In iOS and macOS 26, we can now set the default accessibility focus on SwiftUI views 🎉 #WWDC25
193
Ryan Ashcraft @ryanashcraft.com · 12/06/2025
Working on my first experiment with AFM: picking an initial icon when saving a food, recipe or meal as a favorite. Works quite well!
4171
Reposted by Ryan Ashcraft
Peter Steinberger @steipete.me · 12/06/2025
This post is a MUST READ if you use Claude Code. spiess.dev/blog/how-i-u...
spiess.dev
How I Use Claude Code
One month ago, I subscribed to Claude Max. I've been using AI agents including Claude Code for some time prior, but with the flat pricing, my…
0349
Ryan Ashcraft @ryanashcraft.com · 10/06/2025
o3 is now cheaper than GPT-4o!
060
Ryan Ashcraft @ryanashcraft.com · 10/06/2025
Day 0 thoughts: 1. I really like the new look! 2. iOS 26 beta is rough (to be expected). 3. Excited to take the on-device foundation model APIs for a spin. 4. There are some other APIs, e.g. RecognizeDocumentsRequest, that look quite promising! 5. I have a lot of work to do. 6. I am excited.
0151
Ryan Ashcraft @ryanashcraft.com · 09/06/2025
Lovely
3140
Ryan Ashcraft @ryanashcraft.com · 05/06/2025
This is so f'd up
021
Ryan Ashcraft @ryanashcraft.com · 05/06/2025
The era of self-improving software has begun. Of course, it starts with paywalls. tryhelium.com
tryhelium.com
Helium
Get more out of your paywall with Helium. Helium's AI automatically tests and improves your mobile subscription flows to drive more subscribers.
020
Reposted by Ryan Ashcraft
Foodnoms @foodnoms.com · 02/06/2025
This update introduces Foodnoms Cloud: a new alternative to iCloud for syncing across devices. iCloud still remains fully supported, but this is great if you cannot use iCloud or storage is tight. Learn more: foodnoms.com/blog/foodnom...
051
Reposted by Ryan Ashcraft
Foodnoms @foodnoms.com · 02/06/2025
🚀 Foodnoms 2025.10 is here with some long-requested features! ⚙️ Customizable Nutrient Summaries: choose which nutrients appear in food and meal previews 📋 Nutrition Label Layout: a simpler, more-convenient layout for nutrition info 🎚️ Active Energy Scaling: scale active energy data from Apple Health
Three iPhone screens showing new Foodnoms features. Left screen shows customizable nutrient summaries with selected nutrients like calories, carbs, fat, and protein. Center screen displays a detailed nutrition label layout, mimicking standard food packaging. Right screen shows active energy scaling settings, with options to adjust how much Apple Health active energy is used. Bold headings above each phone read: “Custom nutrient summaries”, “Nutrition label layout”, and “Scale active energy”.
2121
Ryan Ashcraft @ryanashcraft.com · 28/05/2025
Hope to see you there!
030
Ryan Ashcraft @ryanashcraft.com · 22/05/2025
Feedback submitted: AVCaptureSession interrupted with .videoDeviceNotAvailableWithMultipleForegroundApps on iPhone (not iPad) with 18.4.1 (22E252) Anybody know an iOS Camera or AVFoundation engineer? FB17677854. Includes a sysdiagnose with relevant logs!
240
Ryan Ashcraft @ryanashcraft.com · 22/05/2025
Bluesky and Mastodon feeds: LLMs are dumb Meanwhile, in the past few days, Claude and ChatGPT have helped me: - Track down a rare, obscure crash in Foodnoms - Optimize a Postgres query to be 100x faster - Fix a race condition with a Redis-based distributed lock - Implemented a small, delightful UX
5484
Reposted by Ryan Ashcraft
Chris Wu 🪐 @chriswu.com · 20/05/2025
The iOS Dev Happy Hour IRL event signup is LIVE. This will 100% sell out if history is any indicator. If you're going to be in the Cupertino area you're welcome to join us for free! Big thanks to our sponsor @revenuecat.com !
051
Ryan Ashcraft @ryanashcraft.com · 18/05/2025
TIL @foodnoms.com supports importing recipes from Instagram reels
Coconut lime crusted tofu recipe on InstagramFoodnoms AI loading results screen
180
Reposted by Ryan Ashcraft
Curtis Herbert @curtisherbert.com · 15/05/2025
📝 Slopes Diaries 45: Building Trust blog.curtisherbert.com/slopes-diari...
blog.curtisherbert.com
Slopes Diaries #45: Building Trust
Oh boy, it's been a spicy few months in the Apple ecosystem 🍿. But this might just let us answer the big question we've long been unable to answer with anything but speculation.
293
Reposted by Ryan Ashcraft
Michael Tsai @mjtsai.bsky.social · 15/05/2025
SQLite Databases in App Group Containers (Don’t): mjtsai.com/blog/2025/05... #mjtsaiblog
mjtsai.com
Michael Tsai - Blog - SQLite Databases in App Group Containers (Don’t)
The crash logs were not identical, but they had this same thing:
042
Ryan Ashcraft @ryanashcraft.com · 14/05/2025
The next big Foodnoms update is almost ready! It includes several quality-of-life improvements and three *very* popular feature requests from over the years.
190
Ryan Ashcraft @ryanashcraft.com · 14/05/2025
📝 New blog post: "SQLite Databases in App Group Containers: Just Don’t”
ryanashcraft.com
SQLite Databases in App Group Containers: Just Don't
Using SQLite in an App Group container might seem like a simple solution, but it can lead to several frustrating issues and crashes. Here’s why 0xDEAD10CC crashes happen and what to do instead.
5191
Ryan Ashcraft @ryanashcraft.com · 13/05/2025
today i did marketing
3281
Reposted by Ryan Ashcraft
Chris Wu 🪐 @chriswu.com · 12/05/2025
I wrote a blog post about a Swift Charts issue that's been bothering me for the longest time and how I finally found a solution for it. Hoping this saves someone some time! chriswu.com/posts/swiftu...
chriswu.com
Finally Fixing My SwiftUI Charts Alignment Problem
An unexpected solution to a longstanding problem.
0142
Ryan Ashcraft @ryanashcraft.com · 12/05/2025
Amazing
youtube.com
Apple’s Widget Backdoor
YouTube video by Bryce Bostwick
0100
Reposted by Ryan Ashcraft
Jordan Morgan @jordanmorgan10.bsky.social · 29/04/2025
✍️ New Post ✍️ I distilled my Deep Dish Swift talk on indie app marketing to three key points. Also, I've included the Numbers spreadsheet template I used in the talk to track ad spend: www.swiftjectivec.com/Three-Key-Ta...
swiftjectivec.com
Three Indie Marketing Tips from my Deep Dish 2025 Talk
Deep Dish Swift 2025 has been a blast. Here are some key takeaways from my talk over indie app marketing.
0174
Reposted by Ryan Ashcraft
Deep Dish Swift 2027 • April 4th to 6th @deepdishswift.com · 28/04/2025
🍕 The final event of the day is happening! @charliemchapman.com is taking the stage with @teamneem.bsky.social, @ryanashcraft.com, and @edwardsanchez.bsky.social for a Launched Live Panel
091
Reposted by Ryan Ashcraft
Deep Dish Swift 2027 • April 4th to 6th @deepdishswift.com · 25/04/2025
Can you believe it's almost time for another round of Deep Dish Swift?! We are looking forward to seeing you all in two days! And if you couldn't make it, you can catch a Live Stream of the event on our YouTube (www.youtube.com/@DeepDishSwift ) 👈 So... is everybody ready for #DeepDishSwift? 👀
0111
Reposted by Ryan Ashcraft
Gwendal Roué @groue.bsky.social · 25/04/2025
Great move 👏 The best advice to anyone who wants to share an SQLite db is DON'T. The operating system will make your life so very difficult 😅
151
Ryan Ashcraft @ryanashcraft.com · 25/04/2025
Foodnoms also wants to buy Chrome
0261
Ryan Ashcraft @ryanashcraft.com · 24/04/2025
The next Foodnoms update moves all sqlite databases from the shared group container to the app's document directory. 0xDEAD10CC errors have haunted the app for years and I am so excited for them to be a thing of the past.
6161
Ryan Ashcraft @ryanashcraft.com · 24/04/2025
I'm trying Reddit ads. I think they're actually working and driving downloads with really good CPC? Really hard to tell though with ASC…
390
Ryan Ashcraft @ryanashcraft.com · 24/04/2025
Refreshed for over 40 minutes and finally got through to a confirmation page!
2190
Ryan Ashcraft @ryanashcraft.com · 23/04/2025
Typed SQL query builder APIs are overrated. Just give me raw SQL. I don't want to have to learn another leaky abstraction.
130
Ryan Ashcraft @ryanashcraft.com · 22/04/2025
Unfortunately the new design performed worse than the original. Back to the drawing board!
5210
Ryan Ashcraft @ryanashcraft.com · 22/04/2025
adam_driver_more.gif
2231
Ryan Ashcraft @ryanashcraft.com · 22/04/2025
📝 New blog post: "A Series of Unfortunate Events: April 14 Foodnoms Outage Postmortem” ryanashcraft.com/april-14-202...
ryanashcraft.com
A Series of Unfortunate Events: April 14 Foodnoms Outage Postmortem
Foodnoms recently experienced its worst outage in years. Here’s what went wrong, what I learned, and what I’m doing to prevent it from happening again.
271
Ryan Ashcraft @ryanashcraft.com · 07/04/2025
SwiftUI help needed! My app has a crash in its widgets extension, related to a ForEach. Can't figure out what's causing it and I'm not sure how to repro. No user reports of any issues, but there's a large volume of crashes. Stack trace isn't the most helpful. Anyone dealt with something similar?

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000026000219c
Termination Reason: SIGNAL 5 Trace/BPT trap: 5
Terminating Process: exc handler [97155]

Triggered by Thread:  0


Thread 0 name:
Thread 0 Crashed:
0   SwiftUICore                   	0x000000026000219c protocol witness for Collection.formIndex(after:) in conformance SubviewsCollection + 188 (<compiler-generated>:0)
1   libswiftCore.dylib            	0x000000019b25cb38 Slice.formIndex(after:) + 48 (Slice.swift:191)
2   SwiftUICore                   	0x000000026005cbf4 ForEachState.update(view:) + 3484 (ForEach.swift:679)
3   SwiftUICore                   	0x000000026005bd70 ForEachState.Info.Init.value.getter + 244 (ForEach.swift:1309)
4   SwiftUICore                   	0x000000025ff166e8 protocol witness for Rule.value.getter in conformance ForEachState<A, B, C>.Info.Init + 48 (<compiler-generated>:0)
5   SwiftUICore                   	0x000000025ff10280 implicit closure #1 in closure #1 in closure #1 in Attribute.init<A>(_:) + 324 (<compiler-generated>:0)
6   AttributeGraph                	0x00000001c9890cac AG::Graph::UpdateStack::update() + 540 (ag-graph-update.cc:583)
7   AttributeGraph                	0x00000001c9890870 AG::Graph::update_attribute(AG::data::ptr<AG::Node>, unsigned int) + 424 (ag-graph-update.cc:712)
8   AttributeGraph                	0x00000001c9887bf4 AG::Graph::input_value_ref_slow(AG::data::ptr<AG::Node>, AG::AttributeID, unsigned int, unsigned int, AGSwiftMetadata const*, unsigned char&, long) + 720 (ag-graph.cc:1510)
9   AttributeGraph                	0x00000001c9887794 AGGraphGetValue + 228 (AGGraph.mm:734)
441
Ryan Ashcraft @ryanashcraft.com · 05/04/2025
Turns out participating in a peaceful protest is good for the soul
0201
Ryan Ashcraft @ryanashcraft.com · 05/04/2025
Pretty cool to just be catching up on my podcasts and hear Foodnoms get casually namedropped (this week’s Connected episode)😎
1100
Ryan Ashcraft @ryanashcraft.com · 04/04/2025
Can we stop calling the WWDC invites a “lottery”? It’s a “selection,” per Apple’s language.
130
Ryan Ashcraft @ryanashcraft.com · 02/04/2025
Watching Cory Booker live on the Senate floor, who just set a record for longest Senate speech. Over 24 hours! "We can't act as if this is normal times."
youtube.com
LIVE: Cory Booker speaks on the Senate floor
YouTube video by Associated Press
020
Ryan Ashcraft @ryanashcraft.com · 01/04/2025
lol ChatGPT cracks me up sometimes
010
Ryan Ashcraft @ryanashcraft.com · 28/03/2025
Does anyone else call charging a Magic Mouse "spearing the whale", or is it just me?
Charging Magic Mouse
370
Ryan Ashcraft @ryanashcraft.com · 27/03/2025
We lost a good friend the other day. Way too young. He was a *true* friend, which is so rare these days. I’m so glad I got the chance to meet him in this life.
181
Reposted by Ryan Ashcraft
Matt Birchler @birchtree.me · 27/03/2025
🔗 This alert must die birchtree.me/blog/this-alert-must-d…
birchtree.me
This alert must die
I really thought that the screen recording notifications in macOS Sequoia would be the bane of my existence, but thankfully those have been changed quite a bit from the early betas last summer and they're totally a non-issue in my book today. However, these god damned "turn on reactions" alert
2143
Ryan Ashcraft @ryanashcraft.com · 26/03/2025
You know a launch went well when you get an anomaly alert from @revenuecat.com about an increase in revenue
RevenueCat email

Revenue increase detected in Foodnoms

Your revenue in project Foodnoms has changed significantly in the last 24 hours…
1270