SwiftUI, is it ready?
Maybe you’re brand new to iOS development or you’ve got some experience building cross-platform apps for iOS and you’re ready to dive into the native ecosystem, but between Swift, SwiftUI and UIKit you’re not sure where to start. If you Google “iOS Development Tutorials,” at least half of the results will be titled something like “Learn iOS Development with SwiftUI,” or at least include SwiftUI as an important module. This is the decision point for a lot of developers new to native iOS and even those with years of native development experience, is it time to learn SwiftUI?
What is SwiftUI? SwiftUI is not a new language for iOS development, it is a declarative UI framework or, a set of programming tools, used for building user interfaces, allowing me to tell the device what to do instead of how to do it. In Apple’s words: “SwiftUI helps you build great-looking apps across all Apple platforms with the power of Swift — and as little code as possible.”
Three years ago, at WWDC19, Apple introduced SwiftUI as an alternative to UIKit, the original UI framework, which has been part of the Developer SDK since it released in 2008. Will SwiftUI eventually replace UIKit? I think so, if I read into this statement by Apple: “With SwiftUI, you can bring even better experiences to all users, on any Apple device, using just one set of tools and APIs.” The “even better experiences” is key to why I think Apple has a long-term roadmap for moving away from UIKit as the dominant framework. UIKit will always be part of the native ecosystem backing up SwiftUI, in the same way Objective-C still supports Swift in some aspects.
Swift itself is the programming language for native, iOS development, it was first released in 2014 and even with Apple’s statement of, “a majority of the top 1,000 apps are built with Swift” almost all iOS developers are using it exclusively to build their apps. The rest of the top 1,000 apps have either been around forever (before 2014), or are built with a cross-platform framework like React Native or Flutter.
Time to decide
If you review the top tutorials, I’ll add a few of my favorites below, you’ll think SwiftUI is the most important part of learning native development, but if you browse job boards, almost no employers include SwiftUI in their job listings. Most listings include Swift, a few may include UIKit and only one or two will mention SwiftUI. In preparing for this article, I worked the salt mines of Google, looking for any stats of how many apps in the App Store are built solely with SwiftUI and found nothing official. Trolling through Reddit, I did find anecdotal evidence that a few developers have built and published apps with SwiftUI, but nothing that would create a blip on a bar chart.
With SwiftUI Release 2, announced at WWDC20 and publicly available with iOS 14, you could build a complete app, albeit with some limitations, using SwiftUI as the only UI framework. With the release of SwiftUI 3.0, announced this week and available publicly with iOS 15 this fall, Apple is “focused on supporting even deeper adoption of SwiftUI in apps with a great set of rich new features.” Many developers, this one included, will be spending our summer unpacking this and determining just how far we can now go with SwiftUI. All that said, with SwiftUI now in its third year, as of this week, this developer says yes, it’s time to learn SwiftUI.
SwiftUI saves buttons! 🎉
One important announcement on just day two of WWDC is that SwiftUI will bring borders back to buttons with this third release! If you’ve followed iOS over the years, you’ll remember the old days of interfaces looking like real world items, torn paper, green felt, etc. Apple did this to help us understand how to use the interfaces and once they decided we had figured things out, everything went flat and borders were removed, hurray, a blue word is now a button! This has worked fine over the years and if you really miss your buttons, you could turn them back on with Accessibility, but I’m very happy to see bordered buttons returning with SwiftUI.
Where to start
So it’s time to learn Swift and SwiftUI, how about some direction on how to get started and where to go for quality, free tutorials.
- You need a Mac, anything able to run MacOS 11 (Big Sur) and probably from 2015 or newer. I’m running just fine on a mid-2015 MacBook Pro with the latest version of MacOS and Xcode, so don’t feel like you need to break the bank for something brand new, find something used and see if you like iOS programming first. Not ready to buy? You can even rent a Mac for as little as $25 a month from some providers, check here for a full guide.
- Install Xcode. Whether you’re on a new or used machine, you’ll need to first fully update to Big Sur then install the latest version of Xcode from the Mac App Store. It’s completely free and has everything you need to build and test an app.
- Pick a tutorial, start learning and start building!
If you want to eventually publish your blockbuster app, you will need a paid developer account, $99 USD per year, but you won’t need to pay to test your app on a simulator or your own device, so hold off on the paid account, until you’re ready to publish.
Great tutorial providers
As promised, here are a few of the people I consider my own mentors who have helped me in my own native iOS learning journey:
raywenderlich.com — probably one of the oldest iOS tutorial providers on the Internet. Ray started posting iPhone development how-to’s in 2010. A lot of their content is paid, but more than enough is free to help you get started. The paid content is very much worth it when you’re ready to dive deeper.
hackingwithswift.com — Paul Hudson started HackingWithSwift shortly after Swift released in 2015 and is probably one of the nicest guys on the Internet. He posts frequently on YouTube and has several great, free courses online, including 100 Days of Swift and 100 Days of SwiftUI, both recommended!
codewithchris.com — another long-term blogger and iOS teacher, since at least 2012. Chris posts quality tutorials on YouTube, at least weekly, and has several high-quality paid courses when you’re ready to move up to the next level.
What do you think?
Where are you in your native development journey? Let me know in the comments below. Are you a diehard SwiftUI fan, have you been building with SwiftUI since 2019? Are you a brand new developer just trying to find your way? Or, are you somewhere in between, eyeing SwiftUI, trying to decide when to dive in. Please let me know your thoughts and let’s have a conversation.
Good luck on your journey and let us know what you think about SwiftUI and any of the other great announcements from this week at WWDC.