Axel Le Pennec's Avatar

Axel Le Pennec

@alpennec.com

Indie app developer (Apple platforms) from Paris, France πŸ‡«πŸ‡·

381
Followers
127
Following
682
Posts
18.11.2024
Joined
Posts Following

Latest posts by Axel Le Pennec @alpennec.com

Expected behaviour, not a regression nor a bug 🫑

Thanks Apple and the SwiftUI team for being reactive!

25.02.2026 15:10 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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 πŸ™ƒ

24.02.2026 17:52 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 1
Post image Post image

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?

23.02.2026 07:23 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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

22.02.2026 14:36 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

By observing the top content inset of the scroll view, I notice it gets updated from 0 to top safeAreaInset value when the view appears, and then when I reach the threshold that adds the title view above (which pushes the scroll view down and stop extending below safe area).

22.02.2026 14:18 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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

22.02.2026 13:42 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Also, I’ve the feeling people don’t care anymore about the technical aspects of things now that they heavily rely on AI to write the code and do the work for them. In my experience, asking a technical question is more and more like speaking into the void nowadays.

16.02.2026 18:43 πŸ‘ 3 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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?

28.01.2026 11:56 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

You can still preview the profile.

20.01.2026 05:56 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

x.com/nickgdwn

17.01.2026 11:39 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Conversion rate of what? Trial start or first dollar made by a customer (direct sale or trial conversion)?

Interesting approach. Because my current test has overlap between countries where prices between localized and not are more or less the same (tier 1). So this pollute the results for sure!

15.01.2026 21:42 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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? πŸ‘€

15.01.2026 20:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Post image

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

07.01.2026 19:44 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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

19.12.2025 04:32 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

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 πŸ‘ŒπŸ»

18.12.2025 18:36 πŸ‘ 2 πŸ” 1 πŸ’¬ 1 πŸ“Œ 0

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

18.12.2025 12:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 1

Confirmed by Apple 🫑

18.12.2025 09:03 πŸ‘ 11 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1

If there are some Apple engineers around: FB21355562

16.12.2025 16:35 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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 🏎️

16.12.2025 13:19 πŸ‘ 10 πŸ” 1 πŸ’¬ 2 πŸ“Œ 1
Post image

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.

15.12.2025 08:36 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks Craig! πŸ˜‰

09.12.2025 08:24 πŸ‘ 7 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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

07.12.2025 10:40 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 1

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

16.11.2025 17:34 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks for the help!

16.11.2025 14:01 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Video thumbnail

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

16.11.2025 11:12 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1
Post image

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 πŸ€·πŸ»β€β™‚οΈ

15.11.2025 08:38 πŸ‘ 5 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image Post image

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à! ✨

14.11.2025 10:51 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Always like that at the start of a PPO from my experience.

14.11.2025 05:15 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

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! πŸ€ͺ

02.11.2025 08:00 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Ah ok. You’re referring to that. I’m still on 18.7 πŸ˜‚

31.10.2025 19:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0