Hacker News new | ask | show | jobs
by mhammerc 598 days ago
I have been working for the past four years exclusively on react-native apps and their backend API, from bootstrap to publishing, adding new features every few months and maintaining the apps.

It was a mixed experience. When I migrated to expo two years ago, many problems were solved but not all.

But I still encounters bugs and problems with many common dependencies. It is not uncommon to have bugs on certain Android brands, with the community on github reporting the bug but waiting months for it to be fixed.

iOS is by far better and more stable than Android.

Performance is great on iOS, but less great on Android.

Our apps are animation heavy using react-native-reanimated and react-native-skia. Everything went perfect on iOS but we had to remove some animations or simplify them on Android.

Upgrading your dependencies every four months will probably break something somewhere : deep links stop working, some animations stop working, or maybe it's another dependency from the JS world. Sometime the fix is easy, other time an issue with the regression can be found on Github, other time we have no data.

Overall I'd say react-native is perfectly servicable and is easy to learn for anyone, which is a big plus. I'd recommend react-native because it is easy, have a big JS ecosystem, but I am now on the Flutter side.

4 comments

Congratulations! You've described the universal experience of using cross-platform frameworks.

They can be great as long as you and your customers stay on their most well-trodden path. But as these frameworks grow and become more byzantine, and as your project requirements start reaching for more rarified features and your customers start using new and differing runtime platforms, maintenance overhead starts to dominate and you find yourself running into invisible walls that make it hard for you to deliver on your project roadmap or satisfy the support standards you want for your customers.

This has always been the case for these frameworks, going back many decades, but especially since the explosion of efforts to build them around web stacks, which are easier for developers to use but harder for framework designers to keep sufficiently robust and capable as they age.

There's no free lunch when it comes to targeting multiple platforms. It sucks to have to maintain separate iOS, android, and web apps, and it also sucks to use a cross platform framework.

But I still feel in the end that for many CRUD style apps it's worth it to deal with react native's problems, especially if you can also have significant code sharing with your web app.

If you're trying to build the next snapchat or tiktok you'd better go full native though.

Having used both RN and Flutter quite a bit I also much prefer Flutter, despite being a big fan of Typescript and React for the web.

Flutter just feels like a much more polished and stable platform built explicitly for purpose and I've never had any performance issues.

Flutter on the web is an absolute JOKE though. React native web & react-strict-dom seem far superior. The moment you want to support web as well, react-native blows flutter away.

Also how's the accessibility on Flutter? I'm pretty skeptical that it's going to have decent accessibility given the game-engine style rendering.

This has actually changed a lot recently since everything now compiles down to WASM along with a bunch of other improvements. Flutter web absolutely makes sense all of a sudden in a bunch of contexts.

That is all too before they have even touched bringing WebGPU in so I think in a medium term scenario it will be an extremely safe bet.

Just by way of example Google Earth just did a major rewrite to put Flutter at the heart of their UI precisely because it was a better experience including on web so I offer that anecdote to suggest your info is kind of out of date.

In the end though, it's still rendering to a canvas. Flutter is basically the new flash. If you are in a business segment where lacking best-in-class accessibility could lead to huge ADA lawsuits, I'd steer clear of anything that isn't rendering real DOM elements.

Google Earth is almost like a video game so flutter makes perfect sense for that. If you're building a fintech CRUD app flutter makes absolutely no sense on the web.

With react native web you can share your code with next.js in a monorepo and absolutely blow flutter away in terms of page weight and time to first interaction.

I agree I would not choose Flutter if web is a primary platform for what you're doing.
Soooo.. more react-native contributors have bought in to the Apple ecosystem, so frameworks and components are better designed and tested there?

Which similar frameworks' developers have subscribed to the Android ecosystem and do much better work there?

> It is not uncommon to have bugs on certain Android brands, with the community on github reporting the bug but waiting months for it to be fixed.

Welcome to Android. That's not just a React Native issue

https://github.com/M66B/FairEmail/blob/master/app/src/main/j...