SwiftUI Is Not Yet Ready — UIKit is still the way to go!

Sid Thomas
4 min readDec 12, 2022

SwiftUI is a new user interface framework for building iOS and macOS applications. Since its introduction at WWDC 2019, it has generated a lot of buzz in the development community, with many developers excited about its potential to make app development easier and more efficient. However, despite its promise, SwiftUI is not yet ready for use in production, and developers who want to build great apps today should still consider learning UIKit.

  1. Limited API coverage: As mentioned previously, SwiftUI does not yet have the same broad API coverage as UIKit, which means that some features and functionality are not yet available in SwiftUI. For example, if you want to create a custom interface for your app’s settings, you would use the UITableView class in UIKit, but there is currently no equivalent in SwiftUI. This means that developers must either use a workaround or stick with UIKit for these types of features.
  2. Limited adoption: Because SwiftUI is only available in iOS 13 devices or later, many existing apps cannot use it and will continue to rely on UIKit for the foreseeable future. This means that if you want to work on an existing app, you will need to be proficient in UIKit in order to do so. Additionally, if your app needs to support older versions of iOS, you may not be able to use SwiftUI at all.
  3. Limited support: As a new framework, there is limited support available for SwiftUI, both in terms of documentation and community support. This can make it difficult for developers to find answers to their questions or troubleshoot issues they may encounter when using SwiftUI. In contrast, UIKit has been around for many years and has a large and active community of developers who can provide support and guidance.
  4. Lack of backwards compatibility: Because SwiftUI is not backwards compatible with earlier versions of iOS, developers must choose between supporting older devices or using SwiftUI. This can be a significant limitation for developers who need to support a wide range of devices, or who want to use the latest features of SwiftUI.
  5. Limited customization options: SwiftUI has fewer customization options than UIKit, which can make it difficult to create unique or complex user interfaces. For example, if you want to create a custom layout for your app’s navigation bar, you would use the UINavigationBar class in UIKit, but there is currently no equivalent in SwiftUI. This means that developers must either use a workaround or stick with UIKit for these types of customizations.
  6. Slow performance: In some cases, SwiftUI can be slower to render complex user interfaces compared to UIKit. This can impact the overall performance of an app, particularly on older devices or when displaying large amounts of data. For example, if you want to display a large table of data in your app, you would use the UITableView class in UIKit, which is optimized for displaying large amounts of data efficiently. In contrast, the equivalent List view in SwiftUI may not perform as well, especially on older devices.

While SwiftUI is an exciting new framework that has the potential to make app development easier and more efficient, it is not yet ready for use in production. Developers who want to build great apps today should still consider learning UIKit, as it has a broader range of APIs, is more widely adopted, and has more support available. By learning UIKit, developers can ensure that they have the skills they need to build great apps today, while also keeping an eye on the future and preparing for the eventual widespread adoption of SwiftUI. For example, if you want to build an app that needs to support older versions of iOS or work on an existing codebase, UIKit is still the best choice. Additionally, even if you want to build a new app using SwiftUI, having a solid understanding of UIKit can help you troubleshoot any issues that arise and provide a foundation for your development skills.

In conclusion, while SwiftUI is a remarkable user interface framework and is likely to be the future of app development on Apple’s platforms, it is not currently ready for production in many cases due to its limited API coverage, limited adoption, and limited support. Developers who want to build great apps today, or who need to support older versions of iOS, will likely need to have some knowledge of UIKit in addition to SwiftUI in order to be successful. However, for those who are just starting out with app development, or who want to experiment with new ideas, SwiftUI can be a great tool to learn and use.

--

--

Sid Thomas

Writer. Developer. Productivity Guru. I’m always happy to share my thoughts for you to achieve everything you’ve ever wanted!