Advertisement
What will you ship?
Shipaton starts August 1.
Build a mobile app, publish it, and enter it for a chance to win.
Any idea is welcome, as long as you actually ship it.
Blog Articles
-
June 2026
- 18 Jun 2026 What’s new in SwiftUI (2-minute recap) 18 Jun 2026
- 17 Jun 2026 What’s new in Swift (2-minute recap) 17 Jun 2026
-
April 2026
- 12 Apr 2026 You don't (always) need the SF Symbols app 12 Apr 2026
-
December 2025
- 21 Dec 2025 Swift 6.2 lets you write better test names 21 Dec 2025
-
November 2025
- 25 Nov 2025 The modifier .task() has a hidden feature 25 Nov 2025
- 18 Nov 2025 Providing a default value in a String interpolation 18 Nov 2025
-
October 2025
- 20 Oct 2025 Don't make this mistake with a TaskGroup 20 Oct 2025
- 13 Oct 2025 Why a custom ViewModifier is often useless 13 Oct 2025
-
September 2025
- 23 Sept 2025 How to hide a view in a screenshot 23 Sept 2025
- 15 Sept 2025 How to disable Liquid Glass 15 Sept 2025
-
July 2025
- 21 Jul 2025 ChatGPT in Xcode 26: there’s a hidden prompt! 21 Jul 2025
- 7 Jul 2025 Vibe coding in Xcode 26: is it good? 7 Jul 2025
-
June 2025
- 30 Jun 2025 Discover 5 new AI features of Xcode 26 30 Jun 2025
- 14 Jun 2025 Using async let with synchronous code 14 Jun 2025
- 14 Jun 2025 Making a TextField display multiple lines of text 14 Jun 2025
-
May 2025
- 26 May 2025 How to easily inspect and modify network traffic 26 May 2025
- 19 May 2025 Ever heard of .contextMenu()? 19 May 2025
- 12 May 2025 The rules of the App Store have changed! 12 May 2025
- 5 May 2025 What’s new in Swift 6.1? 5 May 2025
-
March 2025
- 31 Mar 2025 Is it the end for CocoaPods? 31 Mar 2025
- 25 Mar 2025 How to turn a SwiftUI color into a gradient 25 Mar 2025
- 10 Mar 2025 .animation() vs withAnimation(): what's the difference? 10 Mar 2025
- 3 Mar 2025 How to use AI (and Cursor) to improve your iOS skills 3 Mar 2025
-
February 2025
- 17 Feb 2025 Apple has open-sourced Swift's build system 17 Feb 2025
- 3 Feb 2025 The easiest way to use SwiftUI in a UIKit app 3 Feb 2025
-
January 2025
- 17 Jan 2025 Introduction to Non-Copyable types 17 Jan 2025
- 11 Jan 2025 How to hide private information 11 Jan 2025
-
December 2024
- 10 Dec 2024 Using a Raw String to write JSON data 10 Dec 2024
- 7 Dec 2024 Be careful wrapping a throwing function in a Task 7 Dec 2024
- 7 Dec 2024 let is a lie (sometimes) 7 Dec 2024
- 2 Dec 2024 ChatGPT in Xcode: is it good? 2 Dec 2024
-
November 2024
- 25 Nov 2024 New in Swift 6: a macro to make debugging easier 25 Nov 2024
- 18 Nov 2024 Copilot is now available in Xcode (and it’s good!) 18 Nov 2024
- 3 Nov 2024 New in SwiftUI: the macro @Entry 3 Nov 2024
-
October 2024
- 21 Oct 2024 How to get started with Swift Testing 21 Oct 2024
- 4 Oct 2024 New in Xcode 16: the macro @Previewable 4 Oct 2024
-
September 2024
- 26 Sept 2024 Discover 3 new features of Xcode 16 26 Sept 2024
- 9 Sept 2024 How to add a paywall with a single line of SwiftUI code 🛍️ 9 Sept 2024
- 6 Sept 2024 Bad practice creating a StateObject 6 Sept 2024
-
July 2024
- 29 Jul 2024 How to help someone get started with iOS engineering 👩🏽💻👨🏻💻 29 Jul 2024
- 23 Jul 2024 5 very useful functions from Swift Algorithms 23 Jul 2024
- 16 Jul 2024 How to run native code from a WKWebView 16 Jul 2024
- 9 Jul 2024 AI features in Xcode 16: is it good? 9 Jul 2024
- 8 Jul 2024 Building the inverted scroll of a messaging app 8 Jul 2024
- 1 Jul 2024 Apple’s official method to design an iOS app 📱 1 Jul 2024
-
June 2024
- 18 Jun 2024 Storing two types in the same variable using Either 18 Jun 2024
- 18 Jun 2024 My highlights of WWDC 2024 as an iOS developer 🍎 18 Jun 2024
- 14 Jun 2024 Here are 3 advanced tips in Swift 💡 14 Jun 2024
- 3 Jun 2024 Previews in Xcode also work with UIKit! 3 Jun 2024
-
May 2024
- 31 May 2024 Bad practice: not using a ButtonStyle 31 May 2024
- 13 May 2024 Did you know that a few popular iOS apps are open-source? 🤨 13 May 2024
- 7 May 2024 How to decode dates in ISO 8601 format 7 May 2024
- 6 May 2024 How to refactor code with regular expressions 🤯 6 May 2024
- 1 May 2024 5 tips for a successful iOS take-home project 1 May 2024
-
April 2024
- 29 Apr 2024 I can teach you the basics of SwiftData in 4 hours 👩🏽🎓👨🏻🎓 29 Apr 2024
- 28 Apr 2024 Bad practice: not using the modern formatting API 28 Apr 2024
- 22 Apr 2024 How to enable spell checking in Xcode 22 Apr 2024
- 9 Apr 2024 What’s the difference between any and Any? 9 Apr 2024
- 8 Apr 2024 How to test Push Notifications in the simulator 8 Apr 2024
-
March 2024
- 26 Mar 2024 Swift has more formatters than you know! 26 Mar 2024
- 25 Mar 2024 Using a Swift macro to generate an EnvironmentKey 25 Mar 2024
- 17 Mar 2024 Do you know what .layoutIfNeeded() actually does? 17 Mar 2024
- 11 Mar 2024 I can teach you the basics of UIKit in 2 hours 👩🏽🎓👨🏻🎓 11 Mar 2024
- 5 Mar 2024 Be careful when using .onTapGesture() 5 Mar 2024
- 4 Mar 2024 How to easily test In-App Purchases 🛍️ 4 Mar 2024
- 3 Mar 2024 How to mock any network call with URLProtocol 3 Mar 2024
-
February 2024
- 26 Feb 2024 When should you use a hybrid framework? 🤔 26 Feb 2024
- 20 Feb 2024 Bad practice: not using .isMultiple(of:) 20 Feb 2024
- 15 Feb 2024 How to write safer code using the Lock 🔒 and Key 🔑 pattern 15 Feb 2024
- 6 Feb 2024 Bad practice: using .lowercased() to compare strings 6 Feb 2024
- 5 Feb 2024 Do you know what translatesAutoresizing MaskIntoConstraints actually does? 🤨 5 Feb 2024
-
January 2024
- 30 Jan 2024 How to make a completionHandler much safer 30 Jan 2024
- 29 Jan 2024 How to give great answers to technical interview questions 👩🏽💻👨🏻💻 29 Jan 2024
- 26 Jan 2024 Bad practice: loading a large image on the main thread 26 Jan 2024
- 26 Jan 2024 Hidden feature: subscript 26 Jan 2024
- 9 Jan 2024 How to write Unit Tests for Code Performance ⏱️ 9 Jan 2024
- 8 Jan 2024 How to easily debug your network code 🛰️ 8 Jan 2024
-
December 2023
- 28 Dec 2023 Bad practice: using "YYYY" to format a Date 28 Dec 2023
- 18 Dec 2023 How to get started with The Composable Architecture 📱 18 Dec 2023
- 11 Dec 2023 Did you know that Xcode has a search history? 💡 11 Dec 2023
- 8 Dec 2023 Hidden feature: typealias 8 Dec 2023
- 4 Dec 2023 Swift has more formatters than you think! 🤯 4 Dec 2023
- 1 Dec 2023 Bad practice: not using PersonNameComponentsFormatter 1 Dec 2023
-
November 2023
- 27 Nov 2023 Here are 8 tips to design a great paywall 🤑 27 Nov 2023
- 20 Nov 2023 Are optional closures escaping or not? 🤨 20 Nov 2023
- 14 Nov 2023 Hidden feature: initializers 14 Nov 2023
- 13 Nov 2023 Have you ever used Multiple Cursors in Xcode? 🤨 13 Nov 2023
- 12 Nov 2023 Bad practice: not using UIAction 12 Nov 2023
- 8 Nov 2023 Discover the advanced features of Xcode’s breakpoints 🐛 8 Nov 2023
-
October 2023
- 31 Oct 2023 Hidden feature: final 31 Oct 2023
- 30 Oct 2023 How to write tests that detect memory leaks 💦 30 Oct 2023
- 24 Oct 2023 Bad practice: not using multiline strings 24 Oct 2023
- 24 Oct 2023 Hidden feature: enum 24 Oct 2023
- 23 Oct 2023 Here’s a great use case for Parameter Packs 🤌 23 Oct 2023
- 16 Oct 2023 This small mistake will crash your SwiftUI app 🧨 16 Oct 2023
- 14 Oct 2023 Bad practice: not using Phantom Types 14 Oct 2023
- 9 Oct 2023 Here are 8 tips to optimize your iOS app 📱 9 Oct 2023
- 2 Oct 2023 Here’s how you can learn Swift Concurrency in 2 hours 👩🏽🎓👨🏻🎓 2 Oct 2023
-
September 2023
- 26 Sept 2023 Hidden feature: if and switch 26 Sept 2023
- 25 Sept 2023 Some APIs are more dangerous than they seem 🫢 25 Sept 2023
- 19 Sept 2023 Bad practice: not using throwing tests 19 Sept 2023
- 18 Sept 2023 Here are 3 Swift Macros you can start using today 🤌 18 Sept 2023
- 16 Sept 2023 Hidden feature: private properties 16 Sept 2023
- 11 Sept 2023 Did you know you can use Copilot with an Xcode project? 🤖 11 Sept 2023
- 9 Sept 2023 Bad practice: capturing self in a nested closure 9 Sept 2023
- 4 Sept 2023 Here are 3 cool new features of Swift 5.9 🤩 4 Sept 2023
-
August 2023
- 29 Aug 2023 Bad practice: using an unsafe continuation 29 Aug 2023
- 28 Aug 2023 Here’s what you need to know about TipKit! 💡 28 Aug 2023
- 22 Aug 2023 Hidden feature: static properties 22 Aug 2023
- 21 Aug 2023 I can teach you SwiftUI in 12 hours 👩🏼🎓👨🏻🎓 21 Aug 2023
- 15 Aug 2023 Discover localizedStandardCompare() 15 Aug 2023
- 14 Aug 2023 How risky is it to use [unowned self]? 🤔 14 Aug 2023
- 8 Aug 2023 Bad practice: using if instead of guard 8 Aug 2023
- 7 Aug 2023 I can teach you Combine in just 4 hours 😌 7 Aug 2023
- 1 Aug 2023 Discover MeasurementFormatter 1 Aug 2023
-
July 2023
- 31 Jul 2023 How about 5 new tips you can start using today? 💡 31 Jul 2023
- 25 Jul 2023 Bad practice: capturing a method reference 25 Jul 2023
- 24 Jul 2023 Here are 5 tools that will improve your iOS project 🛠 24 Jul 2023
- 22 Jul 2023 Discover async let 22 Jul 2023
- 17 Jul 2023 When do you really need to use [weak self]? 🤨 17 Jul 2023
- 12 Jul 2023 Bad practice: testing if a String is empty 12 Jul 2023
- 12 Jul 2023 Discover CollectionOfOne 12 Jul 2023
- 12 Jul 2023 Discover #error() 12 Jul 2023
- 10 Jul 2023 Here are 5 Xcode tips you really wanna know 😌 10 Jul 2023
-
June 2023
- 19 Jun 2023 Apple made it easy to keep track with all the WWDC additions 🍎 19 Jun 2023
- 13 Jun 2023 Discover Number Separators 13 Jun 2023
- 12 Jun 2023 Here are 5 great articles to keep up with WWDC 😌 12 Jun 2023
- 6 Jun 2023 There are so many cool new features in Swift and Xcode 🤩 6 Jun 2023
-
May 2023
- 29 May 2023 How would you answer this typical iOS interview question? 🤨 29 May 2023
- 23 May 2023 3 tips to write better Swift code 23 May 2023
- 22 May 2023 Here are 5 great blog articles to learn something new 🧑🎓 22 May 2023
- 18 May 2023 How to refactor using Associated Values 18 May 2023
- 15 May 2023 Here are my 5 favorite Swift tips 🤌 15 May 2023
- 8 May 2023 Here’s another great learning resource 👌 8 May 2023
- 3 May 2023 Discover dump() 3 May 2023
- 2 May 2023 85% of iOS developers got the wrong answer 🫢 2 May 2023
-
April 2023
- 24 Apr 2023 Did you know Property Wrappers are great debugging tools? 🐛 24 Apr 2023
- 22 Apr 2023 Discover how @MainActor works 22 Apr 2023
- 17 Apr 2023 I learned so much from these videos 😌 17 Apr 2023
- 15 Apr 2023 3 mistakes to avoid with async / await 15 Apr 2023
- 10 Apr 2023 Do you know this trick to spot memory leaks? 🤨 10 Apr 2023
- 7 Apr 2023 Discover LazySequence 7 Apr 2023
- 4 Apr 2023 3 mistakes to avoid with Optionals 4 Apr 2023
- 3 Apr 2023 Here are 5 (new) tips you can start using today 🚀 3 Apr 2023
-
March 2023
- 28 Mar 2023 Discover XCTUnwrap() 28 Mar 2023
- 20 Mar 2023 I learned so much from this website 🤯 20 Mar 2023
- 19 Mar 2023 3 mistakes to avoid with Closures 19 Mar 2023
- 13 Mar 2023 Are private properties really private? 🤨 13 Mar 2023
- 11 Mar 2023 How to write your first Unit Test 11 Mar 2023
- 6 Mar 2023 Here are 5 tips you can start using today 😎 6 Mar 2023
-
February 2023
- 27 Feb 2023 Only 15% of iOS developers get the right answer 😧 27 Feb 2023
- 20 Feb 2023 Here’s my second (traditional) newsletter 📮 20 Feb 2023
- 13 Feb 2023 Discover CaseIterable 13 Feb 2023
- 6 Feb 2023 This is my first (traditional) newsletter 📮 6 Feb 2023
- 4 Feb 2023 How to write your first API call 4 Feb 2023
-
January 2023
- 8 Jan 2023 Discover Generics in Swift 8 Jan 2023
-
December 2022
- 20 Dec 2022 Discover Property Wrappers in Swift 20 Dec 2022
- 19 Dec 2022 5 Things You Didn’t Know About KeyPaths 19 Dec 2022
- 5 Dec 2022 Discover Actors in Swift 5 Dec 2022
-
November 2022
- 26 Nov 2022 Discover async / await in Swift 26 Nov 2022
- 4 Nov 2022 Discover how Mocks work in Swift 4 Nov 2022
- 4 Nov 2022 Discover some New Features of Swift 5.7 4 Nov 2022
- 4 Nov 2022 Discover the MVP Architecture 4 Nov 2022
- 3 Nov 2022 Discover the Coordinator Pattern 3 Nov 2022
- 3 Nov 2022 Discover Dependency Injection 3 Nov 2022
-
September 2022
- 3 Sept 2022 Discover the MVVM Architecture 3 Sept 2022
Tips
-
September 2025
- 14 Sept 2025 raw identifiers for functions 14 Sept 2025
-
June 2025
- 1 Jun 2025 TextField vertical axis 1 Jun 2025
-
October 2023
- 28 Oct 2023 switch used as an expression 28 Oct 2023
- 2 Oct 2023 if used as an expression 2 Oct 2023
-
May 2023
- 24 May 2023 better compactMap 24 May 2023
-
April 2023
- 26 Apr 2023 lazy + private(set) 26 Apr 2023
- 13 Apr 2023 guard statements 13 Apr 2023
- 3 Apr 2023 concise [weak self] 3 Apr 2023
-
March 2023
- 26 Mar 2023 omit return keyword 26 Mar 2023
- 6 Mar 2023 iOS version dropped reminder 6 Mar 2023
-
February 2023
- 27 Feb 2023 ResultBuilder + local constant 27 Feb 2023
- 20 Feb 2023 LazySequence 20 Feb 2023
- 1 Feb 2023 generic extensions 1 Feb 2023
-
January 2023
- 19 Jan 2023 raw strings 19 Jan 2023
- 4 Jan 2023 multiline String 4 Jan 2023
- 2 Jan 2023 XCTest + try! 2 Jan 2023
-
December 2022
- 21 Dec 2022 orEmpty 21 Dec 2022
- 12 Dec 2022 isNilOrEmpty 12 Dec 2022
- 7 Dec 2022 if-else vs switch 7 Dec 2022
-
November 2022
- 28 Nov 2022 variadic arguments 28 Nov 2022
- 23 Nov 2022 CaseIterable 23 Nov 2022
- 14 Nov 2022 opaque argument 14 Nov 2022
- 11 Nov 2022 as? vs is 11 Nov 2022
- 5 Nov 2022 for-loop vs filter() 5 Nov 2022
- 5 Nov 2022 Closures and Capture Lists 5 Nov 2022
- 5 Nov 2022 Optionals vs Result 5 Nov 2022
- 5 Nov 2022 variadic arguments 5 Nov 2022
- 5 Nov 2022 large number separators 5 Nov 2022
- 5 Nov 2022 KeyPaths as closures 5 Nov 2022
- 5 Nov 2022 shorthand if-let syntax 5 Nov 2022
- 5 Nov 2022 Array vs some Collection 5 Nov 2022
- 5 Nov 2022 where in a for-loop 5 Nov 2022
- 5 Nov 2022 dump() vs print() 5 Nov 2022
- 5 Nov 2022 Combine nested if 5 Nov 2022
- 5 Nov 2022 modern API of UIButton 5 Nov 2022
- 5 Nov 2022 XCTUnwrap vs force unwrap 5 Nov 2022