Lukas Kubanek
lukaskubanek.com
Lukas Kubanek
@lukaskubanek.com
Obsessed with structuring things.
macOS & iOS app developer /// Maker of Diagrams for Mac /// Freelancer
#Swift #SwiftUI #AppKit #TCA #CloudKit

🌍 https://lukaskubanek.com
👨‍💻 https://github.com/lukaskubanek
🐘 https://mastodon.social/@lukaskubanek
Here’s more context should you be interested: github.com/pointfreeco/...
October 25, 2025 at 5:06 AM
If it’s reconstructed from system fields only with `CKRecord.encodeSystemFields(with:)` and `CKRecord.init(coder:)`, the ancestor will contain just the metadata.
October 25, 2025 at 5:06 AM
I found that if the record you upload was created from a complete archive using `CKRecord.encode(with:)` or fetched directly from CloudKit, the ancestor record is fully populated.
October 25, 2025 at 5:06 AM
Turns out the behavior isn’t related to encryption after all, but rather to how the record sent to CloudKit is constructed.
October 25, 2025 at 5:06 AM
In my tests, it seems to include values for encrypted fields but not for unencrypted ones. Though, I couldn’t find any documentation confirming this.

Any hints would be much appreciated. Thanks! 🙏
October 24, 2025 at 2:43 PM
@jollycoder.com Hi Tim, if I remember correctly, you might know a thing or two about CloudKit. Do you happen to recall whether the `CKError` for `serverRecordChanged` should include an `ancestorRecord` with all fields populated? Or is it just the system ones (i.e. metadata)?
October 24, 2025 at 2:43 PM
I secured my Bluesky account a while back, but I went all-in on Mastodon with the Swift dev community there.

This post by @mijustin.bsky.social makes it appealing, comparing it to the early days of Twitter:
justinjackson.ca/twitter-blue...

Guess I’ll see how it plays out over the next few months…
Leaving Twitter for Bluesky
After 15 years and 50,000 tweets on Twitter/X, I'm moving to Bluesky, which (in the last month) has become 1,000x more fun than X.
justinjackson.ca
November 24, 2024 at 4:42 PM