Create a complete design system using SwiftUIGet a step-by-step blueprint for creating a complete design system using SwiftUI. From Figma to fully functional code, it’s all included in the Crafting Consistency book.
Grab your copy today with 40% off.
Swift
Blog posts related to Swift specific topics.
- SF Symbol: How to for Swift & SwiftUI
- Enum explained in-depth with code examples in Swift
- MainActor usage in Swift explained to dispatch to the main thread
- Security-scoped bookmarks for URL access
- JSON Parsing in Swift explained with code examples
- Typed throws in Swift explained with code examples
- Async await in Swift explained with code examples
- Swift Package Manager framework creation in Xcode
- ChatGPT for Swift: Top 5 code generation prompts
- Repository design pattern in Swift explained using code examples
- Optionals in Swift explained: 5 things you should know
- Extensions in Swift: How and when to use them
- Swift Evolution: Reading and learning from proposals
- User Defaults reading and writing in Swift
- Thread dispatching and Actors: understanding execution
- Value and Type parameter packs in Swift explained with examples
- App Intent driven development in Swift and SwiftUI
- If and switch expressions in Swift
- Predicate Macro in Swift for filtering and searching
- SwiftSyntax: Parse and Generate Swift source code
- @backDeployed to extend function availability to older OS releases
- Swift Macros: Extend Swift with New Kinds of Expressions
- Share Swift Code between Swift On Server Vapor and Client App
- Ranges in Swift explained with code examples
- Optimizing your app for Network Reachability
- The operation couldn’t be completed: solving errors in Swift
- Equatable conformance in Swift explained with code examples
- Detached Tasks in Swift explained with code examples
- Task Groups in Swift explained with code examples
- OptionSet in Swift explained with code examples
- @dynamicCallable in Swift explained with code examples
- Binary Targets in Swift Package Manager
- Result builders in Swift explained with code examples
- Getting started with Unit Tests in Swift
- Announcing the SwiftLee Talent Collective
- Alternate App Icon Configuration in Xcode
- Never keyword in Swift: return type explained with code examples
- Deadlocks in Swift explained: detecting and solving
- Shared with You implementation and testing explained
- Sendable and @Sendable closures explained with code examples
- URLSessionConfiguration: Exploring opt-in configurations
- App Store Connect API SDK in Swift: Creating Developer Tools
- Generics in Swift explained with code examples
- Existential any in Swift explained with code examples
- Some keyword in Swift: Opaque types explained with code examples
- Increase App Ratings by using SKStoreReviewController
- Memory leaks prevention using an autoreleasepool in unit tests
- AsyncSequence explained with Code Examples
- AsyncThrowingStream and AsyncStream explained with code examples
- Using MetricKit to monitor user data like launch times
- AnyObject, Any, and any: When to use which?
- How to use the #available attribute in Swift
- Self-documenting code in Swift to increase readability
- Tasks in Swift explained with code examples
- Guard statements in Swift explained with code examples
- Reflection in Swift: How Mirror works
- Creating an App Update Notifier using Combine and async/await
- Composition vs. Inheritance: code architecture solutions explained in Swift
- Property Wrappers in Swift explained with code examples
- Nonisolated and isolated keywords: Understanding Actor isolation
- EXC_BAD_ACCESS crash error: Understanding and solving it
- Race condition vs. Data Race: the differences explained
- Thread Sanitizer explained: Data Races in Swift
- @AppStorage explained and replicated for a better alternative
- How to use throwing properties to catch failures in Swift
- Unwrap or throw: Exploring solutions in Swift
- Async let explained: call async functions in parallel
- Dependency Injection in Swift using latest Swift features
- Actors in Swift: how to use and prevent data races
- Improve discoverability using Static Member Lookup in Generic Contexts
- Presenting sheets with UIKit using a UISheetPresentationController
- Swift Jobs: How to make the right career move
- Fileprivate vs private in Swift: The differences explained
- URLSession: Common pitfalls with background download & upload tasks
- NSPredicate based XCTestExpectations for conditional checks
- Getting started with the Combine framework in Swift
- How to test optionals in Swift with XCTest
- How to use the rethrows keyword in Swift
- How to use @autoclosure in Swift to improve performance
- How and when to use Lazy Collections in Swift
- How to use Variadic parameters in Swift
- XCTExpectFailure: Expected test failures explained with code examples
- Lazy var in Swift explained with code examples
- Closures in Swift explained with Code Examples
- What is a Computed Property in Swift?
- SwiftLee 2020 In Review: Most read blog posts
- Getting started with associated types in Swift Protocols
- Result in Swift: Getting started with Code Examples
- Constraints in Core Data Entities explained
- NSManagedObject events: handling state in Core Data
- Try Catch Throw: Error Handling in Swift with Code Examples
- How-to use Diffable Data Sources with Core Data
- Diffable Data Sources Adoption with Ease
- Persistent History Tracking in Core Data
- Write-Ahead Logging (WAL) disabled to force commits in Core Data
- Adding a closure as a target to UIButton and other controls in Swift
- ValueTransformer in Core Data explained: Storing absolute URLs
- @discardableResult in Swift explained: Ignoring return values
- Core Data Performance: 6 tips you should know
- Expressible literals in Swift explained by 3 useful examples
- String Interpolation in Swift explained using 4 useful cases
- Using Custom debug descriptions to improve debugging
- URLs in Swift: Common scenarios explained in-depth
- Custom Operators in Swift with practical code examples
- Custom subscripts in Swift explained with code examples
- NSFetchedResultsController extension to observe relationship changes
- Testing private methods and variables in Swift
- How to mock Alamofire and URLSession requests in Swift
- Creating a command line tool using the Swift Package Manager
- Authentication with signed requests in Alamofire 5
- Unique values in Swift: Removing duplicates from an array
- SwiftLee 2019 in review: Top Swift Development blog posts
- Advanced asynchronous operations by making use of generics
- Asynchronous operations for writing concurrent solutions in Swift
- Getting started with Operations and OperationQueues in Swift
- Concurrent vs Serial DispatchQueue: Concurrency in Swift explained
- Dark Mode: Adding support to your app in Swift
- Core Data and App extensions: Sharing a single database
- Auto Layout in Swift: Writing constraints programmatically
- Rich notifications on iOS explained in Swift
- Struct vs classes in Swift: The differences explained
- Error handling in Combine explained with code examples
- Array vs Set: Fundamentals in Swift explained
- Xcode refactoring options explained with examples
- UIKeyCommand how-to add keyboard shortcuts & speed up your workflow
- Combine debugging using operators in Swift
- Creating a custom Combine Publisher to extend UIKit
- Dynamic Member Lookup combined with key paths in Swift
- Using NSBatchDeleteRequest to delete batches in Core Data
- Weak self and unowned self explained in Swift
- Typealias usage in Swift
- @unknown default usage with enums in Swift
- Swift 5.0: How to migrate your project and frameworks
- Blog about Swift: Tips and ideas to start your own
- Required keyword usage in Swift classes and structs
- Alamofire vs URLSession: a comparison for networking in Swift
- How to use for loop, for each, while, and repeat in Swift (in-depth)
- QR Code generation with a custom logo and color using Swift
- SwiftLee 2018 in review: Top Swift Development blog posts
- Implementing Siri support using NSUserActivity, intents and shortcuts
- Measure the performance of code in Swift
- Performance, functional programming and collections in Swift
- SwiftLint valuable opt-in rules to improve your code
- Updating to Swift 4.2
- Defer usage in Swift
- CompactMap vs flatMap: The differences explained
- Compiler Diagnostic Directives using a hashtag in Swift
- Where usage in Swift
- Typed notifications using custom extensions
- Printing data requests using a custom URLProtocol
- Controlling Progress children by adding remove
- Share Extension UI Tests written in Swift
- Updating to Swift 4.1
- Optional protocol methods in Swift
- The start of a new blog
Debugging
Enhance your debugging skills and learn how to improve your debugging workflow.
- Memory consumption when loading UIImage from disk
- Debugging SwiftUI views: what caused that change?
- OSLog and Unified logging as recommended by Apple
- Network Extension Debugging on macOS
- Deadlocks in Swift explained: detecting and solving
- Flaky tests resolving using Test Repetitions in Xcode
- Using Custom debug descriptions to improve debugging
- No space left on device: Testing low storage scenarios
- 5 Xcode breakpoints tips you might not yet know
- Xcode Instruments usage to improve app performance
- Combine debugging using operators in Swift
- Compiler Diagnostic Directives using a hashtag in Swift
- Debugging breakpoints as a replacement for prints
- Using the Network Link Conditioner Utility (how-to)
- Core Data Debugging in Xcode using launch arguments
Optimization
Anything related to optimization of your app.
- Contingent pricing for in-app subscriptions
- App onboarding funnel optimization to increase conversions
- App design: 5 benefits of using system components
- ChatGPT for Swift: Top 5 code generation prompts
- The power of consistency in side projects
- Swift Newsletters: How to stay up to date as an app developer
- Using campaign links to track impressions, downloads, and sales
- Promotional offers: Increase App Revenue using discounts
- Build performance analysis for speeding up Xcode builds
- 10 Tips to Get Your App Featured on the App Store
- Xcode Simulator Directories Exploration
- Engineering goals: How to become a more successful developer
- Binary Targets in Swift Package Manager
- Refactoring Swift: Best Practices to succeed
- Side Projects: 10 Tips for being successful
- App Icon Generator is no longer needed with Xcode 14
- Increase App Ratings by using SKStoreReviewController
- Writing Swift Articles: Tips to become a better writer
- Non-fatal errors vs fatal crashes: The differences explained
- Increasing development effectiveness by recognizing repetition
- Presentation tips for performing professional Swift talks
- App Launch Time: 7 tips to increase performance
- WWDC 2020: 7 Tips to prepare yourself
- 4 Tips to make it easier to fix crashes and bugs
- Unused images and resources clean up in Xcode
- Developer productivity boost with Google Search Tips & Tricks
- Speeding up development: a collection of tips
- Danger plugins to speed up code reviews
- Speeding up with Xcode Behaviors
- Measure the performance of code in Swift
- Performance, functional programming and collections in Swift
- SwiftLint valuable opt-in rules to improve your code
- Effective development by improving the daily routine as a developer
- Using the Network Link Conditioner Utility (how-to)
- App Store Optimization for your App Store Page
- How to get iOS reviews with 4+ stars for your app
Workflow
All related to optimizing your workflow as a developer.
- Designing Apps: 5 Methods to improve your workflow
- Test-Driven Development (TDD) for bug fixes in Swift
- Third-party libraries acknowledgments using a Settings bundle
- App Preview Videos Capturing using the Xcode simulator
- Status bar overrides in the iOS Simulator
- Picking your minimum iOS version to support
- OSLog and Unified logging as recommended by Apple
- Location Simulation in Xcode’s Simulator
- Testing push notifications on the iOS simulator
- Side Projects: 10 Tips for being successful
- Full-screen development with Xcode and the Simulator
- Introducing GitBuddy: Changelog and Release manager for GitHub
- 4 Tips to make it easier to fix crashes and bugs
- Mastering the assistant editor in Xcode 11
- Xcode refactoring options explained with examples
- UIKeyCommand how-to add keyboard shortcuts & speed up your workflow
- Speeding up development: a collection of tips
- Cheat sheet examples for Xcode and Swift development
- Shortcuts essentials in Xcode to speed up your workflow
- Effective development by improving the daily routine as a developer
- Using Xcode custom file templates with GIT
- Useful less known Xcode tips to improve your workflow
- Fixing crashes with Firebase Crashlytics
Xcode
Learn how to use Xcode more efficiently.
- Inspect network traffic using the Xcode Simulator
- Xcode Build Insights: Keep track of project compilation times
- Solve Missing API declaration using required reason (ITMS-91053)
- Symbolicate crash logs with Xcode
- RocketSim 12.0: Builds Apps Faster
- Build performance analysis for speeding up Xcode builds
- Xcode Debug Console Tour: Exploring All Options
- Localization testing in Xcode
- #Preview SwiftUI Views using Macros
- Xcode Bookmarks: Save code landmarks & organize tasks
- Running Xcode on top of iPad
- Xcode Simulator Directories Exploration
- Getting started with Unit Tests in Swift
- Faster StoreKit testing by syncing in-app purchase products
- App Icon Generator is no longer needed with Xcode 14
- Thread Sanitizer explained: Data Races in Swift
- Development Assets in Xcode to enrich SwiftUI Previews
- Xcode Mark Line to improve readability using // Mark: comments
- Overriding UserDefaults for improved productivity
- Launch screens in Xcode: All the options explained
- SVG Assets in Xcode for Single Scale Images
- SwiftUI Previews: Validating views in different states
- Dark Mode: Adding support to your app in Swift
- Mastering the assistant editor in Xcode 11
- 5 Xcode breakpoints tips you might not yet know
- Xcode Instruments usage to improve app performance
- Unused images and resources clean up in Xcode
- Using Xcode Previews with existing UIKit views without using SwiftUI
- Unused localized strings clean up from a Strings file
- Cheat sheet examples for Xcode and Swift development
- Speeding up with Xcode Behaviors
- Shortcuts essentials in Xcode to speed up your workflow
- Command-click on code options and possibilities in Xcode
- Using Xcode custom file templates with GIT
- Useful less known Xcode tips to improve your workflow
- Enabling newly added opt-in features in Xcode 10