Great development frameworks make creating and maintaining apps easier. Like developers for so many platforms, iOS developers have tons of options when it comes to app development frameworks.
Picking the ‘best’ framework is impossible. Every developer has unique needs, and their choice of frameworks and languages is necessarily subjective. Although iOS developers are building a variety of apps and games, Apple is dogmatic about how its platforms work and how developers can utilize tools and services, which makes picking a solid all-around framework a bit easier.
We queried several experts to find out which frameworks they recommend. While some of their picks were obvious, a few are pretty surprising.
“React is handy in simple projects when budget and time might be an issue,” Boris Abazher, CEO of Triare, said. “This framework offers familiar UX patterns and the same high quality of apps thanks to Views, Text, and Images as native UI building blocks. It is also helpful to know that React's community is the biggest among these frameworks.”
We will advise you use React Native cautiously for iOS, or any other Apple platform. In 2017, Apple began blocking white-label apps from appearing in the App Store; the move was at least partly in response to a letter to Apple from congressman Ted Lieu concerning template apps. Apple’s updated developer rules add: “Apps created from a commercialized template or app generation service will be rejected.”
It’s also worth mentioning the white-label apps Apple banned have since reappeared—sort of. White-label apps were simplistic experiences, often just web pages or other features bundled as apps. App Clips, a new feature from Apple, allows app developers to offer experiences, such as viewing a menu, without downloading an entire app.
Among our panel, SwiftUI was widely viewed as the single framework an iOS developer should learn in 2021. If you’re going to learn just one framework, make it SwiftUI.
Yevhenii Peteliev, Software Engineer at MacPaw, gives the best overview of why SwiftUI is an excellent choice:
With SwiftUI, all developers’ thoughts are focused on what functionality the application will have, not how to implement that functionality. This approach significantly speeds up development, which is good news for engineers. It's also worth mentioning that SwiftUI is available across the entire Apple ecosystem, which means developers can write apps for multiple platforms at the same time, which is amazing.
In the future, it will be possible to forget that previously UIKit framework was used exclusively for iOS, and AppKit for macOS. Moreover, SwiftUI allows your product to support various system settings out of the box, be it the appearance of the system or dynamic fonts.
Dane Hale of Twin Sun Solutions likens Flutter to SwiftUI, telling us: “Frameworks like SwiftUI and Flutter help developers make better apps in several ways, with efficiency being the main benefit. One of the main benefits that makes these frameworks super-efficient is they are able to target several products, form factors, and operating systems all with a single code base.”
Hale points out Flutter’s advantage may be its maturity: “Flutter does have a wider reach than SwiftUI due to SwiftUI only reaching different products within Apple’s ecosystem. Flutter can reach all the popular mobile operating systems, the web, Linux, and Windows.”
“Ionic permits to deliver a cross-platform app for all devices more conveniently given a 98 percent code reusability,” Abazher said. “It also has a simple architecture.”
The Ionic framework has a bespoke API library and native mobile toolkit that can be distributed anywhere. Ionic is great for those who know Angular, underscoring another point from Abazher: “Developers choose a framework based on their professional background.” If you have already mastered a language, find a framework that’s suitable to your area of expertise when available.
Out of left field comes Tim Kersey, Senior Software Engineer at Carbon Five, tossing the KMM (Kotlin Multiplatform Mobile) hat into the ring:
"Kotlin Multiplatform Mobile (KMM) enables the use of a single codebase for sharing business logic between native iOS and Android apps by writing it once in Kotlin. Apps that mostly consist of UI logic won’t reap the full benefits of KMM. Apps that have complex business logic for features like networking, authentication, analytics, data synchronization or complex computations can benefit from writing this logic in Kotlin and sharing between iOS and Android.
"KMM integration can be executed incrementally by taking one existing feature implemented in Kotlin and making it cross-platform. Whenever a feature is not solvable by using shared code or the use of a specific native feature is required, platform specific code can be seamlessly integrated. KMM is now in Alpha and the Kotlin team is fully committed to improving and evolving the technology."
It's an interesting position. Like SwiftUI, KMM is a native-first framework for creating back-end logic for bespoke platform experiences. Though there is a Swift for Android, Kersey notes, “With Swift on Android it is technically possible to compile Swift code for Android and even create an APK, but it is still far from easy. In fact, for most it is really still not possible.”
Choose SwiftUI or Stay in Your Bubble
Based on our developer feedback, it seems that iOS developers should be choosing SwiftUI, even though it needs a lot of work. It’s native to Apple platforms, familiar to Xcode users, and will have the bells and whistles you need for working across Apple’s ecosystem.
Those unfamiliar with Swift, iOS, or Apple’s developer tooling should follow Abazher’s advice and find a platform suitable to the language you’re familiar with. It’s sound advice for a few reasons; if you’ve not yet learned Swift, chances are good that your needs on the iOS platform are basic, and any framework that helps you build a good app will do.
Second, using a framework for a language you already know will keep things familiar and manageable. Supporting the app and adding features shouldn’t require continuous learning of another language… unless you really need to take advantage of deep tooling for iOS.