Axel Le Pennec

Axel Le Pennec

@alpennec.com

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

404 followers128 following775 posts

Removing the device from DeviceHub then adding a new one seems to have fixed this issue for now.

Axel Le Pennec@alpennec.com

I cannot screenshot or record screen using an iPhone Duo simulator (Xcode 27.2, iOS 27.1 & iOS 27.2). Restarting DeviceHub or Xcode doesn't fix it 😕 FB25338763

I cannot screenshot or record screen using an iPhone Duo simulator (Xcode 27.2, iOS 27.1 & iOS 27.2). Restarting DeviceHub or Xcode doesn't fix it 😕 FB25338763

Is there a way in Icon Composer to use the top-left corner of the app icon as the origin for the X and Y coordinates system? I mean, like in Figma or Sketch 😉 FB25335565

One workaround I found is to add rulers in Figma for the app icon and each individual shape, as shown in the attached video. It works, but it’s pretty tedious to set up…

As pointed out by others, running on an iPhone Duo simulator with iOS 27.1 works as expected (using Xcode 27.1 or 27.2). I hope Apple will soon provide a new 27.2 RC version (or a 27.3 beta) that fixes these iPhone Duo issues.

Axel Le Pennec@alpennec.com

I’m probably folding it wrong, but I can’t seem to get reservedRegions to display correctly on iPhone Duo simulator. Am I missing something, or is there a trick to getting this right?

Here’s how the App Store app shows iPhone Duo screenshots: 1. Landscape then portrait, it only shows one landscape (like a search banner). 2. Portrait then portrait, it shows both. 3. Portrait then landscape, it also shows both.

Axel Le Pennec@alpennec.com

iPhone Duo owners, can you share a screenshot of an App Store search result please? I'm curious to see how the App Store displays mixed portrait and landscape screenshots. Thank you!

I’m probably folding it wrong, but I can’t seem to get reservedRegions to display correctly on iPhone Duo simulator. Am I missing something, or is there a trick to getting this right?

With the iPhone Duo release, should we ditch custom onboarding in favor of a NavigationStack? System-provided containers handle control positioning correctly (vertical bar for example) but it seems we lose flexibility (fixed elements, transition, etc.). What's your take? 🤔

iPhone Duo owners, can you share a screenshot of an App Store search result please? I'm curious to see how the App Store displays mixed portrait and landscape screenshots. Thank you!

When presented in a sheet (iPhone & iPad), a NavigationStack's navigationBar behaves strangely when transitioning from a content with no title to a content with a title. It appears then move downwards to its correct position. Is there a way to fix that in SwiftUI? FB25308939

For those still using Xcode and StoreKit testing, I noticed a regression with iOS 27 where the decimal product price value is wrong and only the integer part is returned. For example, 69.99 returns 69. This makes price and percent calculations wrong. Sandbox is ok. FB25244911

Axel Le Pennec reposted

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...

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...

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...

View full thread

Axel Le Pennec reposted

Replying to @alpennec.com

Ah, obviously it's working fine on iOS 17 and iOS 18 🙈 And the issue appeared with iOS 26. So another regression it seems 🫤

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...

It's back on iOS 27 😞 FB23500349

Axel Le Pennec@alpennec.com

Sigh 😔 On iOS 26, the touch gestures from a sheet are propagated below it and play the liquid glass effect on the controls 🫤 Luckily, it doesn’t trigger the button actions… Is there a fix for that?

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 🫡

Axel Le Pennec@alpennec.com

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...

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...

Axel Le Pennec@alpennec.com

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).

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?

I tried with the attached code. Wdyt? It seems the available choices come from the suggestedEntities if implemented, then from allEntities (EnumerableEntityQuery). If suggestedEntities, there doesn't seem to be a way to choose something else. And allEntities could mean a lot!

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).

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 🤑

Simulator regression summary 😭 - iOS 18.6: ✅️ - iOS 26.3.1: ✅️ - iOS 26.4.1: ✅️ Shortcuts & intents correctly run but only one suggestion is used to create the shortcuts❌️ - iOS 26.5: ❌️ No shortcuts created. Not possible to run shortcuts or intents. - iOS 27: ❌️ Same as 26.5.

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

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?

I tried with the attached code. Wdyt? It seems the available choices come from the suggestedEntities if implemented, then from allEntities (EnumerableEntityQuery). If suggestedEntities, there doesn't seem to be a way to choose something else. And allEntities could mean a lot!

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.

Axel Le Pennec@alpennec.com

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...

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...

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.

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!

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

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.

Axel Le Pennec@alpennec.com

But some people on X pointed that Apple doesn’t respect this guideline. Or maybe a “Close” behaves differently than a “Cancel”? 🤔 What’s Apple stake on this @mikestern.bsky.social? Could you please specify in the Apple HIG if this is valid for both Close and Cancel? Thanks! x.com/vistar941/st...

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.

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

Axel Le Pennec@alpennec.com

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...