Chris Eidhof
@eidhof.nl
I recorded my Attribute Graph talk from a few weeks ago. I hope this is helpful! chris.eidhof.nl/presentation...
Attribute graph — Chris Eidhof
chris.eidhof.nl
July 1, 2025 at 9:39 AM
I recorded my Attribute Graph talk from a few weeks ago. I hope this is helpful! chris.eidhof.nl/presentation...
I had such a fun day at WWDC, was really great talking to everyone! Hope to see many more people tomorrow at 3pm at the One More Thing conference, I'll be talking about the Attribute graph.
June 10, 2025 at 5:11 PM
I had such a fun day at WWDC, was really great talking to everyone! Hope to see many more people tomorrow at 3pm at the One More Thing conference, I'll be talking about the Attribute graph.
Reposted by Chris Eidhof
The Art of Fauna just *WON* an Apple Design Award in the Inclusivity category. 🤯
But it is also a finalist for Social Impact. 💚
Two nominations, one win. I still can't believe this. What a year 🥹
#indiedev #WWDC #WWDC25 #TheArtOfFauna
But it is also a finalist for Social Impact. 💚
Two nominations, one win. I still can't believe this. What a year 🥹
#indiedev #WWDC #WWDC25 #TheArtOfFauna
June 3, 2025 at 5:00 PM
The Art of Fauna just *WON* an Apple Design Award in the Inclusivity category. 🤯
But it is also a finalist for Social Impact. 💚
Two nominations, one win. I still can't believe this. What a year 🥹
#indiedev #WWDC #WWDC25 #TheArtOfFauna
But it is also a finalist for Social Impact. 💚
Two nominations, one win. I still can't believe this. What a year 🥹
#indiedev #WWDC #WWDC25 #TheArtOfFauna
May 31, 2025 at 5:31 PM
I've been playing around with this tool to record and play back my typing. I took inspiration from Retcon and made the history draggable.
Things like automatically doing the indentation / syntax highlighting quite don't work yet, but those are the "easy" polishing bits.
Things like automatically doing the indentation / syntax highlighting quite don't work yet, but those are the "easy" polishing bits.
May 22, 2025 at 11:35 AM
I've been playing around with this tool to record and play back my typing. I took inspiration from Retcon and made the history draggable.
Things like automatically doing the indentation / syntax highlighting quite don't work yet, but those are the "easy" polishing bits.
Things like automatically doing the indentation / syntax highlighting quite don't work yet, but those are the "easy" polishing bits.
Reposted by Chris Eidhof
I am beyond thrilled to finally share this! 🥹
Today is Global Accessibility Awareness Day - and Apple sat down with me to talk about how I build accessible apps. 🦾
The interview is now live on the *front page* of the App Store:
apps.apple.com/at/story/id1...
#GAAD #A11Y #accessibility #indiedev
Today is Global Accessibility Awareness Day - and Apple sat down with me to talk about how I build accessible apps. 🦾
The interview is now live on the *front page* of the App Store:
apps.apple.com/at/story/id1...
#GAAD #A11Y #accessibility #indiedev
Discover the art of accessibility : App Store Story
Learn about collection Discover the art of accessibility featuring Art of Fauna: Cozy Puzzles, Study Snacks: Language & More, Letter Rooms: Fun Anagrams and many more on Mac App Store. Enjoy these ap...
apps.apple.com
May 15, 2025 at 5:03 AM
I am beyond thrilled to finally share this! 🥹
Today is Global Accessibility Awareness Day - and Apple sat down with me to talk about how I build accessible apps. 🦾
The interview is now live on the *front page* of the App Store:
apps.apple.com/at/story/id1...
#GAAD #A11Y #accessibility #indiedev
Today is Global Accessibility Awareness Day - and Apple sat down with me to talk about how I build accessible apps. 🦾
The interview is now live on the *front page* of the App Store:
apps.apple.com/at/story/id1...
#GAAD #A11Y #accessibility #indiedev
Reposted by Chris Eidhof
What's new in Swift 6.2? A whole ton of stuff – raw identifiers, Collection conformances for enumerated(), method key paths, backtracing, weak let, Observations, InlineArray, and of course a big batch of concurrency changes too. Want to see it all in action? www.hackingwithswift.com/articles/277...
What's new in Swift 6.2?
Raw identifiers, backtraces, task naming, and more.
www.hackingwithswift.com
May 9, 2025 at 8:12 PM
What's new in Swift 6.2? A whole ton of stuff – raw identifiers, Collection conformances for enumerated(), method key paths, backtracing, weak let, Observations, InlineArray, and of course a big batch of concurrency changes too. Want to see it all in action? www.hackingwithswift.com/articles/277...
How to correctly initialize a view model in SwiftUI: chris.eidhof.nl/post/swiftui... (for when the view needs ownership of the view model).
SwiftUI View Model Ownership — Chris Eidhof
chris.eidhof.nl
May 6, 2025 at 11:15 AM
How to correctly initialize a view model in SwiftUI: chris.eidhof.nl/post/swiftui... (for when the view needs ownership of the view model).
Reposted by Chris Eidhof
Another "linkable explanation": why I avoid `Binding(get:set:)` in SwiftUI. chris.eidhof.nl/post/binding...
Bindings — Chris Eidhof
chris.eidhof.nl
March 21, 2025 at 8:53 AM
Another "linkable explanation": why I avoid `Binding(get:set:)` in SwiftUI. chris.eidhof.nl/post/binding...
In our workshops, people often use `Group` and somehow it always makes me feel uneasy — it can behave in unexpected ways. I finally figured out the actual problem, and it's not really `Group` that's the issue. chris.eidhof.nl/post/why-i-a...
Why I Avoid Group — Chris Eidhof
chris.eidhof.nl
March 19, 2025 at 9:35 AM
In our workshops, people often use `Group` and somehow it always makes me feel uneasy — it can behave in unexpected ways. I finally figured out the actual problem, and it's not really `Group` that's the issue. chris.eidhof.nl/post/why-i-a...
I thought I'd found a bug in SwiftUI, but it turned out to just be an unlucky combination of implementation details: chris.eidhof.nl/post/swiftui...
SwiftUI Phase Animation "Bug" — Chris Eidhof
chris.eidhof.nl
March 3, 2025 at 10:55 AM
I thought I'd found a bug in SwiftUI, but it turned out to just be an unlucky combination of implementation details: chris.eidhof.nl/post/swiftui...
Reposted by Chris Eidhof
Swift Talk 443
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...
February 28, 2025 at 9:02 PM
Swift Talk 443
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...
Staggered Animations Revisited
After a two year hiatus, we build a staggered modifier in SwiftUI that works with any view in the view tree.
This episode is free to watch! 😊
talk.objc.io/episodes/S01...
The store didn’t have my usual shampoo. Got a different brand with a different fragrance and now I keep thinking there’s a person standing right next to me because I’m not yet used to the new smell. 🙃
January 26, 2025 at 5:00 PM
The store didn’t have my usual shampoo. Got a different brand with a different fragrance and now I keep thinking there’s a person standing right next to me because I’m not yet used to the new smell. 🙃
Went to a miso-making workshop today, where we made miso paste and onigiri, so much fun (and so delicious). The only difficult bit left is waiting for half a year until the miso paste is ready with fermentation...
January 24, 2025 at 7:27 PM
Went to a miso-making workshop today, where we made miso paste and onigiri, so much fun (and so delicious). The only difficult bit left is waiting for half a year until the miso paste is ready with fermentation...
Reposted by Chris Eidhof
Coming Feb. 5–6 to Apple Developer Center Cupertino and on livestream, Bring SwiftUI to your app!
We’ll focus on how your expertise in imperative user interface frameworks like UIKit and AppKit can help you get comfortable with SwiftUI’s declarative approach.
We’ll focus on how your expertise in imperative user interface frameworks like UIKit and AppKit can help you get comfortable with SwiftUI’s declarative approach.
January 7, 2025 at 8:32 PM
Coming Feb. 5–6 to Apple Developer Center Cupertino and on livestream, Bring SwiftUI to your app!
We’ll focus on how your expertise in imperative user interface frameworks like UIKit and AppKit can help you get comfortable with SwiftUI’s declarative approach.
We’ll focus on how your expertise in imperative user interface frameworks like UIKit and AppKit can help you get comfortable with SwiftUI’s declarative approach.
No video today because I’ve got to watch the kids all day. Will be back at it on Monday!
December 20, 2024 at 12:01 PM
No video today because I’ve got to watch the kids all day. Will be back at it on Monday!
The `Animatable` protocol lets you hook into the animation subsystem of SwiftUI. You can expose any property using `AnimatableData` and have it interpolated for you (but the property does need to conform to `VectorArithmetic`)
December 19, 2024 at 12:36 PM
The `Animatable` protocol lets you hook into the animation subsystem of SwiftUI. You can expose any property using `AnimatableData` and have it interpolated for you (but the property does need to conform to `VectorArithmetic`)
Keyframe animations are a very powerful tool to have in your toolbox. They're more complicated than regular SwiftUI animations but allow you to animate almost anything you can think of.
December 18, 2024 at 8:22 AM
Keyframe animations are a very powerful tool to have in your toolbox. They're more complicated than regular SwiftUI animations but allow you to animate almost anything you can think of.
Phase animators can help to work around the limitations of the regular SwiftUI animation system. They let you do animations that end up in the same state as the starting point.
December 17, 2024 at 11:31 AM
Phase animators can help to work around the limitations of the regular SwiftUI animation system. They let you do animations that end up in the same state as the starting point.
In many cases, adding a `.animation` or `withAnimation` might be all you need to have beautiful interruptible animations in SwiftUI.
December 16, 2024 at 7:54 AM
In many cases, adding a `.animation` or `withAnimation` might be all you need to have beautiful interruptible animations in SwiftUI.
Reposted by Chris Eidhof
I've spent the 6 months working on a new approach to shared data in Swift: Forked.
Main features:
- Git-like branching and merging for Swift structs
- Advanced merge algorithms (CRDTs)
- Macros to make structs mergeable
- Sync structs via CloudKit with <10 LOCs
appdecentral.com/2024/12/13/n...
Main features:
- Git-like branching and merging for Swift structs
- Advanced merge algorithms (CRDTs)
- Macros to make structs mergeable
- Sync structs via CloudKit with <10 LOCs
appdecentral.com/2024/12/13/n...
Now we’re all Forked!
Forked is a new Swift framework for working with shared data, on device, and across networks.
appdecentral.com
December 13, 2024 at 7:52 PM
I've spent the 6 months working on a new approach to shared data in Swift: Forked.
Main features:
- Git-like branching and merging for Swift structs
- Advanced merge algorithms (CRDTs)
- Macros to make structs mergeable
- Sync structs via CloudKit with <10 LOCs
appdecentral.com/2024/12/13/n...
Main features:
- Git-like branching and merging for Swift structs
- Advanced merge algorithms (CRDTs)
- Macros to make structs mergeable
- Sync structs via CloudKit with <10 LOCs
appdecentral.com/2024/12/13/n...
Today we recap a bunch of things we looked at in the last two weeks of short videos. It was a bit of a struggle to get this in at under one minute but I managed 😅
December 13, 2024 at 10:00 AM
Today we recap a bunch of things we looked at in the last two weeks of short videos. It was a bit of a struggle to get this in at under one minute but I managed 😅
Often it doesn't really matter whether you use an overlay or a ZStack, but if the views have different sizes and positions, it definitely does!
December 12, 2024 at 10:11 AM
Often it doesn't really matter whether you use an overlay or a ZStack, but if the views have different sizes and positions, it definitely does!
Explicit alignment guides are very helpful when aligning using two different alignment guides. In this example, we align the center of a badge to the top trailing edge of a button.
December 11, 2024 at 8:00 AM
Explicit alignment guides are very helpful when aligning using two different alignment guides. In this example, we align the center of a badge to the top trailing edge of a button.