Live data from Hacker News

Transition to React Native

blog.coinbase.com

81–90 of 221 posts

Re: Transition to React Native

#81
post #68
post #8

How does the app perform now?

Theirs an image in the article that compares business and performance metrics before and after: https://miro.medium.com/max/7200/0*L6GxhXWiTckqwMYL Ratings and some perf metrics(start time) improved, no regressions.

Ok but was it good before the rewrite? :)

Re: Transition to React Native

#83
You have three options.

Optimise for user experience (go native)

Optimise for cost (whatever the cheapest developers, or a cross platform solution, like phonegap/pwa/react native)

Optimise for developer experience (use whatever your developers know, maybe native, maybe react native)

In my personal opinion, always optimise for user experience. Shared code should be in the backend, not in your mobile app. Your mobile app (ignoring camera filters & games, as they should use an engine; unity etc) should just be a JSON viewer, with a small bit of data entry. 80-90% of your efforts should be on UI and user experience, but obviously architecture requirements scales up with the team size. Anything else is over-engineering, generally.

The amount of leads I get in for mobile apps, that eventually transpire to the client not knowing the app was built in react native, because they heard “native” and assumed Swift/Kotlin, is increasing by the day. They can’t find enough good developers that know react native, and they don’t have the funds to rewrite. They’re stuck. Obviously I, as a native developer, only hear the horror stories from these experiences and not the times it works out.

But in the last 2-3 years, it has killed 2 startups that I know of, and cost 3 a lot of money to rewrite (two of them made that decision before they contacted me, one after they spoke to me, and they were shocked to find out that they didn’t have a Swift app). I am now having to rescue more clients from react native, than from clients that outsourced to the cheapest agency on Fiverr. Wild!

Side note: why has every app got to expand until it adds messaging? Let a calculator be a calculator, it doesn’t need venture capital and network effects to sell.

Re: Transition to React Native

#84
Great writeup! I don't use Coinbase or any cryptocurrencies, but I'm tempted to sign up just to see this React Native application in action. Are there any other great React Native applications you have used on Android? From what I've seen it's mostly Facebook, Instagram, shopping apps, etc... which I don't use.

Re: Transition to React Native

#85

You have three options. Optimise for user experience (go native) Optimise for cost (whatever the cheapest developers, or a cross platform solution, like phonegap/pwa/react native) Optimise for developer experience (use whatever your developers know, maybe native, maybe react native) In my personal opinion, always optimise for user experience. Shared code should be in the backend, not in your mobile app. Your mobile a…

> n my personal opinion, always optimise for user experience

If you have unlimited money, that is. If you don't, a suboptimal UX is better than no UX.

> Shared code should be in the backend, not in your mobile app. Your mobile app (ignoring camera filters & games, as they should use an engine; unity etc) should just be a JSON viewer, with a small bit of data entry. Anything else is over-engineering, generally.

Ideally, yes, but depending on the app the frontend can still be heavy - e.g. with Coinbase, all the graphing and real-time stuff, done 3 times over, are probably a not insignificant effort.

Re: Transition to React Native

#86

You have three options. Optimise for user experience (go native) Optimise for cost (whatever the cheapest developers, or a cross platform solution, like phonegap/pwa/react native) Optimise for developer experience (use whatever your developers know, maybe native, maybe react native) In my personal opinion, always optimise for user experience. Shared code should be in the backend, not in your mobile app. Your mobile a…

There's a lot that goes on in a mobile app, please read https://developer.android.com/docs/ and https://developer.apple.com/documentation

It certainly is different to backend development, but not everything is a "JSON viewer", even if you exclude camera filters and games. Only the truly awful apps are "JSON viewers". There is a lot of complexity, and I've heard arguments from people that 'they don't want to be a front-end dev because that is just visual stuff': they're talking about pre-javascript days or talking about something they've never done to a good level.

Using a backend (adding network cost)/ sharing code should be the last on your mind for mobile apps. I've had once, where the logic for feature would take less than a day to implement (which I subsequently did), but inexperienced non-mobile developers decided it would be a good idea (and said exactly what you said) to put everything in the backend to share code between iOS and Android. The interface cost (network code) cost more time in development, and made a much worse user experience. Not to mention, I had to use the code written by the inexperienced person, which had bugs.

You might not understand mobile, but there's a lot more that goes on in a mobile app.

Re: Transition to React Native

#87

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…

Most teams don't hire a "mobile developer", they hire an Android developer, and/or iOS developer, and/or React Native developer, and/or Flutter Developer. So unfortunately it requires some commitment, don't do all of them at once!

- React Native: Easiest to learn, good build tools/ developer experience, good amount of jobs already. Unfortunately, React Native is naturally intertwined with JS/ react, so you'll face issues with the complex world of javascript. I won't say its slow, but it certainly doesn't work for all types of apps. Also, avoid Expo completely.

- Flutter: Easy to learn, amazing build tools/ devex, very few jobs (though predictably growing). If you become a flutter developer, you can be confident the company that hired you has thought about the tech stack a little more. React Native is the defacto for quick and dirty apps (MVP), and Flutter is for more of a company thats investing in its technology, I would say.

- Android: Okay to learn, very good build tools/ devex, more jobs

- iOS: hardest to learn, okay build tools/ devex, fewer jobs

Difficulty is measured by how long it would take you to implement a feature you don't know, or just my rough feeling of building apps in all platforms, some of them professionally. Im very unusual to know all 4, and I have not met anyone else like me in my jobs.

I would pick Flutter, because you're not optimising for today, and Flutter will be there in 5 years, regardless of how big https://killedbygoogle.com/ gets E.g. The tech lead for Flutter worked on HTML, CSS, WebSockets.

Re: Transition to React Native

#88
I’ve done iOS native development only and was exploring transitioning to RN due to single code base/multi-platform support. However, one of my constraints for target customer market is the final app size. Right now, I have a native iOS app talking to our API and using AVKit/MapKit with a final complied size of 3MB. Can a RN project yield similar size app?

Re: Transition to React Native

#89

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…

Most teams don't hire a "mobile developer", they hire an Android developer, and/or iOS developer, and/or React Native developer, and/or Flutter Developer. So unfortunately it requires some commitment, don't do all of them at once! - React Native: Easiest to learn, good build tools/ developer experience, good amount of jobs already. Unfortunately, React Native is naturally intertwined with JS/ react, so you'll face is…

Could elaborate on why to avoid expo? I found it super easy to use when I dipped my toes into RN development. Also, what alternative are you suggesting?

Re: Transition to React Native

#90
post #75

Earlier quoted context omitted.

They addressed Airbnb's experience in the blog post. In addition to abandoning React Native, Airbnb created their own templating language best suited for their app and rolled it out to both platforms so they didn't have to handspin every screen.

No, they didn't address anything. They only said that it didn't work for Airbnb because it wasn't greenfield. The real reason it doesn't work out, is because React Native is a dumpster fire. If you really want to go cross platform way, then go with Flutter or wait for JetBrains Compose to target iOS.

Oh yes. You know best. Their CTO did no due diligence before making such an important transition. They didn't even bother talking to AirBNB about their experience. Nothing has changed since AirBnB made their transition. You my friend, know all the ins and out more than the silly, tech illiterate Coinbase team.
Post reply on HN