One shopping app, three ways to build it
Imagine the same shopping app for iPhone and Android. In each approach, people install a version made for their phone:
- Native: Write an iPhone version using Apple’s coding language and ready-made screen parts, such as Swift and SwiftUI. Write an Android version using equivalents such as Kotlin and Jetpack Compose. Each system also provides code for phone features like the camera. Much of the screen code is written separately.
- Cross-platform without web pages: Write most of the app once and use that code to build both versions. React Native uses each phone system’s screen controls; Flutter draws its own screens. Neither needs a built-in browser to display the app.
- Hybrid: Build screens with website code and show them in a browser built into each installed app. The same screen code can be used on iPhone and Android.
How the labels fit together
Cross-platform means reusing code between iPhone and Android. Hybrid means showing website-built screens inside the installed app. A hybrid app can be cross-platform, but shared code does not have to be hybrid: React Native and Flutter build apps for both phones without showing their main screens as web pages.
Here, native means the team writes most screen code separately for each system. Cross-platform apps can still use Apple’s and Google’s tools behind the scenes.
Whichever way the app is built, teams still need to handle differences in notifications, purchases, accessibility and app-store rules.