Hi, I'm Sarun 👋 — an iOS developer.

On this blog I share my working processes, tip and tricks, tools, and problems I found along the way.

Get weekly updates on new posts


Why some Swift types only appear when you import two modules

Map, PhotosPicker, and WebView are not in SwiftUI. They live in cross-import overlays, modules that only show up when you import both halves. Here is what that means and how to spot one.


SwiftUI has a native WebView in iOS 26

iOS 26 adds a real WebView to SwiftUI, plus a WebPage class that gives you the title, the loading progress, and control over navigation. No more UIViewRepresentable.

Codable errors are finally readable in Swift 6.3

DecodingError and EncodingError now print a clean one-line summary with the coding path, instead of the wall of text we used to skim past.



SwiftUI: Explore the new declarative UI framework


More posts about SwiftUI

SwiftUI has a native WebView in iOS 26

iOS 26 adds a real WebView to SwiftUI, plus a WebPage class that gives you the title, the loading progress, and control over navigation. No more UIViewRepresentable.

Animating number changes in SwiftUI

iOS 17 bring a new trick to animate number in SwiftUI. Let's learn how to do it.

How to create custom view modifiers in SwiftUI

Learn how to create reuse styles using ViewModifier.

How to request users to review your app in SwiftUI

Learn how and when you should ask for a user's review.

More posts about SwiftUI or explore other topics

UIKit: Learn the best of both worlds


More posts about UIKit

How to request users to review your app in UIKit

Learn how and when you should ask for a user's review.

How to add a Toolbar in UINavigationController

Learn how easy it is to add a toolbar on a view controller in UIKit.

Built-in symbol animations in UIKit controls

In iOS 17, we can enable symbols animation in UIKit controls using the new property. Let's learn how to do it.

What is contentInset in a scroll view

Learn the importance of content inset.

More posts about UIKit or explore other topics

Swift: Learn every aspect of the language


More posts about Swift

Codable errors are finally readable in Swift 6.3

DecodingError and EncodingError now print a clean one-line summary with the coding path, instead of the wall of text we used to skim past.

Typed throws in Swift 6

Swift 6 lets a function declare exactly which error type it throws. Here is the syntax, what it does to catch blocks, and why untyped throws is still the right default.

Trailing commas beyond arrays in Swift 6.1

Swift 6.1 allows a trailing comma in parameter lists, tuples, generic parameters, capture lists, and more. A small change that makes diffs a lot cleaner.

How to use if and switch as expressions in Swift

Swift 5.9 lets an if or switch produce a value instead of just assigning one. It removes a var we never wanted, but the single-expression rule catches people out.

More posts about Swift or explore other topics

Xcode: Learn tips and tricks about the tool


More posts about Xcode

How to fix "libobjc.A.dylib is being read from process memory" error

If your app takes forever to run on a device and you get this error in the console log. I will share what works for me in this article.

How to fix "dyld: Library not loaded @rpath" error

You probably get this error when you try to add a third-party framework to your project. Let's learn one way to fix it.

Bookmark in Xcode 15

Xcode 15 brings one of the great features of Xcode, the ability to bookmark your code.

Access Images and Colors with Enum in Xcode 15

Xcode 15 can automatically create Swift symbols for your resources without any third party. Let's learn how to do it.

More posts about Xcode or explore other topics


  • Apps

    I got some apps in the App Store, you can check them out.

  • Books

    My books on iOS development, including Practical Sign in with Apple.

  • Gosh Darn SwiftUI

    SwiftUI cheat sheet