Sign in

Keith Harrison

@useyourloaf.com
1.4K followers 79 following 55 posts

I write about iOS development at useyourloaf.com.

PostsRepliesMedia
Keith Harrison @useyourloaf.com · 22/09/2026
Both Interface Builder bugs I reported with Xcode 26 are now fixed. The canvas rotation issue was fixed in Xcode 27.0 and now the incorrect safe area bug has been fixed in 27.2. Well done Xcode Interface Builder team! #iOSDev #Xcode
042
Reposted by Keith Harrison
Rachel Andrew @rachelandrew.co.uk · 01/09/2026
Two a11y engineering roles (one of them early career!) at Apple in London in the team my daughter manages. These sound like excellent roles to share with UK a11y folks. jobs.apple.com/en-gb/detail... jobs.apple.com/en-gb/detail...
jobs.apple.com
Accessibility Engineer (Web Accessibility SME) - Jobs at Apple (UK)
Apply for a Accessibility Engineer (Web Accessibility SME) job at Apple. Read about the role and find out if it’s right for you.
26337
Keith Harrison @useyourloaf.com · 19/08/2026
@jeffjarvis.bsky.social arrived today (UK)!
Book cover: HotType the magnificent machine that gave birth to mass media and drove Mark Twain mad. Jeff Jarvis. Bloomsbury
100
Keith Harrison @useyourloaf.com · 30/07/2026
Using Icon Composer for alternate app icons is working for me in Xcode 27 (I could never get it to work with Xcode 26). useyourloaf.com/blog/adding-... #iosdev #Xcode
useyourloaf.com
Adding Icon Composer icons to Xcode
How do you use Icon Composer to add App Icons to an Xcode project?
020
Keith Harrison @useyourloaf.com · 08/07/2026
Preordered. Looking forward to reading this!
100
Keith Harrison @useyourloaf.com · 25/06/2026
Glad I decided to replace my iPad Pro last week. Price is up £200 this week
010
Keith Harrison @useyourloaf.com · 16/06/2026
WWDC 2026 viewing guide #WWDC useyourloaf.com/blog/wwdc-20...
useyourloaf.com
WWDC 2026 Viewing Guide
My WWDC 2026 viewing guide to help you plan the sessions you want to watch.
041
Keith Harrison @useyourloaf.com · 16/06/2026
DeviceHub didn't show any Simulators or let me create new ones until I killed the CoreDeviceService processes as described in this forum thread #Xcode27 developer.apple.com/forums/threa...
developer.apple.com
Security Verification
Security verification page to protect against malicious bots.
011
Keith Harrison @useyourloaf.com · 11/06/2026
How many years has Apple been telling developers to stop making layout decisions based on device type or orientation? "This conceptual shift was introduced in iOS 8" developer.apple.com/videos/play/... #WWDC
developer.apple.com
Modernize your UIKit app - WWDC26 - Videos - Apple Developer
Discover the latest updates to UIKit. Learn how to update your iPhone app layouts to work great when resized with iPhone Mirroring and on...
061
Reposted by Keith Harrison
Matt Massicotte @massicotte.org · 17/12/2025
After a number of truly awful attempts, I have a post about "Non-Sendable First Design" that I think I can live with. I like this approach and I think you might like it too. It's simple, flexible, and most importantly, it looks "normal". www.massicotte.org/blog/non-sen...
massicotte.org
Non-Sendable First Design
The easiest way to design concurrent systems in Swift was hiding in plain sight.
1112
Keith Harrison @useyourloaf.com · 04/09/2025
Treating Warnings as Errors in Swift Packages #swiftlang useyourloaf.com/blog/treatin...
useyourloaf.com
Treating Warnings As Errors In Swift Packages
In Swift 6.2, Swift Packages give us control over which compiler warnings to treat as errors.
042
Reposted by Keith Harrison
Lukas Petr @luksape.bsky.social · 31/08/2025
🚨 PSA for all of you updating your apps for iOS 26: When you build using Xcode 26, the large navigation title gets broken (no left padding) when running on iOS 18. 🔗 Link to a fix below.
A screenshot of iOS 18 simulator, showing broken large navigation title layout.
381
Reposted by Keith Harrison
Matt Massicotte @massicotte.org · 31/08/2025
Anyone hit problems enabling approachable concurrency (or flags in its grouping) aside from the migration step required for NonisolatedNonsendingByDefault? Not talking about default isolation here. I haven't encountered any anywhere and I'm curious. Seems like it is going quite smooth so far.
131
Keith Harrison @useyourloaf.com · 21/08/2025
Agreed, it does feel clumsy
010
Keith Harrison @useyourloaf.com · 21/08/2025
Swift Raw Identifiers #iOSDev #swiftlang useyourloaf.com/blog/swift-r...
useyourloaf.com
Swift Raw Identifiers
Swift 6.2 adds raw identifiers to the language.
121
Keith Harrison @useyourloaf.com · 07/08/2025
thanks, I’ll take a look. I’ve used that approach in the past (see useyourloaf.com/blog/scenest...) not sure why I’m not doing it here
useyourloaf.com
SceneStorage For Custom Types
How do you use the @AppStorage and @SceneStorage property wrappers with your own custom types?
110
Keith Harrison @useyourloaf.com · 06/08/2025
When Observable replaced ObservableObject in iOS 17 it was missing a way to stream changes. That was fixed in iOS 26 (swift 6.2). #iosdev #swiftui useyourloaf.com/blog/swift-o...
useyourloaf.com
Swift Observations AsyncSequence for State Changes
Swift 6.2 introduces a new Observations type to stream state changes from an Observable type.
193
Keith Harrison @useyourloaf.com · 26/06/2025
that’s a good point, not sure it’s possible but would be nice to have as a fallback
010
Keith Harrison @useyourloaf.com · 26/06/2025
Yes, I had the same problem, the WWDC video skips over what you’re supposed to do. In theory, the icon is backwards compatible so you only get the glass effect on iOS 26. In practice, seems there are some rendering issues on older versions.
110
Keith Harrison @useyourloaf.com · 26/06/2025
I found a workaround to the problem with Icon Composer not working for alternate app icons. Manually adding keys to the target's Info.plist seems to fix it for now. Seems to need separate keys for the ~ipad variant. Hopefully Apple fixes this soon. #Xcode useyourloaf.com/blog/adding-...
useyourloaf.com
Adding Icon Composer icons to Xcode
How do you use Icon Composer to add App Icons to an Xcode project?
010
Keith Harrison @useyourloaf.com · 26/06/2025
Here's what worked for me in the end after comparing to what Xcode generates for app icons in the asset catalog. The iPad variant seems to be necessary for it to work there. Hopefully Apple fixes Xcode in a future beta,
Info.plist with CFBundleIcons~iPad and CFBundleIcons dictionaries listing CFBundleAlternateIcons
010
Keith Harrison @useyourloaf.com · 25/06/2025
Thanks. One difference I can see is that I don't have the CFBundleAlternateIcons key listed in the Info.plist file. (I'm also using a SwiftUI app life-cycle but not sure that's relevant). Will play some more. Thanks again!
010
Keith Harrison @useyourloaf.com · 25/06/2025
Not working for me in beta 2
Asset catalog compiler - options. Alternate App Icon Sets: Applcon-purple. Include All App Icon Assets: Yes. Primary App Icon Set Name: AppIcon-primary
100
Keith Harrison @useyourloaf.com · 24/06/2025
Interesting, will have another look. To be clear you didn’t have to add the icons to the asset catalog?
100
Keith Harrison @useyourloaf.com · 20/06/2025
Did anybody get Icon Composer .icon files to work for alternate app icons? #WWDC25 #Xcode
320
Keith Harrison @useyourloaf.com · 14/05/2025
How do you create a SwiftUI picker that works with optional selection so that not picking a value is possible? #iosdev #swiftui useyourloaf.com/blog/swiftui...
useyourloaf.com
SwiftUI Picker With Optional Selection
Creating a SwiftUI picker that works with optional selection.
000
Keith Harrison @useyourloaf.com · 09/05/2025
How do you write SwiftData predicates to query for parent relationships? #iOSDev #SwiftData #SwiftUI useyourloaf.com/blog/swiftda...
useyourloaf.com
SwiftData Predicates For Parent Relationships
How do you write SwiftData predicates to query for parent relationships.
030
Reposted by Keith Harrison
Jeff Johnson @lapcatsoftware.bsky.social · 19/04/2025
UIApplication delegate deprecation coming in iOS 19 SDK lapcatsoftware.com/articles/202...
lapcatsoftware.com
UIApplication delegate deprecation coming in iOS 19 SDK
041
Keith Harrison @useyourloaf.com · 11/04/2025
My notes on the surprising (to me) scope of SwiftUI keyboard shortcuts #SwiftUI #iOSDev useyourloaf.com/blog/swiftui...
useyourloaf.com
SwiftUI Keyboard Shortcut Scope
A SwiftUI keyboard shortcut remains active as long as the control it's attached to is still in the view hierarchy, even when not onscreen.
030
Keith Harrison @useyourloaf.com · 02/04/2025
How do you change the accessibility language used by VoiceOver with SwiftUI? #SwiftUI #iOSDev useyourloaf.com/blog/swiftui...
useyourloaf.com
SwiftUI Accessibility Language
How do you change the accessibility language used by VoiceOver with SwiftUI?
020
Keith Harrison @useyourloaf.com · 26/03/2025
Changing the default behaviour of a scroll view to center content only when it’s smaller than the scroll view container #SwiftUI #iOSDev useyourloaf.com/blog/swiftui...
useyourloaf.com
SwiftUI Default Scroll Anchor
Changing the default behaviour of a scroll view to center content only when it's smaller than the scroll view container.
000
Keith Harrison @useyourloaf.com · 25/03/2025
Is there no way to set the accessibility language for a SwiftUI view? UIKit has the accessibility language property but there’s no equivalent in SwiftUI. I’ve seen people using AttributedString with the .accessibilitySpeechLanguage attribute but I can’t get it to work. #SwiftUI #iOSDev
000
Keith Harrison @useyourloaf.com · 13/03/2025
Swift Testing completion handlers #SwiftLang #iosdev useyourloaf.com/blog/swift-t...
useyourloaf.com
Swift Testing Completion Handlers
How do you test completion handlers with Swift Testing.
041
Keith Harrison @useyourloaf.com · 13/02/2025
Provisional authorzation to send local user notifications. A feature old enough (iOS 12) for me to forget it exists. #iOSDev useyourloaf.com/blog/provisi...
useyourloaf.com
Provisional Authorization of User Notificatons
Requesting provisional authorization to send local user notifications.
020
Keith Harrison @useyourloaf.com · 07/02/2025
Yes, I've seen that. Very frustrating. Hope Apple fixes that soon. I'll add a note to the post. Thanks.
000
Keith Harrison @useyourloaf.com · 07/02/2025
Thanks for the reminder, that's much easier when you only need a fill variant. I'll add it to the post.
000
Keith Harrison @useyourloaf.com · 29/01/2025
How do you change the image a SwiftUI button shows when pressed? #SwiftUI #iOSDev useyourloaf.com/blog/swiftui...
useyourloaf.com
SwiftUI Button Image When Pressed
How do you change the image a SwiftUI button shows while the user is pressing the button?
210
Keith Harrison @useyourloaf.com · 23/01/2025
When the user chooses the reduce motion accessibility setting you should avoid large animations with objects that fly in/out of the screen #iOSDev #SwiftUI useyourloaf.com/blog/reducin...
useyourloaf.com
Reducing Motion of Animations
Apply the reduce animation setting to your SwiftUI animations.
050
Keith Harrison @useyourloaf.com · 11/12/2024
Xcode also warns about the reverse error, a parameter in the method declaration that's not documented
Yellow Xcode warning Parameter 'bundle' is missing documentation with option to fix by adding bundle
020
Keith Harrison @useyourloaf.com · 11/12/2024
I like how building DocC with Xcode 16 now warns about documented parameters that don't exist in the method declaration #Xcode #iOSDev
Yellow Xcode warning Parameter 'id' not found in initializer declaration with option to fix by removing id parameter
140
Keith Harrison @useyourloaf.com · 10/12/2024
Migrating from XCTest to Swift Testing #iOSDev #SwiftLang useyourloaf.com/blog/migrati...
useyourloaf.com
Migrating XCTest to Swift Testing
A quick guide to migrating XCTest unit test to Swift Testing.
0132
Reposted by Keith Harrison
Matt Massicotte @massicotte.org · 30/11/2024
Ok, it's time for another one of these "Swift concurrency step-by-step" posts. It explores working with types that are not Sendable. All based around reading a model from some data store. www.massicotte.org/step-by-step...
massicotte.org
Concurrency Step-by-Step: Reading from Storage
Not too long ago, I was re-reading an “introductory” post I wrote. Honestly, I could barely make it though. I guess a big part of that is that my own defintion of “introduction” when it comes to concu...
79423
Reposted by Keith Harrison
Kevin Marks @kevinmarks.com · 28/11/2024
The Department of Transport has a survey on how to integrate better. Tell them what you want (I want cycleways that connect to each other that are safe for children to use, and trains with a cadence high enough you don't need to use a timetable, like I had in London) www.smartsurvey.co.uk/s/PG2JMU/
smartsurvey.co.uk
Integrated National Transport Strategy: a call for ideas
Please take the time to complete our survey. Your feedback is important.
184
Keith Harrison @useyourloaf.com · 27/11/2024
Plotting functions with SwiftUI charts useyourloaf.com/blog/swiftui... #iOSDev #SwiftUI
useyourloaf.com
SwiftUI Charts Plotting Functions
In iOS 18 SwiftUI charts can plot functions.
050
Keith Harrison @useyourloaf.com · 15/11/2024
Automatic Trait Tracking in iOS 18 #UIKit #iOSdev useyourloaf.com/blog/automat...
useyourloaf.com
Automatic Trait Tracking
UIKit automatically tracks trait changes starting in iOS 18.
040
Reposted by Keith Harrison
Matt Massicotte @massicotte.org · 11/11/2024
Ok let’s try something! For my new bluesky friends, I’m gonna spent ~ the whole day tomorrow answering Swift concurrency questions here. Do your worst! #SwiftLang
175015
Keith Harrison @useyourloaf.com · 08/11/2024
I hit the issue today with awakeFromNib not being isolated to the main actor. Luckily mattiem has me covered: massicotte.org/awakefromnib #Iosdev #SwiftLang
massicotte.org
What on earth is going on with awakeFromNib?
When I first got into Cocoa development, Interface Builder was a big deal. I used it pretty extensively until sometime around the macOS 10.7 era, when I began experimenting with programmatically-defin...
000
Keith Harrison @useyourloaf.com · 29/10/2024
I’m pretty sure this is the Swift compiler telling me I need to upgrade my M1 mac mini? #SwiftLang
Swift source code for a width calculation showing the Xcode error: "The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"
020
Keith Harrison @useyourloaf.com · 26/10/2024
same, I ended up using Safari for now
000
Keith Harrison @useyourloaf.com · 24/09/2024
Swift 6 deprecates UIApplicationMain, replace it with main to silence the error #iOSDev #SwiftLang
UIKit app delegate annotated with @UIApplicationMain. Xcode show red error message, uiapplicationmain is deprecatedUIKit app delegate annotated with main
171