[ The language, and what it makes possible ]
Modern Swift — SwiftUI, structured concurrency, strict typing — for iOS, iPadOS, macOS and watchOS. This is the craft side of Apple development: the language and what it lets you build, rather than the store process.
Modern Swift — SwiftUI, structured concurrency, strict typing — for iOS, iPadOS, macOS and watchOS. This is the craft side of Apple development: the language and what it lets you build, rather than the store process.
Tell us which Apple platforms you needAsync/await and actors with strict checking turn data races from a class of bug you hunt in production into one the compiler refuses to build.
iPhone, iPad, Mac and Watch from largely shared Swift, with the platform-specific parts kept deliberately separate.
Swift Package Manager with a short, audited list. Apple's privacy manifest rules made every third-party SDK a compliance decision.
Enums with associated values, protocols and generics used to make invalid states unrepresentable rather than tested for at runtime.
iPhone, iPad, Mac and Watch from shared Swift, with the interface adapted per platform rather than stretched from one design.
Swift packages for other teams to consume — a client library, a design system or a shared domain layer — versioned, documented and tested.
Objective-C and older Swift brought forward: current language version, SwiftUI where it pays, concurrency migrated off completion handlers.
Enums and value types that make impossible states impossible. Swift rewards this more than most languages, and it removes whole categories of defect.
Feature and domain code as local Swift packages, so build times stay reasonable and boundaries are enforced by the compiler.
SwiftUI with UIKit where it is still stronger, previews for fast iteration, and a clear line between view state and domain state.
Structured concurrency with actors for shared mutable state, and strict concurrency checking turned on rather than deferred.
SwiftData or Core Data with a migration plan written before the first release, because schema change on shipped devices is unforgiving.
XCTest around the domain, Instruments for memory and time on a real device, and a build that fails on warnings rather than accumulating them.
Swift has changed enough over the last few years that code written for it in 2019 reads like a different language. Structured concurrency replaced completion handlers, SwiftUI became capable of carrying a whole app, and strict concurrency checking turned data races into compile errors rather than production mysteries.
That matters commercially because it changes what maintenance costs. A modern Swift codebase with a strong type model and checked concurrency has far fewer of the intermittent, hard-to-reproduce bugs that make an app expensive to own in year three.
Swift's enums and value types let the compiler rule out whole categories of bug. Using them properly is most of what good Swift is.
Turning it on later means fixing hundreds of warnings at once. Turning it on at the beginning costs almost nothing.
Local Swift packages keep incremental builds fast and stop feature code reaching into places it should not.
Concurrency errors that used to surface as rare crashes are now build failures. It is the most significant change to writing Swift in years.
It is no longer a layer over UIKit for simple screens. New apps start in SwiftUI and reach for UIKit in specific places.
Third-party SDKs must now declare API usage and signatures. Keeping the dependency list short went from good practice to a submission requirement.
Swift, without qualification. Objective-C is maintained for existing code and interoperates fine, but nothing new should start there — Swift has better safety, better concurrency and is where all of Apple's new frameworks are aimed.
Let’s talk about your swift project. No obligation, just a conversation.
Next service
Kotlin Development