# Understanding SwiftUI - What is SwiftUI? 🧐

# Requirements

* The **minimum deployment target version is iOS 13** and above.
    
* SwiftUI development is supported by **Xcode version 11** and above.
    

# The basics

* SwiftUI is a **UI Design Framework** just like its predecessor, the UIKit.
    
* It uses the **Declarative** programming approach as opposed to Imperative programming.
    
* In simple words, we inform the framework of **what** should be done based on a state change and it handles the rest.
    
* Whereas in the Imperative approach, we keep track of the state and instruct the framework on **how** to change the UI.
    
* SwiftUI uses **struct** to create views **instead of class**.
    

# Pros

* SwiftUI helps developers write **simple, clean and less code**.
    
* It **manages the state better** than the Imperative approach of UIKit.
    
* Supports **cross-platform development for iOS/iPadOS, macOS, tvOS and watchOS**.
    
* It uses **Live Previews** instead of building the project to view UI changes.
    
* There are **no auto layout issues** as it always generates satisfiable layouts.
    
* People working in teams **no** longer have to suffer **merge conflicts in storyboards**. 😜
    
* It can be used **alongside UIKit using UIHostingController**.
    
* It supports **reactive programming using ObjectBinding, BindableObject and the Combine Framework**.
    

# Cons

* Users with iOS version 12 and below will not be able to use apps developed with SwiftUI.
    
* Team development might take more time as others might not be familiar with SwiftUI.
