SwiftUI Fundamentals
SwiftUI is Apple's declarative user-interface framework. You describe views as a function of application state, and SwiftUI updates what people see when that state changes, across Apple platforms.
itMobile and client application development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — SwiftUI Fundamentals
SwiftUI is Apple's way of saying: write down what the interface should be for the current state, and let the framework chase the pixels. It is not a new dialect of UIKit with friendlier method names. It is a description language that happens to draw.
Before SwiftUI, Apple-platform UI work meant imperative view hierarchies: create a control, configure it, remember to update it again when the data changed, and hope you updated every label you meant to. SwiftUI flips that. A View is usually a small structure with a body. SwiftUI reads that body whenever it needs a fresh description. You stop poking widgets like livestock and start publishing statements of record.
Three ideas carry almost everything else.
First, composition: text, images, stacks, lists, and controls nest into custom views. Modifiers wrap a view and return a new one, which is why order matters and why "just add another call" can change geometry in ways that feel personal.
Second, one source of truth. @State owns transient local data. @Binding lets a child edit the owner's storage. Shared models on current systems prefer @Observable. If two places can disagree about the same fact, the interface will eventually disagree with itself, politely and in production.
Third, navigation is data on modern targets. NavigationStack and NavigationSplitView replace the older NavigationView patterns. Paths and values drive destinations. If a tutorial still centers NavigationView, treat it as historical fiction with compiling examples.
The surprise for many competent engineers is identity. SwiftUI decides whether something is "the same" view across updates; change that identity (an .id, a type erasure, a stack rebuild) and associated state can vanish without a crash report. The framework is not haunted. It is obedient.
SwiftUI still shares the planet with UIKit and AppKit. Hosting controllers and representables are the official escape hatches, not moral failures. Cross-platform products that must treat Android and the open web as equals need a different kind of toolkit entirely.
Read the intro when you want the architecture in full sentences. Use the slides for the relationships. Keep the cheatsheet open when choosing wrappers, containers, or deployment gates. The practice reference is the short loop that makes ownership visible: one state owner, one binding edge, one navigation destination, then stop and look.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://developer.apple.com/documentation/swiftui/
Supports
- Framework definition, App/Scene/View model, multiplatform adaptation, interop overview
- Course official URL and primary-source starting point
- https://developer.apple.com/tutorials/data/documentation/swiftui.md
Supports
- Machine-readable overview text used during research
- https://developer.apple.com/tutorials/swiftui
Supports
- Official hands-on tutorial path referenced from links and study progression
- https://developer.apple.com/documentation/swiftui/view-fundamentals
Supports
- Views as descriptions in a hierarchy
- Quiz answer on what a View represents
- https://developer.apple.com/documentation/swiftui/declaring-a-custom-view
Supports
- Custom View structs, body, ViewBuilder, initializer guidance
- https://developer.apple.com/documentation/swiftui/configuring-views
Supports
- Modifier wrapping behavior and order
- Quiz answer on what modifiers return
- https://developer.apple.com/documentation/swiftui/layout-fundamentals
Supports
- Stack layout fundamentals
- https://developer.apple.com/documentation/swiftui/picking-container-views-for-your-content
Supports
- Stacks, lazy stacks, lists, forms, Spacer guidance
- Quiz answer on starting with standard stacks
- https://developer.apple.com/documentation/swiftui/managing-user-interface-state
Supports
- @State, @Binding, least common ancestor, no persistence in state
- Field note on second @State copies
- Related quiz answers
- https://developer.apple.com/documentation/swiftui/model-data
Supports
- Single source of truth tooling for model data
- https://developer.apple.com/documentation/swiftui/managing-model-data-in-your-app
Supports
- Observable models in applications
- https://developer.apple.com/documentation/swiftui/migrating-from-the-observable-object-protocol-to-the-observable-macro
Supports
- Observation benefits and migration mapping
- Field note signal and shift cards
- Quiz answer on @Observable benefits
- https://developer.apple.com/documentation/swiftui/navigation
Supports
- NavigationStack, NavigationSplitView, deprecated NavigationView listing
- https://developer.apple.com/documentation/swiftui/migrating-to-new-navigation-types
Supports
- Migration guidance and deployment gates for new navigation types
- Quiz and field-note navigation claims
- https://developer.apple.com/documentation/technotes/tn3154-adopting-swiftui-navigation-split-view
Supports
- NavigationSplitView adoption and timeline event 2023-08-29
- https://developer.apple.com/documentation/swiftui/previews-in-xcode
- https://developer.apple.com/documentation/swiftui/uikit-integration
Supports
- UIHostingController and UIViewRepresentable bridges
- Quiz interop answer
- https://developer.apple.com/documentation/swiftui/appkit-integration
Supports
- AppKit hosting and representable bridges
- https://developer.apple.com/documentation/swiftui/environment
Supports
- Environment values and injected dependencies
- https://developer.apple.com/documentation/charts
Supports
- Swift Charts product placement
- https://developer.apple.com/documentation/widgetkit
Supports
- WidgetKit product placement
- https://developer.apple.com/documentation/realitykit
Supports
- RealityKit product placement
- https://developer.apple.com/documentation/uikit/
Supports
- UIKit product homepage and interop context
- https://developer.apple.com/documentation/appkit/
Supports
- AppKit product homepage
- https://developer.apple.com/xcode/
Supports
- Xcode product homepage and preview tooling role
- https://www.apple.com/newsroom/2019/06/apple-unveils-groundbreaking-new-technologies-for-app-development/
Supports
- SwiftUI announcement timeline event and multiplatform claim
- https://www.apple.com/newsroom/2020/06/apple-reveals-new-developer-technologies-to-foster-the-next-generation-of-apps/
Supports
- App lifecycle and lazy stack timeline event
- https://developer.apple.com/news/?id=ou1gpq68
Supports
- WidgetKit introduction timeline event
- https://www.apple.com/newsroom/2021/06/apple-introduces-new-developer-tools-and-technologies-to-create-even-better-apps/
Supports
- 2021 SwiftUI advances timeline event
- https://www.apple.com/newsroom/2022/06/apple-provides-developers-with-even-more-powerful-technologies/
Supports
- Navigation API and Swift Charts announcement timeline event
- https://www.apple.com/newsroom/2023/06/developer-tools-to-create-spatial-experiences-for-apple-vision-pro-now-available/
Supports
- visionOS SDK timeline event pairing SwiftUI and RealityKit
- https://www.apple.com/newsroom/2024/06/apple-empowers-developers-and-fuels-innovation-with-new-tools-and-resources/
Supports
- Xcode 16 preview linking timeline event
- https://developer.apple.com/videos/play/wwdc2019/204/
Supports
- First-app teaching session and 2019 timeline cluster
- https://developer.apple.com/videos/play/wwdc2019/226/
Supports
- Data-flow teaching session
- https://developer.apple.com/videos/play/wwdc2021/10022/
Supports
- Identity, lifetime, dependencies
- Field note difficulty card and related quiz answers
- https://developer.apple.com/videos/play/wwdc2022/10052/
Supports
- NavigationStack and NavigationSplitView introduction
- https://developer.apple.com/videos/play/wwdc2023/10149/
Supports
- Observation framework teaching session and shift field note
- https://developer.apple.com/videos/play/wwdc2024/10150/
Supports
- Current essentials tour linked in the reference path
- https://developer.apple.com/forums/thread/693137
Supports
- Practitioner reports of NavigationView stack pops used in Field Notes
- https://swiftui-lab.com/swiftui-id/
Supports
- Practitioner explanation of .id identity resets for Field Notes and quiz
- https://www.swiftbysundell.com/articles/avoiding-anyview-in-swiftui/
Supports
- Cost of AnyView type erasure for quiz and cheatsheet guidance
- https://www.swiftbysundell.com/articles/swiftui-and-uikit-interoperability-part-1/
Supports
- Practitioner framing of UIKit interop as escape hatch
- https://www.pointfree.co/blog/posts/130-observation-comes-to-the-composable-architecture
Supports
- Practitioner claim that SwiftUI apps still escape to other frameworks
- https://github.com/onmyway133/awesome-swiftui
Supports
- Discovery source for awesome-links curation
- https://github.com/vlondon/awesome-swiftui/
Supports
- Secondary awesome-list discovery source
- https://www.objc.io/books/thinking-in-swiftui/
Supports
- Awesome link rationale for Thinking in SwiftUI
- https://swiftui-lab.com/
Supports
- Awesome link rationale for The SwiftUI Lab
- https://www.hackingwithswift.com/100/swiftui
Supports
- Awesome link rationale for 100 Days of SwiftUI
- https://www.hackingwithswift.com/quick-start/swiftui
Supports
- Awesome link rationale for SwiftUI by Example
- https://github.com/nalexn/ViewInspector
Supports
- Awesome link rationale for ViewInspector
- https://github.com/siteline/swiftui-introspect
Supports
- Awesome link rationale for SwiftUI Introspect
- https://github.com/onevcat/Kingfisher
Supports
- Awesome link rationale for Kingfisher
- https://github.com/SwiftUIX/SwiftUIX
Supports
- Awesome link rationale for SwiftUIX
- https://github.com/kean/Nuke
Supports
- Awesome link rationale for Nuke
- https://github.com/SFSafeSymbols/SFSafeSymbols
Supports
- Awesome link rationale for SFSafeSymbols
- http://weekly.swiftwithmajid.com/
Supports
- Awesome link rationale for SwiftUI Weekly
- https://flutter.dev/
Supports
- Landscape entry for Flutter as cross-platform alternative
- https://reactnative.dev/
Supports
- Landscape entry for React Native
- https://developer.android.com/compose
Supports
- Landscape entry for Jetpack Compose as declarative peer
- https://www.swift.org/
Supports
- Landscape entry for the Swift language
