Feature \ App Type | HTML | Native | Node Native | Hybrid |
---|---|---|---|---|
Native Methods | ||||
Native UI | ||||
HTML / CSS UI | via WebView Component | via WebView Component | ||
MUI Components | ||||
Node.js | via NodeJS Component | via NodeJS Component | via NodeJS Component | |
Cross Platform | ||||
Environment | Android WebView | Android WebView | NodeJS | Android WebView |
Minimum APK Size | low (4MB) | low (4MB) | high (30MB) | moderate (10MB) |
An 'HTML' app is simply a foreground Android Webview showing a standard HTML/CSS/JS (web style) user interface. It can make app.* native Android calls via the JavaScript→Native bridge.
Advantages:
- standard web technologies and libraries to create UI.
- well documented in the web (W3Schools)
- Small APK size and memory usage
Disadvantages:
- More time consuming to develop, HTML/CSS experience required
- No native 'look and feel' of Android
A 'Native' app uses an invisible Android Webview to run the main JavaScript code, but the app's user interface is created with native Android controls via calls across the JS→Native bridge.
Advantages:
- Simple to use
- Direct access to browser features as Android WebView evolves (i.E. WebBluetooth, Canvas, WebAssembly, WebRTC)
- Small APK size and memory usage
Disadvantages:
- The performance is slower for complex UI (can be improved with cfg.Fast at the loss of DOM objects)
- Modern browser features might not work with older WebView versions
A 'Node Native' app runs the main JavaScript code inside a standard NodeJS instance instead of the WebView. User interface is made using native Android controls which are accessed using app.* methods. These native calls run via a custom NodeJS extension instead of the Js→Native bridge.
Advantages:
- Native UI + powerful server/IOT functionality all in one
- Access to many thousands of free 'npm' modules for extending app functionality
- Higher performance when creating complex native user interfaces
Disadvantage:
- Large APK size, more memory usage
A 'Hybrid' app runs the main JavaScript code inside a foreground Android WebView, the users creates the UI programatically like with 'Native' apps, but it's rendered inside the same WebView using HTML/CSS instead of using native Android controls across the bridge.
Advantages:
- Simple and fast to use
- WYSIWYG editor available
- Industry standard 'Material' look and feel
- Low memory usage, Smaller APK
- Cross-Platform compatible, since it is just HTML/CSS in the background
- No JS→Native bridge required for rendering UI (build complex UI faster)
- Switch between light and dark theme at runtime
Disadvantages:
- Fewer customization options for look and feel
- app.* and NodeJS features break cross-platform compatibility