Hi community, I am looking into how I should build my tech stack for a business/analytics platform. I am not very familiar with frontend development; when looking into cross-platform frameworks, I found a lot of options. What is the best cross-platform frontend framework to go with? I found Flutter interesting, but Ionic also looks promising? Thank you for the advice!
TL;DR Flutter if you target mobile first. Ionic if you target web first and mobile is an afterthought.
Ionic uses a web stack - HTML, CSS, JS, so any web dev should be able to pick it up quickly. Also, if there is an existing React, Vue or Angular app, it can be ported to Ionic with minimal effort, while porting to Flutter would require a complete rewrite.
Flutter uses Dart lang, so you'll need people who have working experience with it.
Ionic is a nightmare when it comes to native functionality e.g. working camera, accelerometer, gps, address book etc etc. Both Ionic and Flutter use plugins to access native functionality. Ionic's plugin quality is spotty while Flutter has its own package manager - pub.dev, where packages are curated.
Flutter is built from ground up and Ionic is like a Frankenstein monster made up of different technologies.
There is Flutter Hummingbird which basically allows you to deploy app to web, but it's in beta and although some companies already use it in production it's not quite production ready. (I believe Rive is using or did use it for their app)
I have worked with both, Ionic and Flutter. Development with Flutter is much more pleasant experience while with Ionic we always felt like we had to jump though hoops quite a bit.
It is difficult to provide a quality advice without knowing your constraints and resources available.
Verdict: I would go with Ionic when : 1. you are on a limited budget 2. there is an already existing web app that just needs to be published to App Store 3. you do not have Dart programmers or cannot retrain existing resource 4. web is a primary target
Otherwise, I would go with Flutter.
P.S. I suggest considering React Native. That maybe a happy medium between these two.