Leo Kwan © 2026 · RSS · Archive · All Topics · Privacy

Skip to content
Leo Kwan
Leo Kwan
HomeEverythingWorkTravelAbout
⌘K
Leo Kwan profile photo

Leo Kwan

My personal blog. I'm a software engineer who's built a bunch of iOS apps, plus too many side projects I'm trying not to get distracted by.

Navigate

HomeEverythingWorkTravelArchiveAboutAll topics
Leo Kwan profile photo

Leo Kwan

My personal blog. I'm a software engineer who's built a bunch of iOS apps, plus too many side projects I'm trying not to get distracted by.

About →
←Back to feed
Nov 2023

Don't forget to deploy your CloudKit-backed SwiftData entities to production.

I thought SwiftData model changes would just work ✨. Make sure you press this button after updating your CloudKit-backed SwiftData models.

My biggest lesson after working on an app for 5+ years is to move on faster. Even after moving on from SuperFit last year, I still thought about it all the time (Are we still talking about an app? 💔)

Well… fast forward to WWDC23- and Apple launched SwiftData, a new and improved persistence framework over CoreData. So… no more .xcdatamodel GUI— I declare a @Model and things just work? Sweet.

With a model and simpler persistence coordinator in “ModelContainer”, you have a working app.

Well I think I moved too fast this time around. 💨

In the Meet SwiftData session- they briefly mentioned CloudKit integration, but did not elaborate on it. No matter— if it was possible that’s all I needed to know.

Fast forward to today— I published a receipt splitting app using CloudKit & SwiftData 👏.

I deployed it to the App Store and days later, I realized something was off.

My receipts were saved on device, but they were no longer syncing to other signed-in iCloud devices like my iPad. It worked fine when I was debugging in Xcode though 🤔. Did I run out of iCloud storage lol?

where are my receipts from iPad?

Answer: I had to log onto the CloudKit dashboard and tap “Deploy Schema Changes…” for my entities to show up on production.

Oops. I thought SwiftData model changes would just work ✨. In my defense this misstep wasn’t obvious because my app’s entities in development were automatically created. It makes sense though, data migrations in prod shouldn’t be automatic.

Not in my defense: CloudKit isn’t new… had I been less hasty with launching a new app, I would have found this 4 year old thread with the same answer:

It sounds like you didn’t replicate your schema to production.

😆 Oh wells- fortunately it was a silent launch and I hadn’t blast the app yet…

Oh check out my app Resplit 😏

Make sure you press this button after updating your CloudKit-backed SwiftData models!

#code#resplit
Previous
The Potential and Limitations of OpenAI's Custom GPTs.
Next
Proposing to Nicole in Ortigia, Sicily

Related Posts

  • The Potential and Limitations of OpenAI's Custom GPTs.2024-01-21
  • 7 months at Square.2021-12-06
  • Rotato.app is the perfect marketing tool for solo app developers2020-05-15