Awesome SwiftUI Resources
9 min readMay 31, 2023
Articles
- SwiftUI by Example
- Get started with SwiftUI
- Intro to SwiftUI
- SwiftUI First Look: Building a Simple Table View App
- Will Storyboards still be alive?
- Answers to the most common questions about SwiftUI
- A first look at SwiftUI: Apple’s declarative new UI framework
- Inside SwiftUI’s Declarative Syntax’s Compiler Magic
- Making real-world app with SwiftUI
- Tutorial: How to setup a SwiftUI project
- What SwiftUI Means for Flutter
- RxSwift to Apple’s Combine “Cheat Sheet”
- Understanding SwiftUI in depth
- A Skeptics view on SwiftUI
- Optionals in SwiftUI
- SwiftUI Are we saying goodbye to IB(UIStoryboard)?
- How To Make a Simple Countdown Timer with SwiftUI
- SwiftUI for React Native Developers
- SwiftUI Will Change More Than How We Code
- What’s this “some” in SwiftUI?
- SwiftUI vs Interface Builder and storyboards
- SwiftUI Basics: List Fetching
- Understanding Property Wrappers in SwiftUI
- The Swift 5.1 features that power SwiftUI’s API
- Learn SwiftUI with free tutorials
- SwiftUI Introduction. Preface
- SwiftUI Introduction. Declarative Programming
- SwiftUI: Modified Content, Type Erasure, and Type Debugging
- Using Xcode Previews with existing views without using SwiftUI
- Inside SwiftUI’s Declarative Syntax’s Compiler Magic
- Crash course in Swift’s ‘function builders’ with SwiftUI
- Gosh Darn SwiftUI
- Create a Side menu with SwiftUI
- Build a Stopwatch app with SwiftUI
- ViewModifiers in SwiftUI
- SwiftUI — The If Statement’s Sharp Edges
- Accessibility in SwiftUI
- How to use SwiftUI in Swift Playgrounds
- Replicating the Apple Card Application using SwiftUI
- SwiftUI Tutorial for Liquid Slider Control
- Dynamic Type in SwiftUI
- SwiftUI: Shake Animation
- SwiftUI Is Here to Knock UIKit out of Its Shoes
- Localization in SwiftUI
- SwiftUI for UIKit developers
- SwiftUI: Setting Environment Values
- SwiftUI Data Flow
- Configuring SwiftUI views
- Mastering buttons in SwiftUI
- How to create Activity Ring in SwiftUI
- Building a state-driven app in SwiftUI using state machines
- Asynchronous Image Loading from URL in SwiftUI
- Data in SwiftUI, Part 1: Data
- Data in SwiftUI, Part 2: Views as a function of data
- Data in SwiftUI, Part 3: Tools
- ScrollView effects using GeometryReader
- SwiftUI Magnification Gesture Tutorial
- How to tile an image
- How To Create An Onboarding Screen In SwiftUI #1 — Embedding A UIPageViewController
- How To Create An Onboarding Screen In SwiftUI #2 — Implementing The Page Control
- Drag & Drop with SwiftUI
- Gestures and Animations in SwiftUI
- Working with SwiftUI Gestures and @GestureState
- How to draw a custom path
- How to use UIBezierPath and CGPath in SwiftUI
- SwiftUI Previews on macOS Catalina and Xcode 11
- Gestures in SwiftUI
- SwiftUI Tip: Drawing a Border with Rounded Corners for Buttons and Text
- How to layer views on top of each other using ZStack
- How to make custom view modifiers in SwiftUI
- SwiftUI Drag Gesture Tutorial
- SwiftUI’s built-in shapes
- SwiftUI Layout System
- Trying to understand custom layouts in SwiftUI
- Working with SwiftUI Gestures and @GestureState
- How to return different view types
- How to create a slider and read values from it
- SwiftUI slider tutorial — how to create and use slider in SwiftUI
- How to group views together
- SwiftUI tips and tricks
- How to use @EnvironmentObject to share data between views
- Disabling user interactivity with allowsHitTesting()
- Custom modifiers
- What is the @Environment property wrapper?
- Making real-world app with SwiftUI
- Understanding Property Wrappers in SwiftUI
- Building forms with SwiftUI
- Animations in SwiftUI
- Managing Data Flow in SwiftUI
- Gestures in SwiftUI
- Navigation in SwiftUI
- Alerts, ActionSheets, Modals and Popovers in SwiftUI
- ViewModifiers in SwiftUI
- Building BarChart with Shape API in SwiftUI
- The power of Environment in SwiftUI
- Modeling app state using Store objects in SwiftUI
- SwiftUI Performance Battle: AnyView vs Group
- How to fix slow List updates in SwiftUI
- How to use Instruments to profile your SwiftUI code and identify slow layouts
- Controlling the animation stack
- GeometryReader to the Rescue
- SwiftUI: Create a Tinder-Style Swipeable Card View
- What is the @GestureState property wrapper?
- Understanding frames and coordinates inside GeometryReader
- How to let users move rows in a list
- SwiftUI gestures: Composing gestures or how do add and handle multiple gestures.
- A deeper understanding of SwiftUI
- Custom @Environment keys in SwiftUI
- How to hide and show the status bar
- The magic of view preferences in SwiftUI
- Anchor preferences in SwiftUI
- Alignment guides in SwiftUI
- TextField in SwiftUI
- Inspecting the View Tree — Part 1: PreferenceKey
- Inspecting the View Tree — Part 2: AnchorPreferences
- Inspecting the View Tree — Part 3: Nested Views
- Building Bottom sheet in SwiftUI
- Frame Behaviors with SwiftUI
- Alignment Guides in SwiftUI
- Safely Updating The View State
- id(_): Identifying SwiftUI Views
- A deeper understanding of SwiftUI
- SwiftUI: How to get content offset from ScrollView
- A guide to the SwiftUI layout system — Part 1
- A guide to the SwiftUI layout system — Part 2
- A guide to the SwiftUI layout system — Part 3
- The magic of fixed size modifier in SwiftUI
- Dynamic Environments ¶ SwiftUI Rules
- Customizing Toggle in SwiftUI
- Keyboard Avoidance for SwiftUI Views
- How To Prevent The Keyboard From Hiding Your SwiftUI View
- The Mystery Behind View Equality
- Optimizing views in SwiftUI using EquatableView
- Template-view pattern in SwiftUI
- Building calendar without UICollectionView in SwiftUI
- Performance Battle: AnyView vs Group
- Why I quit using the ObservableObject
- Catch SwiftUI model updates from bad threads before they crash your app
- What is the @Published property wrapper?
- Advanced SwiftUI Animations — Part 1: Paths
- Advanced SwiftUI Animations — Part 2: GeometryEffect
- Advanced SwiftUI Animations — Part 3: AnimatableModifier
- How to Create Checkbox in SwiftUI
- SwiftUI and the Missing Environment Object
- SwiftUI Architectures: Model-View, Redux & MVVM
- Multi Select Picker for SwiftUI
- Fitting and filling views in SwiftUI
- SwiftUI: Interactive Custom Sheet
- View Communication Patterns in SwiftUI
- Exploring SwiftUI Apple Watch Performance
- The Power of the Hosting+Representable Combo
- What are SwiftUI Transitions and How Do You Use Them?
- Visualize Combine Magic with SwiftUI Part 1
- Visualize Combine Magic with SwiftUI — Part 2
- Visualize Combine Magic with SwiftUI Part 3
- Visualize Combine Magic with SwiftUI — Part 4
- Visualize Combine Magic with SwiftUI — Part 5
- Add, Edit, Move, and Drag and Drop List Rows with SwiftUI
- Mastering buttons in SwiftUI
- SwiftUI Data Flow
- Custom Environment Values in SwiftUI
- Replicating UITableView cell selection with a SwiftUI List
- Mastering grids in SwiftUI
- Drag and drop in SwiftUI
- All SwiftUI property wrappers explained and compared
- SwiftUI Property Wrappers
- Custom navigation bar title view in SwiftUI
- Impossible Grids with SwiftUI
- The difference between @StateObject, @EnvironmentObject, and @ObservedObject in SwiftUI
- Backward Compatibility with SwiftUI
- Adding optional @Bindings to SwiftUI views
- New property wrappers in SwiftUI
- Mastering toolbars in SwiftUI
- Sidebar navigation in SwiftUI
- Using MapKit with SwiftUI
- Menus in SwiftUI
- Build interactions using SceneKit and SwiftUI
- How do I Add a Global Accent Color to a SwiftUI 1.0 Project?
- Coloring SVG assets in SwiftUI
- What’s new in SwiftUI
- What’s new in SwiftUI for iOS 14
- Using custom publishers to drive SwiftUI views
- Using SceneStorage for State Restoration in SwiftUI Apps
- How SwiftUI can now be used to build entire iOS apps
- LazyVGrid and LazyHGrid Layouts in SwiftUI
- How to position views in a grid using LazyVGrid and LazyHGrid
- What’s the difference between @StateObject and @ObservedObject?
- Scroll to Newly Added Item using ScrollViewReader and onChange Modifier
- Using SceneStorage for State Restoration in SwiftUI Apps
- Add custom SwiftUI view to View Library with LibraryContentProvider
- How to create a toolbar and add buttons to it
- How to add an AppDelegate to a SwiftUI app
- Using an AppDelegate with the new SwiftUI-based app lifecycle
- SwiftUI — Determining Current Device and Orientation
- PageViewer in SwiftUI aka PageViewController
- Recreating the latest design fad in SwiftUI
- SwiftUI tutorial: replicating the Activity application
- How to Create a Neumorphic Design With SwiftUI
- Creating A Simple Stopwatch In SwiftUI
- How To Detect Shake Gestures In SwiftUI
- Video Based Onboarding Screen In SwiftUI
- How To Use Local Notifications In SwiftUI
- Impossible Grids with SwiftUI
- Avoiding massive SwiftUI views
- Displaying recursive data using OutlineGroup in SwiftUI
- Sidebar navigation in SwiftUI
- SwiftUI ScrollView offset
- PreferenceKey’s reduce method demystified
- iOS 14 UISplitViewController: 5 Issues That You May Run Into
- Conditional view modifiers
- Turning the ChibiStudio canvas into an App Clip for iOS 14
- SF Symbols Changes in iOS 14
- Save Custom Codable Types in AppStorage or SceneStorage
- Flexible layouts in SwiftUI
- Sharing layout information in SwiftUI
- Building widgets in SwiftUI
- Mastering ScrollView in SwiftUI
- Tabs and pages in SwiftUI
- The State of SwiftUI
- SwiftUI 2.0: The Future is Declarative
- How Swift 5.3 enhances SwiftUI’s DSL
- Impossible SwiftUI views
- App Onboarding with SwiftUI
- Disabling Keyboard Avoidance in SwiftUI’s UIHostingController
- How to create expanding lists
- Building Expandable List with OutlineGroup & DisclosureGroup in SwiftUI 2.0
- Building an Expandable List View with Inset Grouped Style Using SwiftUI
- Commands in SwiftUI
- Focus management in SwiftUI
- SwiftUI View Lifecycle
- Keyboard shortcuts in SwiftUI
- The magic of redacted modifier in SwiftUI
- Transactions in SwiftUI
- Mastering GroupBox in SwiftUI
- How to use GeometryReader without breaking SwiftUI layout
- Handle Press And Release Events in SwiftUI
- Handle Press And Release Events in SwiftUI
- Styling custom SwiftUI views using environment
- Mastering SwiftUI previews
- Lazy navigation in SwiftUI
- How to use Alert with SwiftUI
- How to show and hide content with DisclosureGroup using SwiftUI
- Quick guide to using Core Data with SwiftUI
- Every SwiftUI protocol explained
- 4 Xcode shortcuts to boost your productivity for SwiftUI
- Top-Level Menu Visibility in SwiftUI for macOS
- How to resize an image view to fit a container view in SwiftUI
- What is new in SwiftUI after WWDC21
- Frames in SwiftUI
- SwiftUI Introspect
Animation
- A first look at matchedGeometryEffect
- matchedGeometryEffect and lists in SwiftUI
- MatchedGeometryEffect — Part 1 (Hero Animations)
- MatchedGeometryEffect — Part 2
- Expand and Collapse List Rows with Animation in SwiftUI
- Getting Started with SwiftUI Animations
Architecture
MVVM
Redux / Elm
- Redux-like state container in SwiftUI. Basics.
- Redux-like state container in SwiftUI. Best practices.
- Redux-like state container in SwiftUI. Container Views.
- Redux-like state container in SwiftUI. Connectors.
App
Interoperability
- Custom UIHostingController
- SwiftUI’s relationship to UIKit and AppKit
- How to use SwiftUI in UIKit: Using SwiftUI as UIView and UIViewController
- How to use UIKit in SwiftUI
- Frustrated by missing features in SwiftUI? Using UIViewRepresentable to wrap UIKit controls
- SwiftUI: Bridging UIKit with ScrollViewReader and DragGesture
- The UIKit views that now have built-in SwiftUI counterparts in iOS 14
- Presenting UIViewControllers in SwiftUI
Code
Documentation
Stackoverflow
- SwiftUI: Path’s coordinateSpace
- Scroll SwiftUI List to new selection
- Passing data between two views
- swiftUI: detect intersection of two views embedded inside an array and swap their positions
- SwiftUI: Status bar color
- How to update a single child view in SwiftUI?
- How to change the background color for a Form in SwiftUI?
- How to animate/transition text value change in SwiftUI
- SwiftUI — ObservableObject performance issues
- SwiftUI GeometryReader does not layout custom subviews in center
- Alignment changes after adding a GeometryReader
- SwiftUI — Using GeometryReader Without Modifying The View Size
- SwiftUI Asymmetric Transition delay is not working
Official Forum
Interoperating with CoreData
- How to combine Core Data and SwiftUI
- Setting up Core Data in SwiftUI 🛠
- Core Data with SwiftUI Tutorial: Getting Started
Videos
WWDC
- Introducing SwiftUI: Building Your First App
- SwiftUI Essentials
- Integrating SwiftUI
- Building Custom Views with SwiftUI
- Data Flow Through SwiftUI
- SwiftUI On All Devices
- SwiftUI on watchOS
- Mastering Xcode Previews
- Accessibility in SwiftUI
- Composing SwiftUI Gestures
Other
- SwiftUI Basics: Dynamic Lists, HStack VStack, Images with Circle Clipped Stroke Overlays
- SwiftUI Basics Tutorial
- SwiftUI Beginner Tutorial On iOS 13 by Devslopes
- Intro To SwiftUI: Simple State Management
- Simple SwiftUI App by Brian Advent
- SwiftUI Tutorial (Swift UI Basics in 1 Video)
- How To Create Views, Text and Stacks with Swift UI on Mojave
- SwiftUI NavigationView, List, Text, NavigationBarTitle Xcode 11
- SwiftUI Sneak Preview Demo Project
- NavigationView and NavigationButton — Push View in SwiftUI
- SwiftUI: Facebook Complex Layouts — Horizontal Scroll View
- SwiftUI App Tutorial — Lists, Navigation and JSON Data
- SwiftUI Presenting Data In A Scroll View & List
- How to Run SwiftUI on Mojave with Playgrounds and Sample Code
- Before You Learn SwiftUI, You Need To Hear This…
- SwiftUI = Mind-blow | WWDC iOS developer reaction
- SwiftUI — DON’T LEARN IT (JUST YET)
- Good Things: SwiftUI on Mojave in iOS Playgrounds
- SwiftUI Fetching JSON and Image Data with BindableObject
- SwiftUI lets us build declarative user interfaces in Swift
- SwiftUI Tutorial — Create a list that fetches JSON
- SwiftUI Complete Apps #1: Build a dynamic list app with navigation and images — Tutorial
- SwiftUI Scroll Animation using GeometryReade
- Onboarding Screens in SwiftUI 2
- SwiftUI Grids
- Up and Running with SwiftUI 2.0 Grids | LazyVGrid & LazyHGrid
- Hello LazyVGrid in SwiftUI 2.0
- Map in SwiftUI 2.0
- ProgressView in SwiftUI 2.0
- What’s new in SwiftUI for iOS 14?
- SwiftUI Lazy Stacks in iOS 14
- AWS Amplify DataStore with SwiftUI 2.0 | Todo App
- SwiftUI Native Progress Views
- Creating Your First SwiftUI Widget | iOS 14
🔔 Stay tuned for more awesome resources! 🔔
We’re just getting started with “Awesome SwiftUI Resources.” We have many more exciting resources, tips, and insights lined up to help you take your iOS app design to new heights. Stay connected with us to be the first to know about our upcoming releases and valuable content.
✨ Follow us for regular updates and notifications on future resources!
✨ Subscribe to our newsletter to receive exclusive content directly in your inbox!
✨ Join our community to connect with fellow iOS developers and share your experiences!
Thank you for joining us on this incredible journey of mastering SwiftUI.