Live data from Hacker News

Transition to React Native

blog.coinbase.com

51–60 of 221 posts

Re: Transition to React Native

#52

Anyone got experience with both RN and Flutter willing to chime in on how they compare? So far I've been fairly satisfied with Flutter, however there are some glaring performance issues (though it sounds like these will be addressed in due course).

We do a lot of RN but recently had a large project that required Flutter. We were all curious because you hear good things about Flutter but, in the end, no one thought the dev experience of Flutter was better than Typescript+RN. One data point.

Re: Transition to React Native

#53
There are some long term trends that should work in React Native’s favor.

The pace of mobile changes is slowing and will probably slow further. This is the usual case of an initial innovation transitioning to incremental improvements. This means that React will eventually catch up or come close to catching up with mobile developments (if they have enough technical expertise to do so).

Competition has consolidated the market into two platforms. This means that only two platforms need to be supported.

Due to competition between iOS and Android, the two platforms are undergoing convergent evolution. This will also make it easier to support the two platforms since new features will be similar.

Re: Transition to React Native

#54
post #46

Many comments here are comparing this transition to the one Airbnb did a few years back. These two transitions could not be more different. Coinbase decided to greenfield their new apps, Airbnb (attempted) to brownfield it. I've worked with a number of clients that have gone down the same path that Airbnb did, from a business perspective it makes perfect sense, keep what you have and slowly move over, but the technic…

if i remember correctly, Airbnb had many issues with RN that were not related to their incremental migration, such as the issues they had with things like debugging, where it was almost impossible to fix certain bugs due to RN using different JS engines depending on platform and context (for ex running with a debugger causes RN to use V8 whereas running locally on iOS / Android it uses JavaScriptCore or Hermes, respe…

RN used to have a lot of issues years ago (~2015-2016 or so) with different layout rendering between iOS and Android. Since they re-wrote their layout engine to be the same codebase across Android and iOS this has been 99% fixed in my experience. You might very occasionally run into a difference of some sort but it will most likely be minor. Of course, I would say if you've never done a RN project before and you plan to release both iOS and Android, please DO test your app frequently on both as you code along. If you complete 90% of the code on, say, iOS only and then try to run it on Android, chances are you'll run into more WTH problems than if you were checking along the way.

Re: Transition to React Native

#55
post #44
post #35

With regards to UI elements and layouts nothing beats React and Flexbox CSS on mobile. Also, when it works correctly Expo is a pure bliss. C'mon iOS devs you can't tell you enjoy the byzantine layout model of the native iOS apps and working in xCode. Some parts of React Native are problematic but creating screens is simple and intuitive.

SwiftUI is higher level again for layout and I would pick it over flexbox CSS on mobile any day.

SwiftUI is a strong competitor I admit.

Re: Transition to React Native

#56
Long story short, terrible idea unless you're in a position like coinbase.

The article is from a high level engineering standpoint about productivity and trying to be efficient. The thing the article doesn't mention is the best react native developer also is an expert in native mobile development. It is crazy hard finding these people.

All techno fluff aside, any component mobile developer knows once you have a solid foundation it is super easy to build on core features. Given how frequently aplkenabd google breaks things which makes reactive native upgrades a mega PITA, the only proper use at a technical level is to utilize the code at a framework level. React native is still on its knees to cocoapods, which as of now is virtually nonpreferred for future projects.

Sorry for the rant, I just think A.:) Coinbase made the wrong decision in the long run because they limited themselves on a technologist that's infamously know to not favor solid user experiences

B:) they underestimated the specific qualifications they need to get the people that are grounded enough to know native mobile development and its capabilities, abs the react native component. Even though they are coinbase the article acts like it doesn't matter.

Re: Transition to React Native

#57
post #34

I've been doing a RN app lately after not using it for almost two years. It's still a very fast way to iterate on both Android & iOS but it also still feels extremely brittle. I've tried and failed to upgrade to the latest version of RN several times now but every time gotten tangled up in dependency hell. I also haven't been able to get it to build on my M1 Mac at all. RN is good for fast prototyping and market valu…

If at all possible, I can't recommend Expo enough. I hated building RN apps prior to it, and now I hate building apps without it.

When Expo works like it should it's like the best dev experience ever. Supporting all React Native 3rd party components without ejecting and ditching the Expo app will be a huge step forward.

Re: Transition to React Native

#58

Having just finished an 8 month Expo RN contract I'm excited to never touch it again. For personal projects keen to see how far I can go with Svelte PWA + Capacitor. Google + Microsoft should really double-down on PWA apps. I think at one point Microsoft was crawling the web and automatically listing any PWA in their app store. If that became the norm then maybe Apple will make their PWA install UX less deliberately…

What were the issues with Expo and why haven't you ejected to vanilla RN?

Re: Transition to React Native

#59

If I wanted to do android development again, I have no idea which skillset to optimize for React Native? Kotlin? An old version of Java that just got lambdas? Are we doing Model-View-Presenter (MVP) no matter which? Or are we still doing Massive-View-Controller (MVC backronym) Are there adequate networking, database ORM, and image loading libraries for all frameworks? Last time I interviewed for any mobile developmen…

None of those! The real answer is Nativescript -- https://nativescript.org It doesn't get the buzz, and the ecosystem is somewhat old (it's surprisingly common to run into a repo that hasn't been touched in a year) but it's the superior platform to React Native and you get none of the capriciousness of the React ecosystem (if anything the Nativescript community might need a jolt). Nativescript is incredibly productiv…

I believe what you say about NativeScript but there’s not enough momentum in that solution. Learning NativeScript will give you access to a way smaller pool of projects or companies you can work for.

I think most developers would prioritize employability + traction/community/documention. There’s not even a comparison there. React Native is the superior solution.

Re: Transition to React Native

#60
post #46

Earlier quoted context omitted.

if i remember correctly, Airbnb had many issues with RN that were not related to their incremental migration, such as the issues they had with things like debugging, where it was almost impossible to fix certain bugs due to RN using different JS engines depending on platform and context (for ex running with a debugger causes RN to use V8 whereas running locally on iOS / Android it uses JavaScriptCore or Hermes, respe…

RN used to have a lot of issues years ago (~2015-2016 or so) with different layout rendering between iOS and Android. Since they re-wrote their layout engine to be the same codebase across Android and iOS this has been 99% fixed in my experience. You might very occasionally run into a difference of some sort but it will most likely be minor. Of course, I would say if you've never done a RN project before and you plan…

none of the issues i described are different now. RN on iOS still uses JavaScriptCore by default, Android uses Hermes, and it still uses V8 if debugging, meaning it's possible you'll have some super weird edge case bugs. in Airbnb's situation i believe they said it was almost impossible to pinpoint the issue due to the differences in these engines. it's unlikely, but still an unavoidable thing that could be a serious roadblock
Post reply on HN