Table of Contents
What is UIKit and SwiftUI
UIKit is a programming interface. SwiftUI is an application framework. Both platforms are built around the same principles and technologies, you might say they are siblings, or cousins. You can use SwiftUI to build a native or hybrid application. For example, if you want to develop an iPhone app, SwiftUI is your best choice. If you want to develop cross-platform apps for iOS, Android, Web, TV and Mac, SwiftUI is also a great choice.
What is UIKit?
UIKit consists of a set of iOS frameworks that let you build an app’s user interface. It includes the UIKit framework along with its elements like UIView , UILabel , UIButton and so on. It was introduced in 2011 on iOS 5 and has been updated ever since. The framework provides the basic elements that you use to build an app’s user interface. The elements are grouped into categories like UI, Text and Animation.
What is SwiftUI?

How they are different
UIKit is a UIKit extension framework that conforms to the UIViewController , UIPageViewController , and UISplitViewController protocols. The framework provides a consistent API design across different platforms, making your code simpler, cleaner and more readable. SwiftUI is a Swift programming language application framework. It provides an expressiveness similar to Objective-C while retaining performance characteristics of native code. Together, they provide the best value for iOS developers. There are a lot of similarities between the two frameworks and the differences aren’t necessarily big, but it sure does make for an interesting discussion. Some of the principal differences between the frameworks include:
UIKit works with UIKit containers such as UIView , UIViewController or UIPageViewController , while Swift UI works with classes such as UIView , UIViewController and UISplitViewController . [Note: A container is an object that can contain views that are like windows to display relevant information.]
UIKit provides a consistent view controller hierarchy. By default, every object is a view controller and can be placed in containers such as UIView and UIViewController , while SwiftUI provides a class hierarchy of UIView and UISplitViewController . [Note: A view controller is an object that can contain views that are like windows to display relevant information.]
UIKit does not provide any built-in support for animation, except for the Storyboard scene animation framework. SwiftUI provides a built-in control that supports all types of layout animation.
UIKit does not support custom controls, while SwiftUI supports an even more comprehensive programming model.
Pros and cons of each framework
You may have noticed that a lot of UIKit’s components and functionalities are closely related to the view controller paradigm. This is true of both SwiftUI and UIKit. However, SwiftUI does away with most of what you can call this paradigm, for example, nibs. If you are familiar with the iOS SDK, you will notice some differences here or there too. Apple’s official documentation on working with UIKit has fewer examples and is less detailed than its counterpart documentation on working with SwiftUI. SwiftUI is considered more concise and readable when compared to UIKit, for example in the following program examples. Please note that these are code samples only and are not necessarily representative of the best practices.
#1: What is the difference between UIView and UIViewController?
UIView is the root element of your view hierarchy. It can contain child elements such as UIButton, UIImageView and more. While it may seem like a UIView contains a lot of components, you can simplify things by removing these extra components. The reason you want to remove certain components is because they could result in unnecessary overhead as they are managed by a paint engine/framework. For example, we could simply remove the UIImageView or UIButton by setting its background color to clearColor. In the following example, the button has a clear background which provides a simple way of styling and animating a button.

When to use one or the other
The most important thing is to make the application you are making work on whatever platform is required. This means that the whole system architecture of the application should be designed for these platforms (iOS, OS X and tvOS) from the start. In this case, SwiftUI and UIKit have no advantages over each other, so choosing one will surely depend on various factors among which you should consider the customer’s requirements or target market. At the same time, the API design of each framework is not completely identical. The UIKit API uses C-style-pointers to indicate relationship and attachment to views. This can cause extra confusion for beginners to Objective-C programming. In iOS SDK, it’s much easier to use UIViewController ‘s view property and corresponding setters/getters/deletes methods because it’s not possible to create such deep dependencies in Swift.
If you are starting a brand new application, it depends mostly on your programming preference. If you have already created something in Swift and don’t want to change the codebase, it’s quite simple to use SwiftUI. Otherwise, you will probably have to extend the existing application with SwiftUI components and let them work with UIKit views and controllers at once.
In summary, there is no obvious answer for this question. Both SwiftUI and UIKit generally work together, and it is possible that they complement each other.
(The author is a member of the iOS team at mograph)
[/ARTICLE END]
