4 ms·
You should consider your target audience and your own resources. For consumer facing apps, I'm not sure an hybrid (cordova / ionic / webview shell) approach is
by gldalmaso 8y ago
You should consider your target audience and your own resources. For consumer facing apps, I'm not sure an hybrid (cordova / ionic / webview shell) approach is really up to par, as the UX is really challenging to make right and performance will be lacking. That said, a native approach requires twice the codebase and twice the resources (man hours) roughly, so the challenge becomes maintaining feature parity and team expenses.
Apps targeted for B2B users are considerably more flexible in terms of UX, the goal is mainly to help users get stuff done, so hybrid is more viable here. Which is what we usually do with cordova. Some considerations to bear: using cordova, the team doesn't really get much expertise with the proper platform, so problems are sometimes harder to debug because of lack of developer maturity in the platform. You need to design with an eye to light performance requirements, which usually means facilitating inputs and maybe have a separate web interface for complex UI like dashboard and management.
If you absolutely have to share code between apps, your options are:
- hybrid approaches like cordova, or build your own native web view shell and load your web code manually
- react native, which is not v1 yet, and looking at it recently I'm personally not sold on it yet, many unkown unknowns to actually double down and build on it. But that's just my opinion.
- Black box compatibility frameworks like Xamarim, Nativescript and the like. They work by giving a common platform middleware that builds to multiple target platforms. There are a lot of trade offs here, specially the lack of control. If a feature is buggy or not supported there is little recourse.
- I have read some big companies share code via C++ bindings used natively on each platform (loaded in Java and Objective C). I imagine this technically "solves" the problem, as you can share code and build natively, though I have no idea what tooling there is to help with this, and imagine the developer experience gets the short end of the stick.
edit: typos
- nailer 8y agoInstagram is pretty popular, has a good UX and is built on a webview (ocne a year on a shitty connection the CSS doesn't load and you see it).
- slow_donkey 8y agoWow I wasn't aware but looks like they did start with webviews and migrated to native + react native
- pier25 8y ago> or build your own native web view shell and load your web code manually After a few Cordova and Electron projects I'm going to try this approach in my next project. I need to support 5 OS (Android, Chrome OS, iOS, macOS, Windows) and having a native UI for each platform is completely out of the question. I think a web UI is a valid approach. Not only it reduces dev time, but it also adds responsive features not available anywhere else. This is a great example of a web iOS done right: https://medium.com/missive-app/our-dirty-little-secret-cross-platform-email-client-with-nothing-but-html-aa12fc33bb02 https://medium.com/missive-app/our-dirty-little-secret-cross...
- Nelkins 8y agoXamarin (the code) is open source[0]. Only the bells and whistles (live code preview, integration with VS/VS4M, etc.) are closed source. I think. [0] https://github.com/xamarin/Xamarin.Forms https://github.com/xamarin/Xamarin.Forms ; https://github.com/xamarin/xamarin-android https://github.com/xamarin/xamarin-android ; https://github.com/xamarin/xamarin-macios https://github.com/xamarin/xamarin-macios