uild performance can be analyzed in Xcode to speed up your builds. This can quickly speed up your workflow and save a lot of time during the day for all developers working on the project. Slow builds often distract us as they enable us to focus on distractions like social media and Slack. By investigating … → The post Build performance analysis for speeding up Xcode builds appeared first on SwiftLee.| SwiftLee
As your SwiftUI projects grow, the need for a better SwiftUI architecture grows, as it’s easy for view bodies to become very long. You start with a simple screen, and before you realize it, your body includes dozens of nested VStacks, HStacks, and custom modifiers. At some point, scrolling through the body feels like reading a novel. In … → The post SwiftUI Architecture: Structure Views for Reusability and Clarity appeared first on SwiftLee.| SwiftLee
Learn how to utilize Migration Tooling in Swift for adopting new features efficiently and avoiding common mistakes.| SwiftLee
App Store Rejections, your UI freezing for 5 seconds, and migration projects taking months instead of days (even if you’ve been writing Swift for years). These could all be the result of common mistakes that are easy to make when writing Swift Concurrency code. I’ve created a 65+ lessons course, wrote tens of articles on … → The post The 5 biggest mistakes iOS Developers make with async/await appeared first on SwiftLee.| SwiftLee
Explore the essential role of Derived Data for iOS developers and learn how to optimize your build experience effectively.| SwiftLee
Universal Links allow you to redirect users directly into your app and give them an integrated mobile experience.| SwiftLee
App Store Optimization is important for every app’s success. You’ve spent a lot of time building a fantastic product, so you’d better get it in front of as many potential users as possible. Yet, it’s a whole different paradigm; it requires different knowledge and tools. I’ve been here myself, and today, I’m sharing my personal … → The post App Store Optimization: Real-world Best Practices appeared first on SwiftLee.| SwiftLee
Learn how HTML Diagnostics reports can improve your app support and help address user-reported issues effectively.| SwiftLee
Use the SwiftUI ForEach view to loop over items and generate a dynamic list of SwiftUI Views. Learn how to use index-based iterations.| SwiftLee
Learn how to present a SwiftUI alert with custom titles, messages & actions. Dynamically show data and create an error-handling extension.| SwiftLee
A SwiftUI Toggle is a common UI element that allows users to switch between states. It often turns a binding value on or off, and it’s commonly used for settings or binary choices. In this guide, I’ll walk through everything you need to know about a Toggle in SwiftUI: from the basics to customization, accessibility, and real-world … → The post SwiftUI Toggle: A Complete Guide appeared first on SwiftLee.| SwiftLee
The @ViewBuilder attribute is one of the few result builders available for you to use in SwiftUI. You typically use it to create child views for a specific SwiftUI view in a readable way without having to use any return keywords. I encourage you to read my article Result builders in Swift explained with code … → The post @ViewBuilder usage explained with code examples appeared first on SwiftLee.| SwiftLee
A Swift Computed Property allows you to define values based on other properties. You can optionally use async/await and throw errors.| SwiftLee
A Swift blog including iOS, and Xcode development content to build better mobile apps. Learn all basics and advanced topics with weekly new blog posts.| SwiftLee
The Share Extension of your app can be UI tested in a few easy steps using the following Swift extension. The video below shows an example of a certain UI Test run.| SwiftLee
Learn how to use an autoreleasepool in unit tests to capture memory leaks consistently throughout the development of your project.| SwiftLee
Refactoring code is essential to maintain quality and readability. Using best practices you'll become better at succeeding a big code change.| SwiftLee
Explore the difference between Threads and Tasks in Swift Concurrency and traditional threading methods. Get clarity on their usage.| SwiftLee
Using FIrebase Crashlytics and their new breadcrumbs feature to solve crashes can help you move faster. Combine your tracking and see the users path before a crash happened.| SwiftLee
Explore the new @concurrent attribute in Swift 6.2 and its role in Swift Concurrency for better asynchronous function handling.| SwiftLee
Get started and learn how to write unit tests to validate your code. Best practices help you to be more productive by writing better tests.| SwiftLee
Race conditions and Data Races can lead to unexpected behavior, and as an engineer it's important to know the differences between both.| SwiftLee
EXC_BAD_ACCESS crashes are annoying but solvable using the right tools. Learn how to use the Xcode sanitizers to fix those crashes in Swift.| SwiftLee
Swift 6.2 will introduce several changes to Swift Concurrency that will make writing asynchronous code more approachble.| SwiftLee
Swift and SwiftUI evolves fast. Let me do the hard work and stay current with my weekly newsletter sent weekly to 20K+ developers.| SwiftLee
Explore the SwiftUI Grid and learn how to create structured views with LazyVGrid and LazyHGrid for optimal performance.| SwiftLee
Discover the benefits of using a SwiftUI TabView to organize your app's main views into tabbed views for better user experience.| SwiftLee
Explore how to use the picker in SwiftUI for selecting values in your apps with different styles and controls.| SwiftLee
Learn how you can use Task.sleep() and Task.yield() in Swift Concurrency. Be aware of the differences to pick the one you need.| SwiftLee
Improve your backend development with Swift Testing and Vapor. Learn about running tests in parallel and boosting performance.| SwiftLee
Customize and annotate tests with traits in the Swift Testing framework. Learn how to configure behaviors and skip certain tests.| SwiftLee
Discover how #require macro in Swift Testing can set requirements for your tests and make them clearer and easier to understand.| SwiftLee
Learn about the new Swift Testing framework and how it revolutionizes written tests. Get clearer tests with improved feedback.| SwiftLee
Improve your testing workflow with the #expect macro in Swift Testing. Simplify your assertions and debug tests with ease.| SwiftLee
Learn how to write parameterized tests in Swift, allowing you to run a single test with multiple input parameters.| SwiftLee
Learn how to develop an app for iOS and bring your ideas to life. Install Xcode, find resources, and learn from experienced developers.| SwiftLee
Flaky tests can be resolved using test repetitions and several best practices when writing tests and running tests locally.| SwiftLee
Learn how to use SwiftUI lists to present data. Explore different list styles, implement selection, or change the background color.| SwiftLee
Discover the world of iOS app development and learn how to create apps for iPhones, iPads, and Apple devices using the right software.| SwiftLee
Macros in Swift allow you to extend the compiler with custom build errors and code generation to eliminate extraneous boilerplate code.| SwiftLee
Static Member Lookup in Generic Contexts allows simplifying code while improving the readability and discoverability of your code.| SwiftLee
Discover Swift tutorials to learn Swift with code examples and in-depth articles. Go from writing, to testing, to building a User Interface.| SwiftLee
Add interaction to your app with a SwiftUI Button, custom styles, and interactions. Learn how you can define reusable components.| SwiftLee
Use an SF Symbol in Swift & SwiftUI and explore over 6,000 free-to-use icons provided by Apple for app developers.| SwiftLee
Learn how to use the Thread Sanitizer to catch Data Races in Swift. Fix flaky tests and weird crashes and see Data Race examples in Swift.| SwiftLee
Improve your project structure and simplify testing with the repository design pattern. Centralize data access and separate concerns.| SwiftLee
Create a Swift Package that works with the Swift Package manager. Add dependencies, platform requirements and work with development packages.| SwiftLee
Boost your productivity with ChatGPT for Swift code generation. Learn how to harness the power of AI to speed up your development process.| SwiftLee
Using the #Preview Swift Macro you can create previews more quickly for all your SwiftUI, UIKit, and AppKit views.| SwiftLee
Learn how to use the Result enum type in Swift. Make use of methods like map, flatMap, flatMapError, and clean up your code.| SwiftLee
The nonisolated and isolated keywords allow you to control Actor isolation and provide access to immutable state within actors.| SwiftLee
MainActor in Swift replaces DispatchQueue.main and ensures tasks are performing on the main thread in a performant manner.| SwiftLee
AsyncThrowingStream and AsyncStream allow you to rewrite existing closure based code to async-await overloading methods.| SwiftLee
Async let allows executing multiple async methods in parallel and awaiting all results together for better performance in your apps.| SwiftLee
Actors in Swift prevent Data Races by synchronizing access. Combined with nonisolated access you can prevent crashes in your apps.| SwiftLee
Methods marked with @MainActor are not always executed on the main thread. It's essential to understand thread dispatching with actors.| SwiftLee
Tasks in Swift allow us to create an environment in which we can run async methods using await. Learn how to create and use tasks in Swift.| SwiftLee
Task Groups allow you to run multiple tasks in parallel and await their results. Bundle the outcome together into a single collection.| SwiftLee
The @preconcurrency attribute allows you to suppress Sendable-related warnings emitted from 3rd party libraries temporarily.| SwiftLee
Detached tasks allow you to run code asynchronously, but you should be aware of the substantial consequences they introduce.| SwiftLee
Concurrency-safe global variables prevent you from running into data races, especially when you've enabled strict concurrency checking.| SwiftLee
AsyncSequence allows asynchronously iterating over values. Learn how to create custom implementations and when you should use them.| SwiftLee
Create structured logging using OSLog and benefit from Xcode's debugging console using filters and colored logs.| SwiftLee
Learn more using this list of Debugging blog posts containing in-depth examples of Debugging programming techniques, basics, and best practices.| SwiftLee
Discover the crucial role of system components in app design for enhanced accessibility and user experience.| SwiftLee
Optimize memory usage when loading images in iOS and SwiftUI. Learn best practices to minimize memory consumption & improve app performance.| SwiftLee
Async await in Swift allows to write asynchronous tasks with structured concurrency. Maintain readability in complex code.| SwiftLee
What's new in Swift 6 and how do you migrate your projects and packages? Learn how to apply incremental migration and why you should update.| SwiftLee
Learn how to create Property Wrappers in Swift. Use the @propertyWrapper to remove boilerplate, improve readability, and clean up code.| SwiftLee
Creating a structured way of learning and staying up to date with Swift newsletters is essential for personal growth.| SwiftLee
Campaign links in App Store Connect allow you to track the performance of (paid) marketing channels and validate the return on investment.| SwiftLee
Learn more using this list of Xcode blog posts containing in-depth examples of Xcode programming techniques, basics, and best practices.| SwiftLee
Learn how to manually symbolicate crash reports using Xcode Organizer, IPS files and dSYM files to generate symbols.| SwiftLee
Debugging SwiftUI views allows you to find the cause of a redraw. Solve unexpected animation issues using this technique.| SwiftLee
Improve your developer workflow using this list of blog posts containing in-depth examples of workflows, basics, and best practices.| SwiftLee
Which minimum iOS version should you support? Which devices will I drop support for and how to decide based on facts. Convince your colleagues with data.| SwiftLee
Learn more using this list of Swift blog posts containing in-depth examples of Swift programming techniques, basics, and best practices.| SwiftLee
Dive deep into Swift’s latest concurrency changes, covering async-await, actors, and more.| SwiftLee
Unit testing async/await logic can be done by marking your unit test as asynchronous and using a new XCTest method.| SwiftLee
RocketSim enhances your Simulator by adding extra functionalities like recordings with touches and device bezels, or recent build actions.| SwiftLee