4 ms·
I want to throw Ionic and Capacitor (or any other webview based toolkit with your favourite SPA framework) into this mix, I believe for a lot of apps its probab
by samwillis 5y ago
I want to throw Ionic and Capacitor (or any other webview based toolkit with your favourite SPA framework) into this mix, I believe for a lot of apps its probably a better option than either Flutter or React Native. I also don't and believe in "one true cross platform toolkit", each has its place. So:
Hiring - The OP suggests React Native has a larger pool of developers than Flutter, very true. But Ionic/Capacitor/etc you have access to an even larger pool of developers, any proficient font end web developer.
Sharing Code, Knowledge, and Developers - Again I believe Ionic/Capacitor/etc are even better than React Native here, you can potentially reuse even more of your code/views/logic. In fact your SPA web app version is your mobile app, except you then have access to native apis with Capacitor.
Developer Experience - Dev experience with Ionic/Capacitor/etc is as good a React Native at this point. It has all the hot reload features we now expect from any SPA framework. You can even now you Vite for super speedy development.
Performance - A webview based app on hardware less than five years old is on par with any React native app. The performance of web views is not the issue, it's the underling app code, modern SPA frameworks and good engineering is all you need.
Unified UI Experience - Firstly customers don't really care about a unified UI, they have been trained after 20 years of using web apps not to care. If it works it works. Having said that Ionic have done an incredible job of replicating the Material/iOS components.
Native Integrations - Capacitor has all your usual apis covered, if you need more it's as simple as with React Native to drop down to native with Swift or Kotlin. I'm a fan of using NativeScript with Capacitor, it gives you access to all native apis straight from your JS codebase.
Internationalization - Standard SPA internationalization support, easy.
Built-In Navigation - Use whatever your SPA framework uses.
Web Support - Capacitor is the clear winner here as you have built a SPA.
Third-Party Libraries - You can use any web/javascript toolkit, along with any platform specific libraries for iOS or Android that you need.
Obviously its not the right platform for all use cases, but if you are just starting out small with a tiny team you only have to build your app once. 90% of your app is probably the front end, your don't want to be build that twice until you have the traction and teams to do it.
- angst_ridden 5y agoI've developed some apps in Ionic/Cordova and Ionic/Capacitor. I agree that it's a decent system, especially for people (like me) who are just in a rush to implement something and aren't so caught up in platform wars. I'm one of those people who couldn't care less about the language I use to code in - I just want to get stuff done. From my perspective, Javascript has some stupid stuff, but so does every other language. My only significant objection to Ionic/Capacitor is the whole nodejs ecosystem. I hate getting dropped into dependency hell all the time. And it's significantly worse if you're stuck (as I a) supporting an end-of-lifed Cordova plugin for necessary functionality. Now, in the real world, I'd have a team and we'd just build our own version of the plugin and get rid of the web of dependencies, but sadly I'm just one not-very-bright guy off on his own.
- claytongulick 5y agoThere's an additional advantage, which is that you have a straightforward eject path from app stores. If Apple or Google decides to boot you off the store for whatever reason, you're not out of business, you can distribute as a PWA and never really notice. For many LOB apps, discoverability via the app store isn't relevant at all. My primary app distribution mechanism is a SMS message with a link to a PWA that installs to home screen. Works everywhere, on every platform, which is a huge advantage for my senior population users.
- xtracto 5y agoThe last time I developed in Ionic, I stumbled into problems when actually trying to DO things in the mobile platforms: Want to use the camera? you are limited to whatever "plugin" is available. Want to read from SSD ? you also have to integrate some plugin and pray that it works for your use case. To me, it feels that Ionic is only good for the "minimum common denominator" of apps (a webpage, maaaybe with some storage), but once you move a bit from that path, you struggle a lot with half-baked plugins and "black boxes". Oh, and the documentation... both for Ionic (which? cordova o capacitor?) and the plugins, it is SO bad. Also, the fact that Ionic is actually a for profit endeavour, and you will pretty soon hit a wall that you only can remove by paying.
- yesimahuman 5y agoI don't think this is fair. In Capacitor/Ionic yuou have full native access and adding a bit of native code to accomplish something if there isn't a plugin available is much easier now that we use Capacitor instead of Cordova. React Native and Flutter also have the same dynamic that, if you only want to use plugins to accomplish functionality, you have to find and use the ones the community created and hope they continue to create more and maintain them. We've made big strides there with the Capacitor Community effort and also directly supporting a number of plugins ourselves. On the "for profit" side, I see this as an advantage. We try to only charge for things that are cloud and have natural cost, or that really only enterprises need. We deliberately keep the vast majority of our platform free and open source. The fact that we generate revenue from enterprise customers is actually awesome for our projects because we are directly incentivized to improve them! We aren't merely an advertising-driven business that creates open source for other reasons (hiring, internal use, etc), but we are literally in the business of mobile technology. If you're a big company, you can actually call us or use one of our integrations that we directly support and you can file tickets against and have an SLA, and our cloud services integrate with your existing enterprise CI/CD infrastructure. Think about Facebook ever doing this! It's a unique offering in this space that our customers really love and directly benefits our OSS work. Finally, on our docs, there is certainly room for improvement, but we often hear the opposite: that we have some of the best docs around for OSS projects!
- allisdust 5y ago
- pjmlp 5y agoThe few projects I was involved with Cordova and Ionic don't leave good memories regarding how slow everything was. The only reason I got to use them was because I had no saying in what they were trying to do, just a cog on the machine. Both applications could have been done as PWAs, but they decided to push Angular into a Webview instead, taking ages to start and react to any screen interaction.