Hacker News new | ask | show | jobs
by mchusma 1507 days ago
I have used Ionic for about 7 years now? 5 years ago it was sort of still a painful beta-like product. Not the case today. We ship and maintain 2 different apps to web, iOS, and android each, with only 3 developers. These are highly complex apps , although not games. Ionic really got great about 3 years ago.

I suspect that if you had experienced Ionic a bit later in it's cycle, you would have been happy. Hard to tell, and I do think there are genuine cases for building to specific platforms. However I think it's the exception (outside gaming), not the rule.

2 comments

I've used ionic in the past. It was ok to get something out, ok for many things (gyro data, charts etc), but it started getting in my way a lot.

I like react-native and nativescript's approach a lot more.. They use native UI elements.

Nobody noticed in the app of OP because it looks almost like a game. No native UI behaviors.

I can second this. My Ionic app runs incredible stable, no issues, users are happy. It is not super complex and doesn't make use of native APIs beyond in app purchases, but it isn't super trivial either.

The performance is good on modern devices to the point where you don't notice a difference.

The main downside are these things:

1. No fine-grained control over input types / the keyboard that is displayed. You basically have to use whatever Safari gives you. The options got better in recent years, but a native app has better control over the type of keyboard it shows (maybe you can achieve similar effects with a plugin).

2. The UI obviously does not respect accessibility settings. For example, if you enable the O/I markers on toggle buttons on the OS level, your app won't show them. But I think React Native wouldn't show them either, so there's that.

3. Can be a pro and a con: Your app shows the same UI for every OS version. Let's say a user is still on iOS 11 and Ionic tries to adhere to the design language of iOS 15, an app update will also affect iOS 11 users. Whereas with native apps, you can basically say "take this headline element and show it in the way the OS renders this by default". Imho, this doesn't matter for normal users that much, but if you obsess over design, it can be a downside or at least somewhat unexpected.

And you get a lot of upsides:

1. Truly one code base with close to zero custom code for each platform. Hence, a solo developer can easily develop an app for iOS, Android, and the web.

2. Assuming you use Ionic's Capacitor as a runtime environment on devices: It is basically a thin wrapper for Chrome. Since Chrome is evergreen even on older devices, I usually never run into browser issues if users are on Android 6 for example. They simply have the most recent Chrome version and your app benefits from that.

Compare this with iOS: Users with an older iOS version run an old version of Safari and hence, you need to make sure that your JS code doesn't break on older Safari versions. Although the compatibility with modern JS got a lot better since iOS 11.

3. You can easily force the same design on all platforms if you want. I wouldn't recommend it, but for some enterprise-internal tooling, it might make sense.

To sum it up, especially indie developers who want to build an app very fast and don't have a team should give Ionic a try.