Free giveaway: Win a ticket for iOSKonf'25. Learn more.
Free: Win a ticket for iOSKonf'25.
Give your simulator superpowers

RocketSim: An Essential Developer Tool
as recommended by Apple

A weekly Swift Blog on Xcode and iOS Development

See all

Recent Posts

Swift Concurrency Course: Modern Concurrency & Swift 6

A Swift Concurrency Course that helps you learn all the fundamentals of Swift Concurrency and migrating your projects smoothly to ...
/ ConcurrencySwift

Picker in SwiftUI explained with code examples

The picker control in SwiftUI allows you, as a developer, to create a UI element for users to select from ...
/ SwiftUI

What is Structured Concurrency?

When we talk about Swift Concurrency, we also often mention Structured Concurrency. It's a fundamental part of async/await in Swift ...
/ ConcurrencySwift

Swift Keywords

Do you know how to use each keyword in Swift?
Click on the keyword to learn more and explore code examples.

actor associatedtype async @autoclosure available await break catch class continue defer @discardableResult @dynamicCallable @dynamicMemberLookup enum @escaping fileprivate for @globalActor guard infix isolated lazy @MainActor nonisolated optional postfix @propertyWrapper private protocol required @resultBuilder rethrows sendable some struct subscript throw throws try typealias @unchecked @unknown unowned weak where while

Career Advice – Grow your career

Looking to grow your career in iOS development? With years of experience leading teams at WeTransfer and building SwiftLee into a go-to resource for over 140,000 developers monthly, I offer insights on everything from launching successful side projects to scaling app users. Whether you’re refining your Swift skills, building an online presence, or creating passive income with courses, I’m here to help you navigate your journey.

Ready to make your side project a success?

Tired of the 9-to-5 grind and endless meetings? Imagine turning your side project into a six-figure income and going fully independent—just like I did. Learn my proven steps to transform your passion into profit.

The Going Indie Podcast

Discover stories and strategies from creators who’ve turned side projects into thriving businesses. Ready to take the leap?

See all

Learn more about Swift

Swift Concurrency Course: Modern Concurrency & Swift 6

A Swift Concurrency Course that helps you learn all the fundamentals of Swift Concurrency and migrating your projects smoothly to ...
/ ConcurrencySwift

What is Structured Concurrency?

When we talk about Swift Concurrency, we also often mention Structured Concurrency. It's a fundamental part of async/await in Swift ...
/ ConcurrencySwift

iOS App Development: How to get started?

Learning about iOS app development and related software allows you to create an app for iPhones, iPads, Apple Watch, or ...
/ Swift

How do you stay current as a Swift developer?

Let me do the hard work and join 19,926 developers that stay up to date using my weekly newsletter:

See all

Learn SwiftUI

Picker in SwiftUI explained with code examples

The picker control in SwiftUI allows you, as a developer, to create a UI element for users to select from ...
/ SwiftUI

How to develop an app for iOS

You have a great app idea but you wonder: how to develop an app for iOS? Where do I even ...
/ SwiftUI

SwiftUI Lists: Present rows of data explained with code examples

SwiftUI Lists allow you, as a developer, to present rows of data. It's one of the most commonly used elements ...
/ SwiftUI

Build Apps Faster using RocketSim

Recommend by Apple as an “Essential Tool for Developers”, RocketSim helps thousands of engineers to save hours per week. Discover these articles and learn how you can leverage RocketSim to improve your workflow:

App Actions

App Actions Perform Menu

RocketSim Tools

See all

Combine all the things

@Published risks and usage explained with code examples

@Published is one of the property wrappers in SwiftUI that allows us to trigger a view redraw whenever changes occur ...
/ CombineSwiftUI

RunLoop.main vs DispatchQueue.main: The differences explained

RunLoop.main and DispatchQueue.main are often used as schedulers within Combine. During code reviews, I often encounter inconsistency in using one ...
/ Combine

PassthroughSubject vs. CurrentValueSubject explained

PassthroughSubject and CurrentValueSubject are two types from the Combine framework that conforms to the Subject protocol. Both are very similar ...
/ Combine

See all

Dive into Core Data

How to observe NSManagedObject changes in Core Data using Combine

Observing changes in Core Data NSManagedObject instances with Combine publishers can be a great solution to keep your user interface ...
/ CombineCore Data

Data validation on insertion, update, and deletion in Core Data

Data validation in apps is important to make sure we save data conforming to the business rules. A name should ...
/ Core Data

Derived Attributes to improve Core Data Fetch Performance

Derived attributes are available since iOS 13 and aim to improve fetch performance in many different scenarios. Although we have ...
/ Core Data

See all

Be an expert on Xcode

RocketSim 13.0: Builds Apps Faster

RocketSim is a developer tool that gives your Xcode Simulator extra functionalities to increase day-to-day development productivity. A floating window ...
/ Xcode

Inspect network traffic using the Xcode Simulator

Inspecting network traffic is an essential skill for app developers. Several tools allow you to monitor requests going in and ...
/ Xcode

Xcode Build Insights: Keep track of project compilation times

Xcode Build Insights lets you keep track of compilation times to ensure your project doesn't suddenly become slow to build ...
/ Xcode

See all

Get better at debugging

Network Link Conditioner: Simulating Slow Networking

The Network Link Conditioner allows you to test your apps under slow networking conditions on macOS and iOS. The tool ...
/ DebuggingOptimization

Memory consumption when loading UIImage from disk

Memory consumption can quickly increase if you load many images from the disk using UIImage. You'll generally load images from ...
/ DebuggingSwiftUI

Debugging SwiftUI views: what caused that change?

Debugging SwiftUI views is an essential skill when writing dynamic views with several redrawing triggers. Property wrappers like @State and ...
/ DebuggingSwiftUI

See all

Improve your workflow

Designing Apps: 5 Methods to improve your workflow

Designing apps can be challenging if you don't have a design background. Many of you who read my blog are ...
/ Workflow

Test-Driven Development (TDD) for bug fixes in Swift

Test-driven development (TDD) is a technique that requires you first to write a failing test before you start implementing a ...
/ Workflow

Third-party libraries acknowledgments using a Settings bundle

Third-party libraries help developers build apps faster but often come with a license. The MIT license is likely the most ...
/ Workflow

See all

Optimize yourself and improve

Network Link Conditioner: Simulating Slow Networking

The Network Link Conditioner allows you to test your apps under slow networking conditions on macOS and iOS. The tool ...
/ DebuggingOptimization

Contingent pricing for in-app subscriptions

Contingent pricing for in-app subscriptions creates a new way to retain and attract customers by providing discounted subscription prices to ...
/ Optimization

App onboarding funnel optimization to increase conversions

An app onboarding can be seen as a funnel full of steps toward the key action of your application. A ...
/ Optimization