I have being iOS developer for more than a decade including the last year with Monstarlab. During this time the only constant has being the continuous change of technologies, discussion about “native feeling” and the repeated evaluation of “code once deploy anywhere” solutions. This, makes me always intrigued about the journeys and conclusions that others (with real requirements and live products) share, as i do believe that no matter your weapon of choice, the main goals are shared.
Saying that, heres reference some points that called my attention
- Cordova 2015, React Native 2017, Flutter 2021
- Dependency management with npm in conjunction with native libraries constantly led to problems
- React Native did not have the best performance in itself
- In total, it took us six months to rebuild and optimise the app with Flutter. After nine months, it was live…
- gRPC instead of GraphQL for backend
- Flutter E2E testing and other problems
- there are some bugs with Flutter that have not been fixed for ages
Those in sum may look really particular of a (I assume) javascript oriented team, with an ongoing culture of iterating on solutions that are familiar to their current developer base. But they also reflect similarities to some challenges that we confront during native iOS development as well. The dependency management, modularisation, rendering performance, network layers and API definitions, testing concerns and intrinsic platform bugs i think they can really well represent pretty much any community, so its always healthy evaluate and reevaluate the assumptions to those topics giving at the same time an internal platform that can be recognised as culture/particular techniques.
Then, comments like…
Redux saga was still very practical at the beginning, but from a certain point it became increasingly difficult for our developers to understand which action triggered what
are confronted with
…would be a huge read flag to me if received as an internal feedback, but the continuation once again seems healthy (and probably is backed by an internal mechanism of post mortem) kudos
In retrospect, it was probably simply our own fault that we had not thought better
Nowadays on this point of the journey i would be concerned about architectural decision which i think are part of the symptoms that lead to the backend technology shift
backend teams could no longer keep up with providing the right interfaces for us
which i wouldn't expect coming from a GraphQL solution (constructed to be flexible), but hey, I'm no expert on gRPC
either so maybe theres a brave beautiful new world there )
TL;DR: I think native development and multi-platform solutions share goals (now more than ever) and some challenges, and even if my personal opinion is that native development maybe hard at the beginning it pays at long term (specially with complex requirements), i can totally understand the value of tools like flutter for specific types of projects.
I appreciate the generosity and honesty of the article and personally as a dev i feel challenged (in a good way) and as a Monstar makes me feel great that we have a growing internal ecosystem of flutter developers that can compete and help to push the limits for areas in the same tree. Now, the main thing i miss its some thought about accessibility and how the strength of being able to cover such a surface can be used for good.
TL;DR: I think native development and multi-platform solutions share goals (now more than ever) and some challenges, and even if my personal opinion is that native development maybe hard at the beginning it pays at long term (specially with complex requirements), i can totally understand the value of tools like flutter for specific types of projects.
I appreciate the generosity and honesty of the article and personally as a dev i feel challenged (in a good way) and as a Monstar makes me feel great that we have a growing internal ecosystem of Flutter developers that can compete and help to push the limits on areas in the same tree.
Now, one big thing missing its some thought about accessibility implementation and how the strength of being able to cover such a broad surface of platforms can be used for the greater good