Live data from Hacker News

Flutter is better than React Native in all the ways that don’t matter

shift.infinite.red

101–110 of 158 posts

Re: Flutter is better than React Native in all the ways that don’t matter

#101
post #24

This article highlights one of the things that really bugs me about tech hiring. The availability of developers who know a language or tech isn't a limiting factor if you're willing to hire people and give them the time to learn. Yes, it's expensive, but if there really are productivity benefits from using a particular tool then you should end up better off in the long term anyway. The expectation that another compan…

Counterpoint, I made a recent shift to Android from many many years of iOS development. It's not the language that I struggled with, it was the completely different engineering culture surrounding the platform. Yes there are many similarities, things like concerns for battery life and thoughtful network usage. However, that's where the similarities end. The APIs and appropriate architecture decisions are completely different, so I needed to build all new instincts.

Then, you have the tooling that are completely different. Where it would normally take me 5 min to jump into Xcode to profile an application, inspect for leaks or other performance issues, I spent a few hours going through Android documentation learning how to do the same thing.

Last, and this one is a bit nuanced and sort of hard to explain. As a senior engineer, you're typically expected to help mentor others and maintain the foundations of your product so that as new people join they have a template to work from. If you're switching to something so different, you could end up hurting the team (or company) by using the wrong patterns and promoting incompatible ideas. People need to trust you and if you break that trust at the beginning of your employment, it'll be really hard to earn it back.

No regrets though, and I'm grateful to my employer for giving me the space to make the shift. However, I do not believe in the idea you can hire someone at a generalist level and then expect them to be productive anytime soon.

There is a saying, "Jack of All Trades, Master of None," and although very cynical, it's just an honest statement when it comes to these things. Hire the right person for the role you need filled first, then if you want to make room for engineers who are looking for big career changes, make sure your product and team won't suffer for that and you have the right culture in place to encourage that kind of growth.

Re: Flutter is better than React Native in all the ways that don’t matter

#102

I've been using react native heavily for the past 18 months. Because there's no JIT, Javascript is slow on mobile, especially on Android. I spend a lot of my creative energy trying to optimize the render function. I often times wonder if I should have chosen Flutter instead. Each framework has its bullshit you don't discover until it's too late. So, I'm sure if I had chosen Flutter I'd be complaining about something…

Memoizing everything might be hurting more than helping your apps performance. I’ve built a few different apps with RN, the issues here might be specific to this project

Re: Flutter is better than React Native in all the ways that don’t matter

#103

I want to throw Ionic and Capacitor (or any other webview based toolkit with your favourite SPA framework) into this mix, I believe for a lot of apps its probably a better option than either Flutter or React Native. I also don't and believe in "one true cross platform toolkit", each has its place. So: Hiring - The OP suggests React Native has a larger pool of developers than Flutter, very true. But Ionic/Capacitor/et…

The last time I developed in Ionic, I stumbled into problems when actually trying to DO things in the mobile platforms: Want to use the camera? you are limited to whatever "plugin" is available. Want to read from SSD ? you also have to integrate some plugin and pray that it works for your use case.

To me, it feels that Ionic is only good for the "minimum common denominator" of apps (a webpage, maaaybe with some storage), but once you move a bit from that path, you struggle a lot with half-baked plugins and "black boxes".

Oh, and the documentation... both for Ionic (which? cordova o capacitor?) and the plugins, it is SO bad. Also, the fact that Ionic is actually a for profit endeavour, and you will pretty soon hit a wall that you only can remove by paying.

Re: Flutter is better than React Native in all the ways that don’t matter

#104
post #24

This article highlights one of the things that really bugs me about tech hiring. The availability of developers who know a language or tech isn't a limiting factor if you're willing to hire people and give them the time to learn. Yes, it's expensive, but if there really are productivity benefits from using a particular tool then you should end up better off in the long term anyway. The expectation that another compan…

> massively inhibits the proliferation of different, new, and interesting technologies Do people really look at the JS webapp framework landscape and feel that LACK of proliferation is a problem?

To be fair, if you exclude the ones that are garbage, you basically have React, Vue, and Angular. Of those three, React is the clear winner in terms of market penetration, but there are certain things in both Vue and Angular that blow React out of the water.

Re: Flutter is better than React Native in all the ways that don’t matter

#105
post #30

I think Flutter is better _because_ it uses Dart. I used to hate that decision ("Not another language to learn.."), but Flutter and Dart are like Mac and macOS (I'm aware people complaining about macOS quality going down the hill.. but that's another story). They're both from the same company, seemingly built for each other, and the language (Dart) improvements are _relevant_ for the platform (Flutter). Flutter still…

As someone who started programming using GCC, Vi and commandline tools, I just hate the tooling around Flutter. And yes, someone will probably point out that I can use Flutter with commandline tools after I disable all the bloatware that needs to be installed anyway, but that's missing the point.

I don't understand: I am using Flutter just fine from vim and I have never even tried their IDEs. What do you mean by "disable"? What "bloatware" were you forced to install in the first place, and how is it running?

Re: Flutter is better than React Native in all the ways that don’t matter

#106

Earlier quoted context omitted.

You will spend year teaching someone then he leaves for another company who gave him 20% rase. You're net negative, they're net positive. You'll lose the race in the end. This could be a good approach for someone huge like Google or government. Asking that from an ordinary company will not work.

> You will spend year teaching someone then he leaves for another company who gave him 20% rase. This only makes sense if you hired the person at 20% below their market rate under the belief that they were less valuable as a hire simply because they didn't have a specific skillset you needed, and then once they acquired that skillset you failed to adjust their salary accordingly. But the entire thesis of the OPs comm…

I think the assumption behind the post you're replying to is that this will happen regardless of what you are paying them, that is, there is no actual stable "market rate" that can be precisely targeted.

It may seem this cannot happen, but in a system experiencing rapid inflation it's what you'd expect to see. This doesn't have to be on a macro level. The endless tide of VC + crypto funds have created a form of (hyper?) inflation inside the tech industry in which wages are spiralling upwards without any fundamental link to increased value. It's simply a bidding war in which those who fight for closer access to the flow of inbound money can always outbid other firms, regardless of how much they pay, because there is no "market rate", just "whatever this guy currently makes + 20%".

Re: Flutter is better than React Native in all the ways that don’t matter

#107

I've played with Flutter a little. It was OK. I develop/maintain 2x2 native apps (two different apps, with 2 different native versions each). When I started this years ago, the cross platform stories weren't as prevalent, and we needed really strong BLE integration (not just a casual shim library). So we did the native thing. Reading various forums, it almost feels like no one does the iOS/Android native app dance an…

For me, Flutter & Dart were badly needed solutions to the traditional way of developing Android apps. There's really no need to do the "native app dance" anymore, it's costly unless you really want to target a specific Android device.

Having said this the article does bring up an important issue, in particular, it's tougher to find Dart developers and you would most likely need to spend 6~8 months for a new team to get into the groove...BUT

React Native is a giant mess. It's clunky and slow and throwing Javascript/Typescript at everything has been problematic and it's clear that the performance lags behind Flutter by a large factor.

If I had to choose, I would take on the tool that offers the best development experience and a large chunk of that comes from the debugging, and it just so happens Google hit the nail——NullPointerException is one of THE biggest risks of using other toolsets.

So If I had to bet here, I would put it on Flutter/Dart. It is essentially a love child of ES6/Java/Typescript and it just hits so many pain points coming from React Native.

I really do think React will become the Java Swing of our generation, yes you've done everything right but it seems you need to keep up with new trends and the usage of hooks is really annoying and unintuitive.

In fact, here on the web front, I think Backend-as-Frontend where we persist application state in websocket will be a game changer. On the mobile front, Flutter clearly scratches the itch for both newcomers, react native developers but also backend-as-frontend really gets rid of the need to maintain two separate code bases (one for react and the other for backend).

I think a web app that loads via Backend-as-Frontend framework that Flutter talks to like a regular joe REST API will be the paradigm shift.

I would love to hear what others think of my views as I'm curious as to how my bets will pay off.

Re: Flutter is better than React Native in all the ways that don’t matter

#108
post #80

Earlier quoted context omitted.

>"You will spend year teaching someone then he leaves for another company who gave him 20% rase." If you hire decent developer and it takes a year to teach them for example react to be productive the problem is not with the developer. Normal developer should be reasonable productive in a matter of days. Ok give it a month. And it does not require tutor hanging over the shoulder. The problem is with you as you've just…

IDK what your experience is, but in my experience at Google it would take about 6 months before I could consider someone "reasonably productive". Or maybe it takes about 6 months before I'm confident that they are actually underperforming. A week is just enough time to get a cursory understanding of the product and tooling and fix a newbie bug.

Google is not at all a reasonable proxy for the rest of the industry. It has an almost entirely parallel infrastructure that bears little resemblence to what everyone else learns and uses. Google has notoriously high training times for this reason and always did.

Re: Flutter is better than React Native in all the ways that don’t matter

#109
post #104

Earlier quoted context omitted.

> massively inhibits the proliferation of different, new, and interesting technologies Do people really look at the JS webapp framework landscape and feel that LACK of proliferation is a problem?

To be fair, if you exclude the ones that are garbage, you basically have React, Vue, and Angular. Of those three, React is the clear winner in terms of market penetration, but there are certain things in both Vue and Angular that blow React out of the water.

Many people would consider some of the ones you ruled out as "garbage" as great, while considering React/Vue/Angular as garbage.

React is the clear winner in terms of market penetration as that is what happens to projects with the largest marketing budgets / corporate hype.

Re: Flutter is better than React Native in all the ways that don’t matter

#110
post #7

I've programmed a lot in both Dart and C# and my take is that Microsoft looked at Java and decided they needed a Java-like language like so they made C#. Google was into Java but Oracle sued them over it so they decided they needed a Java-like language so made Dart. Edit: Dart is ridiculously easy to learn because it's very familiar so if someone complains about having to learn Dart it means they don't want to learn…

Honestly, as an ex-Googler (10 years), I have to say it's never that simple to explain why some tech is adopted or pushed at Google and it's never so top-down and unicausal.

Often it comes down to certain engineers having outsized voice and influence combined with them having a preferred hammer and then hunting around the organization looking for nails. IMHO that's what happened with Dart & Flutter.

I saw it happen in two PAs, and the second time it involved literally rewriting an entire shipped product on a platform I worked on. Slowly and tortuously, rewritten from a JS/HTML application to Dart/Flutter on "native" (i.e. not web or android or ios target), and only a few months after said product launched. To me this was classic Joel Spolsky "Things You Should Never Do, Part I" aka "rewrites considered harmful" alarm bells, but who listens to me, I'm just a grouchy old engineer.

One promise was that it would be faster (because "native"), but this was frankly based on a lot of untested assumptions and biases and was never correct. V8 and the Chromium rendering engine have (low estimate) hundreds of thousands of hu-man hours of optimization put into them. It's actually really hard to beat. Chromium has a pretty decent accelerated rendering stack, and boatloads of work went into getting it optimized for smaller SoC type devices (work often done by friends / coworkers of mine, actually).

And switching to Flutter meant having to jerry-rig (or worse, rewrite from scratch) basic things like accessibility (screen reader, magnification, etc.) or virtual keyboard that Chrome (or at least ChromeOS) had solutions for and we had just spent over a year making work for our product. Flutter delegates down to Android or iOS's implementation of these features, and as we were neither, we had no such thing. So it had to be built.

So the net result was either rewriting things that had already shipped, or, more commonly building awkward translation layers and bridges between the two platforms so that both things could run at once. a) waste of engineering hours b) source of bugs c) was happening instead of dealing with tech debt and improving or evolving the existing codebase.

The one upside was portability between Android and our product, so the same feature/app could be written for both... which I would accept as the only compelling reason to justify what was done.

I could go on, but I'd probably give away internal secrets or something, and probably piss someone influential off or burn some bridges.

My overall point being: test your assumptions and don't use some tech just because you a) like it or b) wrote it.

Also I don't really understand why Dart even exists. In the 21st century, there are very rarely serious problems to which "we need a new language" or "we need a new operating system" are the correct answer.

Post reply on HN