Since past Apple's keynote, where SwiftUI was announced, tons of docs, examples, videos and tutorials have appeared. The goal of this repository is to gather all this information having a unique place where looking for info about SwiftUI.
SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift. Build user interfaces for any Apple device using just one set of tools and APIs. With a declarative Swift syntax that’s easy to read and natural to write, SwiftUI works seamlessly with new Xcode design tools to keep your code and design perfectly in sync. Automatic support for Dynamic Type, Dark Mode, localization, and accessibility means your first line of SwiftUI code is already the most powerful UI code you’ve ever written.
Table of contents
- by Apple
- Documentation
- ? WWDC videos
- ??? Tutorials
- ? by the community
- ? Books
- ? Courses
- ? Websites
- ? Articles
- ? Unit Testing
- ? Xcode Extensions
- ? Repositories
- ? Videos
- ❤️ Contributing
by Apple
Documentation
- SwiftUI
- Official doc
- Essentials
- Introducing SwiftUI. SwiftUI is a modern way to declare user interfaces for any Apple platform. Create beautiful, dynamic apps faster than ever before.
- App Structure and Behavior. Define the entry point and top-level organization of your app.
- User Interface
- Views and Controls. Present your content onscreen and handle user interactions.
- View Layout and Presentation. Combine views in stacks, generate groups and lists of views dynamically, and define view presentations and hierarchy.
- Drawing and Animation. Enhance your views with colors, shapes, and shadows, and customize animated transitions between view states.
- Framework Integration. Integrate SwiftUI views into existing apps, and embed AppKit, UIKit, and WatchKit views and controllers into SwiftUI view hierarchies.
- Data and Events
- State and Data Flow. Control and respond to the flow of data and changes within your app’s models.
- Gestures. Define interactions from taps, clicks, and swipes to fine-grained gestures.
- Previews in Xcode
- Previews. Generate dynamic, interactive previews of your custom views.
- Develop Apps with SwiftUI
- Develop Apps with SwiftUI. Create apps using SwiftUI and Xcode. Build Scrumdinger, an app that keeps track of daily scrums.
? WWDC videos
- 2️⃣0️⃣2️⃣2️⃣
- Hello Swift Charts
- The SwiftUI cookbook for navigation
- What's new in SwiftUI
- Compose custom layouts with SwiftUI
- Swift Charts: Raise the bar
- SwiftUI on iPad: Add toolbars, titles, and more
- SwiftUI on iPad: Organize your interface
- Use SwiftUI with AppKit
- Use SwiftUI with UIKit
- Bring multiple windows to your SwiftUI app
- Efficiency awaits: Background tasks in SwiftUI
- Adopt Variable Color in SF Symbols
- 2️⃣0️⃣2️⃣1️⃣
- Add rich graphics to your SwiftUI app
- Craft search experiences in SwiftUI
- Meet async/await in Swift
- What's new in SwiftUI
- Demystify SwiftUI
- Discover concurrency in SwiftUI
- Explore the SF Symbols 3 app
- SF Symbols in SwiftUI
- SwiftUI Accessibility: Beyond the basics
- Direct and reflect focus in SwiftUI
- Localize your SwiftUI app
- 2️⃣0️⃣2️⃣0️⃣
- Build SwiftUI apps for tvOS
- Build complications in SwiftUI
- Introduction to SwiftUI
- What's new in SwiftUI
- App essentials in SwiftUI
- Visually edit SwiftUI views
- Build a SwiftUI view in Swift Playgrounds
- Build document-based apps in SwiftUI
- Stacks, Grids, and Outlines in SwiftUI
- Build SwiftUI views for widgets
- Design great widgets
- Widget Code-along
- Data Essentials in SwiftUI
- Structure your app for SwiftUI previews
- 2️⃣0️⃣1️⃣9️⃣
- Introducing SwiftUI: Building Your First App
- SwiftUI Essentials ?
- Data Flow Through SwiftUI
- Building Custom Views with SwiftUI ?
- Integrating SwiftUI
- Accessibility in SwiftUI
- SwiftUI On All Devices
- SwiftUI on watchOS
- Mastering Xcode Previews
? most interesting
??? Tutorials
- Creating and Combining Views
- Working with UI Controls
- Handling User Input
- Building Lists and Navigation
- Drawing Paths and Shapes
- Animating Views and Transitions
- Composing Complex Interfaces
- Interfacing with UIKit
? by the community
? Books
- Swift UI by Tutorials by Ray wenderlich
- Combine: Asynchronous Programming with Swift by Ray wenderlich
- Catalyst by Tutorials by Ray wenderlich
- SwiftUI by Example - Book by Hacking with Swift
- SwiftUI Views Quick Start (free) by Big Mountain Studio
- SwiftUI Views Mastery by Big Mountain Studio
- SwiftUI Animations Mastery by Big Mountain Studio
- Working with Data in SwiftUI by Big Mountain Studio
- Combine Mastery in SwiftUI by Big Mountain Studio
- Using Combine (PDF/ePub at Gumroad by Joseph Heck
- ??SwiftUI实战,带你入门苹果最新的UI开发框架 - SwiftUI in Action, bring you the latest UI development framework from Apple by zixiao233
- Thinking in SwiftUI by objc.io
- SwiftUI for Absolute Beginners by Jayant Varma
? Courses
- Learn SwiftUI. by Meng To
- SwiftUI Masterclass 2021 - iOS 14 App Development & Swift 5 . by Robert Petras
- ??SwiftUI 中文教程 - SwiftUI-Tutorials. by WillieWangWei
- SwiftUI - The Complete Developer Course. by Stephen DeStefano
- CS193p - Developing Apps for iOS. by Stanford University
? Websites
- SwiftUI Hub - SwiftUI Tutorials & Resources
- Fucking SwiftUI - SwiftUI Cheat Sheet
- Gi Sheet - Ultimate SwiftUI Cheat Sheet on github
- Gosh Darn SwiftUI - SwiftUI Cheat Sheet (work-friendly mirror)
- The SwiftUI Lab - When the documentation is missing, we experiment
- SwiftOnTap – Complete SwiftUI Docs with Examples
- SwiftUI Examples for Designers
- SwiftUI Tutorials
? Articles
- SwiftUI by Example by Hacking with Swift
- Get started with SwiftUI by Hacking with Swift
- SwiftUI tips and tricks by Hacking with Swift
- Higher-Order-Components in SwiftUI by Andrei Villasana
- SwiftUI’s relationship to UIKit and AppKit by @SwiftBySundell
- Answers to the most common questions about SwiftUI by @SwiftBySundell
- A first look at SwiftUI: Apple’s declarative new UI framework by @SwiftBySundell
- Inside SwiftUI's Declarative Syntax's Compiler Magic by Bruno Rocha
- Making real-world app with SwiftUI by Majid Jabrayilov
- SwiftUI Are we saying goodbye to IB(UIStoryboard)? by Mohammad Sawalha
- How To Make a Simple Countdown Timer with SwiftUI by Antoine Barrault
- Tutorial: How to setup a SwiftUI project by Martin Lasek
- What SwiftUI Means for Flutter by Martin Rybak
- Intro to SwiftUI by Santosh Botre
- SF Symbols in iOS 13 by craiggrummitt
- Understanding SwiftUI in depth by Balraj Singh
- A Skeptics view on SwiftUI by Jille van der Weerd
- Optionals in SwiftUI by Jasper Haggenburg
- Presenting UIViewControllers in SwiftUI by Johannes Nevels
- SwiftUI for React Native Developers by Rohan Panchal
- SwiftUI First Look: Building a Simple Table View App by AppCoda
- Will Storyboards still be alive? by Nabil Kazi
- ?? Qu’est-ce que SwiftUI? by Nicolas Bachur
- RxSwift to Apple’s Combine “Cheat Sheet” by Shai Mishali
- First impressions of SwiftUI by Matt Gallagher
- Playing with SwiftUI Buttons by Alejandro Martinez
- Jun 9 The Swift 5.1 features that power SwiftUI’s API by @SwiftBySundell
- Intro to SwiftUI — Part 1 by Suyash Srijan
- How to build a Chat App or Messenger in SwiftUI for iOS Swift by Nick Halavins
- SwiftUI: Getting Started by Ray wenderlich
- SwiftUI meets Kotlin Multiplatform! by johnoreilly.dev
- Understanding the SwiftUI Sample by Rui Peres
- ?? SwiftUI - First experience by 彼得潘的 iOS App Neverland
- SwiftUI Will Change More Than How We Code by Harlan Kellaway for Prolific Interactive
- What’s this “some” in SwiftUI? by Mischa Hildebrand
- SwiftUI vs Interface Builder and storyboards by Hacking with Swift
- SwiftUI Basics: List Fetching by Mat Schmid
- SwiftUI, personal thoughts and Model-View-Presenter by David Cordero
- Cloning Tinder using SwiftUI by David Doll
- SwiftUI: Project migration from UIKit by Nik Rodionov
- MessageUI, SwiftUI and UIKit integration
- Mastering Table Views (Lists) in SwiftUI by BLACKBIRDS
- Making a Real World Application With SwiftUI by Thomas Ricouard
- SwiftUI vs Compose by QuickBird Studios
- Advanced Lists in SwiftUI
- GeometryReader to the Rescue by The SwiftUI Lab
- Inspecting the View Tree - View Preferences by The SwiftUI Lab
- View Extensions for Better Code Readability by The SwiftUI Lab
- ScrollView – Pull to Refresh by The SwiftUI Lab
- My takeaway from working with SwiftUI by Abbas T. Khan
- SwiftUI & Combine: Better Together by Peter Friese
- The Simple Life(cycle) of a SwiftUI View by @dbolella
- Modal View in SwiftUI by Denis Chashchin
- SwiftUI Layout System: An In-Depth Look by Alexander Grebenyuk
- SwiftUI Data Flow by Sarah Reichelt
- Clean Architecture for SwiftUI by @nallexn
- Programmatic navigation in SwiftUI project by @nallexn
- 8 Amazing SwiftUI Libraries to Use in Your Next Project by @rudrankriyam
- The Inner Workings of State Properties in SwiftUI by Zheng
- Say Goodbye to SceneDelegate in SwiftUI by Zheng
- Infinite List Scroll with SwiftUI and Combine by Yet Another Swift Blog
- View Communication Patterns in SwiftUI by Yet Another Swift Blog
- SwiftUI Previews at Scale by Yet Another Swift Blog
- Using UIView and UIViewController in SwiftUI by Yet Another Swift Blog
- How the SwiftUI View Lifecycle and Identity Work by DoorDash Engineering Blog
- Improving SwiftUI Navigation for the Coordinator Pattern by John Patrick Morgan Blog
? Unit Testing
- Writing testable code when using SwiftUI by @JohnSundell
- ViewInspector by @nallexn
- Unit testing SwiftUI views by @nallexn
UI Testing
- Testing SwiftUI Views by Yet Another Swift Blog
? Xcode Extensions
- nef - This Xcode extension enables you to make a code selection and export it to a snippets. Available on Mac App Store.
- SwiftUI Recipes - companion app and Xcode extension for adding 70+ community-sourced SwiftUI recipes to your code. Available on Mac App Store.
? Repositories
- 100 Days of SwiftUI & Combine Repo to follow along with Hacking with Swift's 100 Days of SwiftUI Challenge.
- Currency Converter & Calculator A currency application for most of the currencies in the world. You can quickly convert and make mathematical operations between currencies.
- SwiftSunburstDiagram A library written with SwiftUI to easily render sunburst diagrams given a tree of objects.
- SwiftUI.
SwiftUI
Framework Learning and Usage Guide.
- SwiftUITodo. An example to-do list app using SwiftUI which is introduced in WWDC19.
- KeyboardAvoiding. A SwiftUI view that manages a UIViewController that responds to keyboard events with modified additionalSafeAreaInsets.
- DispatchStore. Swift package that implements an operation based, multi-store à-la Flux for SwiftUI.
- GitHubSearchWithSwiftUI. SwiftUI based GitHubSearch example.
- SwiftUI-MovieDB. SwiftUI MovieDB prototype app built with Xcode 11 Beta & macOS 10.15 Catalina.
- WWDCPlayer. ? WWDC19 player using SwiftUI.
- MyDogs. A simple SwiftUI example for testing Lists, BindableObject, State management and Network.
- MovieSwiftUI. SwiftUI & Combine app using MovieDB API.
- CryptoTickerSwiftUI. Example project using a websocket API and SwiftUI to displays latest BTC-USD trade. (Latest Bitcoin price)
- SwiftUIRedux. Comprehensive Redux library for SwiftUI, ensures State consistency across Stores with type-safe pub/sub pattern.
- SwiftUI-Combine. This is an example project of SwiftUI and Combine using GitHub API.
- SwiftUITimeTravel. An experimental time traveling state store for SwiftUI.
- SwiftUI_Jike. SwiftUI imitation app interface (Build Jike App with SwiftUI).
- 2048. A 2048 game writing with SwiftUI.
- SwiftUI-Landmarks. Introducing SwiftUI. A declarative way to create User Interfaces with Swift.
- SwiftUI-Flux. This is a tiny experimental application using SwiftUI with Flux architecture.
- SwiftUI-by-Examples. Examples of new SwiftUI framework.
- SwiftUICalculator. A calculator app using SwiftUI which is introduced in WWDC19.
- InstaFake-Swift-UI. Swift UI Demo for an instagram copy.
- SwiftUITheme. A first idea to style SwiftUI Views.
- Lists_-_Navigation_SwiftUI. Exploration of Apple Developer's SwiftUI tutorial, detailing how to build lists and enable navigation between views with #SwiftUI.
- injectable. A micro framework that leverages Swift Property Wrapper to implement the Service Locator pattern.
- SwiftWebImage. SwiftUI image downloader for BindingObject with performant LRU mem/disk cache.
- NetworkImage.swift. Basic NetworkImage support for SwiftUI via Kingfisher
- SwiftUI-Combine-todo-example. A to-do list app using SwiftUI and combine with restful api.
- Bindings.swift. Re-implementation of @binding and @State (from SwiftUI) myself to better understand it.
- Contacts.swift
- CombineUnsplash. Exploring SwiftUI + Combine + Result by using Unsplash API, with detailed code explanation.
- RemoteImage.swift. Rough sketch of SwiftUI RemoteImage using AlamofireImage.
- CombineFeedback. Unidirectional reactive architecture using new Apple Combine framework.
- Harvest. ? Harvest: Apple's Combine.framework + State Machine, inspired by Redux and Elm.
- Redux HandlingUserInput. HandlingUserInput tutorial showcasing redux style of state and change management.
- SwiftUI-Cheat-Sheet. SwiftUI Cheat Sheet.
- swiftui_shadow_and_border.swift. Testing SwiftUI. Adding shadow and corner radius to a View. Strange behavior depending on View background color.
- SwiftUI-MVVM. Sample iOS project built by SwiftUI + MVVM and Combine framework using GitHub API.
- SwiftUI-Circular.swift. Rough attempt at creating a container view that lays out its children in a circle.
- NotesApp.swift. A notes app written in >100 lines of swift using SwiftUI.
- UnsplashSwiftUI.
UnsplashSwiftUI
A simple app powered by SwiftUI and Unsplash
- AniTime. Anime schedule, korean subtitle for iOS with SwiftUI + Combine and MVVM architecture
- Fluxus. Flux for SwiftUI, inspired by Vuex.
- ChartView in SwiftUI. Easy to use animated Chartview supporting
Bar and Piecharts
- Weather. ? A simple SwiftUI weather app using MVVM.
- Chat. A basic SwiftUI chat app that leverages the new
URLSessionWebSocketTask
.
- toBlockingArray for Combine. Acts like RxBlocking, for writing tests using the Combine framework.
- ImageWithActivityIndicator. SwiftUI view that download and display image from URL and displaying Activity Indicator while loading. Demo
- ?? Burritos. A collection of Swift Property Wrappers (formerly "Property Delegates").
- Hackery A HackerNews client made using SwiftUI.
- SwiftUI-Redux-Todo Example An opinionated React/Redux inspired Todo example.
- Currency Converter. A Currency converter app.
- bottombar-swiftui. BottomBar component for SwiftUI
- DealStack. Simple card stack implemented with SwiftUI
- SwiftUI-PathAnimations. Tools for SwiftUI that helps perform Path and Shape animations
- CombineBookSearch. SwiftUI + Combine + MVVM architecture.
- YanxuanHD, The iPad version of '网易严选' iOS app
- Babylon demo MVVM with a project-level separation of layers and a leaf
View
framework.
- RKCalendar Simple SwiftUI Calendar / Date Picker.
- Morphi Additional
Shape
for SwiftUI.
- ⏯ VideoPlayer, A video player for SwiftUI.
- DrawerView-SwiftUI A drawer view with certain customizability implemented by SwiftUI.
- SwiftUIX An extension to the standard SwiftUI library.
- SwiftUI-Router. A routing system proof-of-concept based on React Router.
- SwiftUI ColorSlider. Dynamically select a color from a color gradient slider.
- ⌨️ KeyboardObserving A Combine-based solution for observing and avoiding the keyboard in SwiftUI.
- ☑ Calculator Checklist Recreation of calculator-checklist project in SwiftUI.
- Arrival BART app writen entirely with SwiftUI
- SF A Small SFSymbols SwiftUI Enum.
- Pull to Refresh SwiftUI pull to refresh for List, NavigationView
- ConnectFour A basic Connect Four game built with SwiftUI
- Modal View A simple and safe way to display Modal views in SwiftUI
- SwiftUI CompatKit ? A framework to add missing UIKit Controls to SwiftUI ?
- SDWebImageSwiftUI. SDWebImage integration for SwiftUI. Supports async image loading, caching, as well as animated image playback like GIF, APNG and Animated WebP.
- FlipClock-SwiftUI Flip clock implementation in SwiftUI
- CountdownFilmClutter-SwiftUI Old fashioned countdown film clutter in SwiftUI
- ??SwiftUI-Presentation SwiftUI explained in Turkish and prepared a demo application.
- Sliders. Custom sliders and tracks for SwiftUI.
- Pages A lightweight, paging view solution for SwiftUI.
- PartialSheet A SwiftUI modifier to show a Partial Modal Sheet based on his content height.
- Clock time picker. A clock face with draggable hands to pick the hour and minutes of your date.
- ?? SwiftUI-WeChat Learn how to make WeChat with SwiftUI. 微信 7.0 ?
- Weather App with MVVM and CoreML This demo is very simple project, which designed to understand SwiftUI. It includes Main screen, DayList screen and detail screen.
- Verge A Store-Pattern based data-flow architecture for iOS Application with UIKit / SwiftUI. Inspired by Redux and Vuex.
- Clean Architecture for SwiftUI A demo project showcasing the production setup of the SwiftUI app with Clean Architecture.
- SwiftUI-Introspect Introspect underlying UIKit components from SwiftUI.
- ?️ Lazy-Pop-SwiftUI Modifier that allows swiping on any part of the screen to start an interruptible pop animation to the previous view.
- Login-with-Apple-Firebase-SwiftUI SwiftUI component that handles logging in with Apple into Firebase. Complete tutorial in the README.
- Awesome-SwiftUI A curated list of awesome SwiftUI tutorials, libraries, videos and articles.
- GrowingTextView-SwiftUI Growing text view implemetation in SwiftUI
- ActionOver A SwiftUI modifier to show an Action Sheet on iPhone and a Popover on iPad and Mac. Write just once the actions for the menus.
- ?CardStack A easy-to-use SwiftUI view for Tinder like cards on iOS, macOS & watchOS.
- Floating Tab Bar A floating tab bar made in SwiftUI
- iOS Calculator Clone for iPadOS using SwiftUI A clone of the native iOS built-in Calculator for iPadOS using SwiftUI, mimicking the native Calculator UI and funtions.
- StepperView SwiftUI iOS component for Step Indications
- ? UrbanVillageProjectScreens Recreations of the Urban Village Project concept screens.
- ? SharedObject A new property wrapper for SwiftUI
ObservableObject
.
- ? BetterSafariView A better way to present a
SFSafariViewController
or start a ASWebAuthenticationSession
in SwiftUI.
- MGFlipView allows to create flipping view in easy way without worrying about flipping animation and flipping logic.
- SwiftUIListSeparator View extension to hide/modify List separators in SwiftUI iOS13 and iOS14.
- InfiniteScroller Horizontal and Vertical collection view for infinite scrolling that was designed to be used in SwiftUI
- SwiftUI Tooltip SwiftUI Tooltip implementation that works on all platforms and supports SwiftUI v1.0
- SVG to SwiftUI SVG to SwiftUI Shape converter
- Clendar Clendar is an open-source & universal calendar app, written in SwiftUI.
- Corona Widget ? open-source iOS 14 widget to get latest stats on Covid-19.
- URL-Image ? Open-source solution for quickly displaying
Images
via URL.
- SFSafeSymbols A SF Symbols enum that safely automatically updates upon build.
- Confetti-View ? A simple confetti view for apps using SwiftUI.
- Open Source SwiftUI Documentation ? open-source SwiftUI documentation!
- SwiftUICharts A simple line and bar charting library that supports accessibility written using SwiftUI.
- MarkdownUI Render Markdown text in SwiftUI.
- Instasoup Instagram home page SwiftUI implementation.
- FlowStacks Coordinator pattern in SwiftUI.
Layout ?
- ASCollectionView A SwiftUI collection view with support for custom layouts.
- QGrid The missing SwiftUI collection view.
- FlowStack. A grid layout component.
- GridStack. A flexible grid layout view for SwiftUI.
- WaterfallGrid. A waterfall grid layout view for SwiftUI.
- Grid. SwiftUI Grid with custom styles.
? Videos
- SwiftUI Sneak Preview Demo Project
- How to Run SwiftUI on Mojave with Playgrounds and Sample Code
- SwiftUI Basics: Dynamic Lists, HStack VStack, Images with Circle Clipped Stroke Overlays
- SwiftUI: Facebook Complex Layouts - Horizontal Scroll View
- SwiftUI Basics Tutorial
- SwiftUI App Tutorial - Lists, Navigation and JSON Data
- SwiftUI Presenting Data In A Scroll View & List
- Intro To SwiftUI: Simple State Management
- Before You Learn SwiftUI, You Need To Hear This...
- SwiftUI = Mind-blow - WWDC iOS developer reaction
- SwiftUI - DON'T LEARN IT (JUST YET)
- SwiftUI Beginner Tutorial On iOS 13 by Devslopes
- 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
- NavigationView and NavigationButton - Push View in SwiftUI
- What's behind SwiftUI DSL? - Swift Function Builders - Following Swift Evolution
- Let's Code SwiftUI (WWDC 2019 Preview) - Lesson #00 - Über das Let's Code
- SwiftUI - Understanding State
- SwiftUI - Lists - Create Something like UITableView
- ?? SwiftUI: Primeros Pasos en Xcode 11 e iOS 13
- ?? SwiftUI + Xcode 11: Descubre Swift Package Manager y SF Symbols
- SwiftUI Tutorial - Create a list that fetches JSON
- SwiftUI Complete Apps #1: Build a dynamic list app with navigation and images – Tutorial
- Complex UI with SwiftUI from Start to Finish
- SwiftUI in UIKit? Yes! Meet DuckUI - Full Course
- SwiftUI and State Management: Part 1
- SwiftUI and State Management: Part 2
- Orient Views Along Circular Motion Path
- SwiftUI-CSS, The missing CSS-like module for SwiftUI
- SwiftUI Live: Building an app from scratch
Apps
- DetailsPro - Design tool for SwiftUI
- Vulcan An app for creating SwiftUI apps.
❤️ Contributing
Feel free to contribute!! This repo is yours.