Short quick series on mobile development
- second part: A bit off topic: Myths Debunked, the App Stores
I am realtively new to the board and Wappler, but i thought I could add some value to the mobile side of development
(Background information: I am a full time product manager and developer for web and mobile experiences and app development)
If this is usefull for the wider group, I am happy to share some bits and pieces around mobile app and web development over the time. If so, let me know and I add more basic information around this topic.
Lets start first with the different options we have to deliver mobile experiences to the customer.
When I say “mobile experience”, I mean specially designed experiences for mobile usage, like shorter user journeys for mobile (think of simplified sign up forms, replacing passwords with pins, push and in app notifications, animations and transistions to support communication) or targeted features like biometrical login or widgets for the home screen, to name a few.
Responsive Web
- Single Codebase for Desktop and mobile web (iOS, Android …)
- Not Distributable via App Stores
Usually one website that addapts between desktop and mobile views with little to no mobile experience.
(Historically, „responsive“ was used to adapt web sites for different desktop screen sizes or to support smaller window sizes and full screen windows. It was not really planned to use „responsive“ as a technology to scale down desktop full hd to a mobile mini screen. Bootstrap specifially with it’s „mobile first“ appraoch changed this.)
Mobile Web
- Two Codebases, one for desktop, one for mobile web (iOS, Android)
- Not Distributable via App Stores
Websites designed and build for mobile with targeted user experience, e.g. UI and user flows adapted for mobile users.
PWA
- Single Codebase for mobile web (iOS, Android)
- Not Distributable via App Stores (except TWA/Trusted Web Apps on Android)
A user „installable“ version (“add to home screen”) of the site with some offline capabilities and dedicated caching to get as close as possible to a mobile user experience with limited hardware support, like biometric login or camera access. PWAs run full screen without any browser ui and support a launch screen.
Apple has some limitations with regards to the PWA implementation, e.g. no notifications or deep linking into the PWA.
Wrapped PWA
- Single Codebase
- Distributable via App Stores
- Two native builds required (iOS, Android)
- Mac or remote build service required to support iOS
A PWA wrapped in a native core application (very thin layer, actually a web view without any UI). Wrapped PWA’s can be submitted to the App Stores, however Apple is not keen allowing browser based apps in the store, as Apple can’t control the content.
Google allows PWA directly in their stores (TWA, “Trusted Web Activities”). Publishing to a store allows a better user experience for distribution.
Hybrid (Capacitor, Cordova)
- Single Codebase for iOS and Android
- Access to device hardware through native wrappers
- Distributable via App Stores
- Two native builds required (iOS, Android)
- Mac or remote build service required to support iOS
Apps build using web technologies (HTML5, CSS, JavaScript), bundled together with a native application layer. Depending on the UI framework (Ionic, Konsta, Onsen, Framework7…) hybrids can look, behave and act like native applications and have access to the underlaying hardware by using native cross platform runtimes like Capacitor and Cordova. The final bundle is a fully native application.
Transpiled / Cross Compiled (React Native, Flutter, Xamarin, Codename One)
- Single Codebase
- Distributable via App Stores
- Synergy effects to backend development team (due to shared technologies, especially for Microsoft environments)
- Two native builds required (iOS, Android)
- Mac or remote build service required to support iOS
Cross compiler / transpiler allow to port, for example, C# or Java into runtime code for a native applilcation. Similar to Hybrids, they come with a runtime layer to execute the compiled bytecode on the mobile.
Native iOS / Android (Swift, Kotlin, Java)
- Two Codebases (iOS, Android)
- Distributable via App Stores
- Full native support of underlaying hardware
- Two native builds required (iOS, Android)
- Mac or remote build service required to support iOS
Full native development for iOS and Android. Typically used for applications that require access to specific device features or performance sensitive developments like 3D or VR games.