Sign in

Axel Le Pennec

@alpennec.com
403 followers 128 following 753 posts

Indie app developer (Apple platforms) from Paris, France 🇫🇷

PostsRepliesMedia
Reposted by Axel Le Pennec
Axel Le Pennec @alpennec.com · 14/07/2026
In #SwiftUI, how to have a content always visible at the bottom of the screen (like the Apple Music mini player or an onboarding "next" button)? safeAreaInset/safeAreaBar modifier on a NavigationStack does not update the stack content inset. FB23732628 github.com/feedback-ass...
201
Axel Le Pennec @alpennec.com · 14/07/2026
In #SwiftUI, how to have a content always visible at the bottom of the screen (like the Apple Music mini player or an onboarding "next" button)? safeAreaInset/safeAreaBar modifier on a NavigationStack does not update the stack content inset. FB23732628 github.com/feedback-ass...
201
Reposted by Axel Le Pennec
Axel Le Pennec @alpennec.com · 10/07/2026
Ah, obviously it's working fine on iOS 17 and iOS 18 🙈 And the issue appeared with iOS 26. So another regression it seems 🫤
111
Axel Le Pennec @alpennec.com · 09/07/2026
Is there a way to avoid the #SwiftUI List jumping when using a swipeAction that inserts/removes the same item in the List ("Favorites" section) while keeping the original item in the List? The animation is smooth if I perform the same action when tapping. Gist: gist.github.com/alpennec/f9d...
320
Axel Le Pennec @alpennec.com · 30/06/2026
It's back on iOS 27 😞 FB23500349
020
Axel Le Pennec @alpennec.com · 30/06/2026
An Apple Developer Tools Engineer confirmed we can't use a string catalog for this use case and we must use a .stringsdict file instead 🫡
140
Axel Le Pennec @alpennec.com · 28/06/2026
The solution is to translate the TypeDisplayRepresentation name in a .stringsdict file. For a DeleteIntent, it seems this is used instead of the @.Parameter title. See the "Accelerating app interactions with App Intents" sample code from Apple: developer.apple.com/documentatio...
010
Axel Le Pennec @alpennec.com · 28/06/2026
When conforming to DeleteIntent, is there a way to show the plural form of the entity ("Books" vs "Book") in the Shortcuts app? DeleteIntent requires an AppEntity array, but it ignores the parameter title and instead uses the entity typeDisplayRepresentation (which is singular).
220
Axel Le Pennec @alpennec.com · 24/06/2026
I don’t get why I need to connect external coding agents (OpenAI Codex, Claude Agent, etc.) in Xcode instead of using Apple Intelligence with Private Cloud Compute 🤔 Turning your $99/year Apple Developer Program fee into a monthly subscription could be a real cash machine 🤑
200
Axel Le Pennec @alpennec.com · 24/06/2026
The CSSearchableItem(appEntity:) method is marked as iOS 18+ but my app crashes when it launches on iOS 18+, even if I wrap the lines in #if available(iOS 26, *). It works fine on iOS 26+. Any idea if that can be solved and how? Documentation: developer.apple.com/documentatio... cc @mgorbach.name
000
Axel Le Pennec @alpennec.com · 24/06/2026
Apple, can you please explain why running Shortcuts & App Intents on an iOS 18 simulator works fine but fails miserably on iOS 26.4+ and iOS 27? Can you please fix that for this release cycle? Feedback: FB23342158 Project is a sample code from Apple: developer.apple.com/documentatio...
130
Axel Le Pennec @alpennec.com · 24/06/2026
We can't drag and drop files to DeviceHub as we used to be able to using Simulator? It was quite handy to import files into apps (onOpenURL) 😒 FB: FB23368633
020
Axel Le Pennec @alpennec.com · 23/06/2026
App Intents question (again 😅): I notice that some "Find" intents allow to choose specific related items when filtering (e.g. an album when searching for a photo or an author when searching for books) instead of a textfield. How's that done? What drive the available choices?
210
Axel Le Pennec @alpennec.com · 22/06/2026
Fixed 😮‍💨 I had to change the extension minimum deployment from iOS 26 to iOS 18.6 (it was not set automatically when I added the widget extension). But then I had other issues about invalid widget kinds that were not in the scheme's Environment Variables... Cleaning solved it.
000
Axel Le Pennec @alpennec.com · 22/06/2026
I'm trying to run the basic widgets extension template from Xcode on a physical device (iOS 18.7.9) but it fails. I tried rebooting my device twice. I tried using Xcode 26.6 too, same issue. I don't know what to do to get it work...
000
Axel Le Pennec @alpennec.com · 22/06/2026
Why can I only search for an indexed item in Spotlight using the title or the displayName on iOS but I can search by any indexed attribute on macOS? 🤔 Is this a bug or expected? I also posted on Apple developers forums with a feedback (FB23317556): developer.apple.com/forums/threa...
010
Axel Le Pennec @alpennec.com · 18/06/2026
With “Find…” actions in Apple #Shortcuts, is there a way to specify only the date part (not the time) for a filter? I now I can omit the time part in my app’s queries but it’s not very intuitive for a user in my opinion. Asking for a friend implementing #AppIntents.
000
Axel Le Pennec @alpennec.com · 17/06/2026
I'm looking for a sample #SwiftUI project using the AppIntents framework to read/write data from/to #CoreData (and/or #SwiftData). Do I use the AppDependencyManager thing? A database singleton? Do I use the main thread? A background thread/context? Any idea? Thank you!
120
Axel Le Pennec @alpennec.com · 14/05/2026
Is there a way in #SwiftUI to detect when a sheet is being dismissed by a user to present a confirmationDialog in case of unsaved changes, as recommended by Apple HIG about Sheets? In UIKit, we can use the presentationControllerDidAttemptToDismiss method. Feebdack: FB22777840
120
Axel Le Pennec @alpennec.com · 14/05/2026
So it seems if there is a confirmation action associated with the cancellation action, we should put the cancellation at the leading edge (what iOS has been doing for ages). But if it’s just a close button in the toolbar, we should put it at the trailing edge, like what Apple seems to be doing.
260
Axel Le Pennec @alpennec.com · 13/05/2026
Apple updated its Human Interface Guidelines for Sheets on March 24, 2026 to add guidance for button placement in the toolbar. "In iOS & iPadOS, the Cancel button belongs on the leading edge of the top toolbar." Time to update my apps 🙂 Documentation: developer.apple.com/design/human...
3123
Axel Le Pennec @alpennec.com · 13/05/2026
@mikestern.bsky.social hey Mike. Is there a way to see all changes made to Apple Human Interface Guidelines instead of having to check each page to see the log? Thanks!
030
Axel Le Pennec @alpennec.com · 06/05/2026
Is there a local LLM I can run on my Mac to translate my app’s string catalogs? #xcode #iosdev
121
Axel Le Pennec @alpennec.com · 23/04/2026
Flo found an alternative to the free trial toggle on its paywall that seems compliant with Guideline 3.1.2 😮 It replaced the toggle by a “Not sure yet? Start a free trial” button that selects the offer with the free trial while presenting a sheet with all subscription options.
000
Axel Le Pennec @alpennec.com · 09/04/2026
The solution is to use .compositingGroup() on the SwiftUI Menu 🎉 Thanks to @saschagordner.de who pointed me to a StackOverflow answer about the exact same issue: stackoverflow.com/a/79884587 Documentation about compositingGroup: shorturl.at/btdM6
290
Axel Le Pennec @alpennec.com · 09/04/2026
Any idea how to fix this Liquid Glass visual bug? In my app, I have a #SwiftUI Menu that presents an overlay over the whole view. But the Menu stays visible for a short period of time until it goes below the overlay 🫤 Works fine on iOS 17/18. Code: gist.github.com/alpennec/31e...
120
Axel Le Pennec @alpennec.com · 25/03/2026
New app analytics are finally live in App Store Connect! Time to explore 🥳 Next: dark mode? 🌚
051
Axel Le Pennec @alpennec.com · 25/02/2026
Expected behaviour, not a regression nor a bug 🫡 Thanks Apple and the SwiftUI team for being reactive!
010
Axel Le Pennec @alpennec.com · 24/02/2026
Dear SwiftUI, can you please fix the regressions you introduced on iOS 26? FB22043999 In my View, I read the dismiss value from the Environment. Whenever a Menu or Picker is opened, the View body is re evaluated 🤷🏻‍♂️ This unexpected behaviour doesn't happen on iOS 18.5 🙃
040
Axel Le Pennec @alpennec.com · 23/02/2026
Lately, I’ve often had to approve transactions in my banking app when making in-app purchases (even free trial). It asks for approval even if I approved another purchase just a few minutes earlier. I wonder whether this added friction hurts conversion rates 🫤 Have you experienced this as well?
000
Axel Le Pennec @alpennec.com · 22/02/2026
TIL SwiftUI has a pixelLength environment value. It's a shortcut to dividing 1 by the displayScale environment value as I did before 🙃 Documentation: developer.apple.com/documentatio...
040
Axel Le Pennec @alpennec.com · 22/02/2026
I use .frame(in: .scrollView) to read a scroll view offset and show/hide a title. But I observe a jump in the offset if the content extends below the safe area (when there's no View above). Does adding the title change the frame I read? Should it? Code: gist.github.com/alpennec/388...
100
Axel Le Pennec @alpennec.com · 28/01/2026
I often find myself wanting to log the same message when previewing my app in the Xcode canvas and when running it on a Simulator or a physical device. How would you handle using print() for preview and the unified logging system (Logger) at the same time without repeating?
000
Axel Le Pennec @alpennec.com · 15/01/2026
Who A/B tested if localized prices actually bring more money or not at the end? I know it depends on the app but curious if it's worth checking. What test methodology have you used and what volume of data required to conclude? Do @revenuecat.com or @superwall.bsky.social have some insights? 👀
110
Axel Le Pennec @alpennec.com · 07/01/2026
After the Swift SDK for Android, Swift in the browser with ElementaryUI 🤩 The best time to learn Swift was eleven years ago. The second best is now 😉 elementary.codes
070
Axel Le Pennec @alpennec.com · 19/12/2025
Have you experienced this issue with your app accentColor not being respected, even without using Mixpanel? If I just and only access UIScreen.main.bounds in my App init, the accentColor is ignored. This page on SO gives other reasons like modifying UIAppearance: stackoverflow.com/questions/71...
stackoverflow.com
Wrong AccentColor showing, color ignored
I added a non-blue color named AccentColor to my iOS app’s assets catalogue. When running my app the tint color is default blue. The “Global Accent Color Name” in build settings is correctly set to “
000
Axel Le Pennec @alpennec.com · 18/12/2025
TLDR about performances with Xcode Previews ⬇️ When you update: - an “inline” value: 🚀 - a stored property: 🐌 - a computed property: 🚀 So if you centralize your design constants at the top of a View for example, computed variables are the way to go 👌🏻
121
Axel Le Pennec @alpennec.com · 18/12/2025
I dug a bit more in this issue where my accentColor is ignored by my SwiftUI apps when I initialize Mixpanel in my App init (early but required). I noticed it's due to the SDK accessing UIScreen.main.bounds.size... My fix is to comment this line ⬇️ More: github.com/mixpanel/mix...
000
Axel Le Pennec @alpennec.com · 18/12/2025
Confirmed by Apple 🫡
0111
Axel Le Pennec @alpennec.com · 16/12/2025
One tip to speed up your SwiftUI previews 🤩 I wanted to centralize constants like opacity, spacing, or sizes used by my View to speed up prototyping. Stored properties: slow 🐌 as Xcode recompiles the file every time I tweak a value. Computed properties: instant updates 🏎️
2101
Axel Le Pennec @alpennec.com · 15/12/2025
SwiftUI AnyShapeStyle, yay or nay? 🤔 I've been using two foregroundStyle for my shaped view backgrounds: one with a Color (often a UIKit one: secondarySystemBackground) + another one with a HierarchicalShapeStyle. But we can get the same with AnyShapeStyle + BackgroundStyle.
020
Axel Le Pennec @alpennec.com · 09/12/2025
Thanks Craig! 😉
070
Axel Le Pennec @alpennec.com · 07/12/2025
Apple, don't be surprised if developers don't file feedback anymore in Feedback Assistant. I take the time to file detailed feedback with steps, device details + screen recording to help improve things for everyone. Please, don’t reply to ask for things I’ve already provided...
040
Axel Le Pennec @alpennec.com · 16/11/2025
A solution suggested by @fatbobman.com is to "duplicate" the top/bottom content: one hidden in the safeAreaInset of each page + one visible/interactive in an overlay of the parent/container View (ZStack). Of course it depends on the onboarding design. Gist: gist.github.com/alpennec/2a3...
010
Axel Le Pennec @alpennec.com · 16/11/2025
I'm building a custom #SwiftUI navigation flow for an app onboarding but I'm having layout issues when moving from steps with/without safeAreaInset content to steps without/with safeAreaInset content. See blue frame. Any idea how to fix this? Gist: gist.github.com/alpennec/e9c... @fatbobman.com
100
Axel Le Pennec @alpennec.com · 15/11/2025
SwiftUI has been released more than 6 years ago but you still have to use UIDatePicker.appearance() to set a minuteInterval other than the default 1 minute to a date picker 🤦🏻‍♂️ Maybe mesh gradients are more used 🤷🏻‍♂️
060
Axel Le Pennec @alpennec.com · 14/11/2025
TIL that we can create custom attributes for AttributedString 🤩 It's very useful for styling text while respecting localization, especially when the styled segments change per language. I specify each attributed segment directly in my string catalog translation, and voilà! ✨
010
Axel Le Pennec @alpennec.com · 02/11/2025
Oops!…I Did It Again 😬 I renewed my Apple Developer Program membership! Here’s to another year of learning, building, shipping, failing, sharing, succeeding and doing it all over again. Let’s go! 🤪
040
Axel Le Pennec @alpennec.com · 31/10/2025
You have to run the app on a physical device. If you’re running it on a simulator, the option is disabled in Xcode. And it doesn’t seem to be available for macOS apps.
000
Axel Le Pennec @alpennec.com · 30/10/2025
TIL the @.Observable macro doesn't trigger updates for equatable properties starting with iOS 26. But for prior releases, we have to manually check equality for the object properties to improve our app performances. Thank you for the tip Steven!
1113