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.
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.
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 am thankful for School 42 - Paris. In France, it is the only school which offer a (very) good software engineering training for free. Without that school, I would have made a 3-year study in a public school and my life would not have been nowhere close my today's life.
I am thankful for all the people who likes and accept me even if I may be a weird guy.
I am thankful for the enterprise where I am working since 2 years, it is a real family.
And, I am thankful to all the individuals, organizations, open-source project, initiatives, all around the world which makes a better world to live in.
Last but not least, I am thankful to all the people which are hidden, but makes our lives being worth to live in today standards.
It actually run only on Node (but could be adapted on browser). Yes an online demo is a good idea!
I did used prettier and Xo in the past. I know I'm in the wrong but my eye are so much adapted to that C/C# style that it is way easier for me to read. For a next update/my next open-source projects, I'll think twice about it.
I have no doubt Typescript is great. I've tried use it in previous very complex projects pushing JS to limits. It had a few quircks that made it unable to use, same thing for Flow. But same thing here, I'll think about it twice next time!
Location: Paris, France
Remote: Yes (EU)
Willing to relocate: No
Technologies: (Front) React Native, Flutter, React (Back) Node.js, PostgreSQL (Electronics) nRF52, BLE
Résumé/CV: https://hammerchmidt.com/cv_martin_hammerchmidt.pdf
Portfolio: https://hammerchmidt.com
LinkedIn: https://www.linkedin.com/in/mhammerc/
Email: hiring@hammerchmidt.com
--
8+ years of professional experience. 12+ years of coding if counting my passion since childhood.
I have built and launched Weezem on 2021, and maintained it since. 100k registered users.
I have built and launched SPART on 2021 too, and maintained it until 2024. (for a client)
I have fun projects such as an OpenGL engine or completed the Turing Complete game (learn about CPU design).
I am an excellent communicator and listener, self-directed, and fast learner.
I left my previous job after 5 years with the same people. I am now looking for my next chapter.