Hyperview: Native mobile apps, as easy as creating a website
hyperview.org
hyperview.org
0. DivKit by Yandex https://github.com/divkit/divkit
1. AdaptiveCards by Microsoft https://github.com/microsoft/AdaptiveCards
2. dynamic_widget(https://github.com/dengyin2000/dynamic_widget) and json_dynamic_widget(https://github.com/peiffer-innovations/json_dynamic_widget)f... Flutter
This client is key because it is what allows the uniform interface of HXML to function properly. I didn't appreciate how important the browser was (it's often forgotten in discussions around hypermedia on the web) until I saw how well Hyperview works and thought about why.
Of course this is more interesting because it’s modern and appears to work on the web. Maybe tires will be a worthy contractor of things like Flutter
https://github.com/apelegri/wechat-mini-program-wiki
https://developers.weixin.qq.com/miniprogram/en/dev/framewor...
Another option I like, which takes some minimal custom native programming, is to use Android/IOS native WebViews load your mobile-web app and use it as a mobile app.
Tech really does obey "worse is better" in the weirdest ways. Don't "web apps" exist to solve the "problems" of native apps? Yet 30 years later we're back to downloading native apps despite all of the downsides, but ironically these native apps are basically just showing a website anyway, but with none of the web advantages.
Ignoring that, and addressing your question: there are several things apps can do that websites can't, even if the app is really just a wrapped/packaged website (and actually HTML):
Native notifications
Background tasks
Full access to sensors
Access to file system and contact lists
Handler for system actions
Offline support (though this requires more work beyond a mere 'wrapper')
Also, don't underestimate the marketing/branding impact of having an app icon that's always there. Sure, you can get users to bookmark a site, but it's a very different action from having an app icon, and it opens and works in a different way. To techies this is a rather pointless distinction, but to most users this is huge.
But what prompted my post was the opening section of this page https://hyperview.org/docs/guide_introduction where they complain about their web developer and mobile app developer productivity. Why have a mobile app at all in that case?
The language itself doesn't really matter; that's not the interesting part. The fact that the UI is rendered natively on each client platform is what makes this project interesting.
> ...they complain about their web developer and mobile app developer productivity. Why have a mobile app at all in that case?
Because the business requires it? I'm not sure how that has anything to do with productivity.
At the end of the day they're using the system that we created, and they use it the way we tell them to, so we can hardly blame them for the design decisions we made.
For example, there's no technical reason bookmarks can't be added to the home screen via the app store, and appear more or less identically to apps.
It's basically a generalization of Server-Side rendering.
I'm interested in knowing the limitations of that approach besides the connectivity requirement.
Are complex data-based interactions easily implementable?
https://engineering.fb.com/2016/03/09/android/how-we-built-f...
I don't see why i should serve my app as XML, I can work with any backend technology i like using just React Native, as well as updating it instantly over the air. And the bottom table looks misleading too – no native elements in HTML5? why? ios safari surely provides native ui for HTML5 elements. no offline data for HTML5? this is not true, PWA exists
Security issues of course, so specific pages/sites might need permissions, as with webserial etc.
People who use the term “native app” incorrectly like this should… face difficult circumstances.
It's easy, instead.
It may render native components, but those components are still controlled by the non-native runtime, thus extra baggage.
It would definitely be using native UI components, which a normal web browser won't give you via the rendering engine.
But that's as native as it gets. The control logic for how those components operate outside of how they're internally built is likely done w/ React / JavaScript, instead of native.