Live data from Hacker News

Transition to React Native

blog.coinbase.com

211–220 of 221 posts

Re: Transition to React Native

#211
post #9

2025: Coinbase successful transition from React Native to Native apps. Seriously haven't we seen how this play-out way too many times already? There is absolutely no incentive for Apple and Google to make sure ReactNative controlled by Facebook is the way to develop apps for their platforms. Till that is true, its absolutely nuts for any company other than facebook to develop their apps in ReactNative. Edit: Example:…

The Airbnb example could be written as why we transitioned back to Rails after trying Django. Obviously if it's a Rails shop and you try to introduced Django you're going to have a bad time. These are different developers. Same thing happens on mobile. If you hire a bunch of iOS devs they and try to introduce React Native it's not going to work.

Re: Transition to React Native

#212
post #58

Earlier quoted context omitted.

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

They ejected toward the end but that just makes development more difficult, particularly the deployment process. Expo is nice but the whole DX is just painful. The iOS Simulator will crash often. You need to do a hard 'expo start' relaunch often. What looks great in iOS will often be broken on Android. Trying to get pixel perfect UI and the desired UX is painful. Expo is full of bugs and limitations. RN is old and un…

> RN is old and unmaintained

Can explain the last commit being 2 days ago and the steady progress they've made on all fronts in the last year?

Re: Transition to React Native

#213

Earlier quoted context omitted.

To explain further why I think iOS is harder - Where will you learn it? Apple documentation is bad. remember this? "On Apple's Piss-Poor Documentation", 1180 points to date https://news.ycombinator.com/item?id=25046691 Android documentation is great . Yes there are at least 5 ways to do something e.g. schedule background work, load files, but its very clearly deprecated in their docs/ in the code. You can, read the c…

This is helpful overall but perhaps your Xcode experience is out of date, or at least several of your comments don’t match my experience of Xcode 12.5. > The actual code editing part is just a text editor, e.g. searching for function calls involves using the search function, as opposed to a keyboard shortcut that uses static code analysis. Xcode has indexed static analysis, symbol navigation, jump to definition, quic…

Good to know, thanks. Its been a few months since using Xcode, and recently have only done things in Xcode when it doesn't work in AppCode, preferring AppCode for actual coding.

Re: Transition to React Native

#214

Earlier quoted context omitted.

To explain further why I think iOS is harder - Where will you learn it? Apple documentation is bad. remember this? "On Apple's Piss-Poor Documentation", 1180 points to date https://news.ycombinator.com/item?id=25046691 Android documentation is great . Yes there are at least 5 ways to do something e.g. schedule background work, load files, but its very clearly deprecated in their docs/ in the code. You can, read the c…

I’m in the US. iOS is wayyyyy more important or else I’d have 50 users of my app instead of over 2000. Android has a lot of documentation but there are so many more layers to Android development than iOS. On top of that, the best practices on iOS are very consistent while on android they change like twice a year, it’s exhausting. Finally, I personally dislike working in the Java ecosystem, so android is way less fun…

Oh yes, sorry, I think in the US, iPhone is dominant. Even more. I expect them to spend more money too. My perspective is the UK, where there is a 50:50 split of Android and iOS. A consumer app company I worked for previously made a lot more money from iOS users than Android.

In terms of market, do your research on jobs and skill demand in the area.

Re: Transition to React Native

#215

Earlier quoted context omitted.

In no particular order: - The type system was essentially like java but perhaps even worse -- in a world with Rust, Haskell, Julia, Kotlin, Scala, and even Golang this seemed egregious. - No algebraic data types (sum/union), - class-based inheritance - nullable values - using exceptions instead of errors-as-values approach. I know they worked hard on the language (rewrites are hard, there are some good talks on there…

Thanks for the elaborate answer! You probably have a higher standard on programming languages than I do. I understand that Dart is a very basic language, and comparing it to something almost academic like Haskell will probably make it seem real primitive and stupid. Coming from mostly frontend/UI product dev in C#/Java/JS I've had a blast with it though. I do agree that some common patterns are contrived (BLoC, json…

> Thanks for the elaborate answer! You probably have a higher standard on programming languages than I do. I understand that Dart is a very basic language, and comparing it to something almost academic like Haskell will probably make it seem real primitive and stupid. Coming from mostly frontend/UI product dev in C#/Java/JS I've had a blast with it though.

Well I spend a lot of my time yak shaving so :). Most of the time in the real world, Dart is good-enough (and is definitely better than JS without TS, from a safety/maintainability perspective).

You're absolutely right, Haskell is academic, but what impresses me about other languages was that they took little bits -- Rust took a lot, Golang took a tiny bit (protocols look more like type classes than class-based inheritance).

I'm somewhat surprised that you prefer it to C# though -- C# was supposed to be better Java, and I didn't think that Dart was better than C# outright. Maybe I'm wrong on that, if it feels more fun to use (i.e. easier so much so that it's enjoyable, but you're not frustrated).

> I do agree that some common patterns are contrived (BLoC, json serialization via codegen, etc), but I'm not sure it's fair to criticize the language itself for this.

BLoC isn't fair to criticize (it's more about Flutter), but JSON serialization is fair in my mind because it's the direct result of a too-weak type system. But yeah overall I'm making the typical HN ado about nothing. In the real world people would just pick flutter (for it's good parts) and commit.

> Also FWIW sound null safety is now the preferred way to write Dart (given your deps have adapted to it), so that part is hopefully solved.

First I've heard of this addition, and it's commendable that they're undertaking this herculean effort, but this is so meh. Typescript arguably has this problem (since it has to interop with JS), but the way you solve it is so simple there. Turn on strict mode, and you're done -- because they considered it from very early on (if not the beginning). Language designers should know what the state of the art is and make good decisions around it up front, this is like 10x worse than writing a bad framework, because you can't drop out (of the framework) -- there is nowhere to drop out to (I mean... yeah you could FFI or something ridiculous but...).

But anyway I'm just tilting at windmills -- people that have to get shit done will just get it done with Dart like they have with every other tool that is less-than-perfect. I'll just stay in my ivory molehill.

Re: Transition to React Native

#216

Hi all - I support all Retail engineering at Coinbase and was one of the folks who helped shepherd this change through from inception to rollout. I'm happy to answer any questions that folks have - just thread here, and I'll either answer or pull in our team to give more detail.

What does your CI/CD look like? It took me a long time to fully flesh out a RN pipeline that was (mostly) completely automated. Are you leveraging Fastlane? Are you buliding both Android and iOS on OSX VMs? How do you deal with shipping canary versions and is that process also automated? Thanks!

We talked a good amount about this [here](https://twitter.com/dan_coff/status/1393599897119592456). We are using Fastlane. We are building iOS on OSX, but Android on more standard EC2 hardware. We ship canaries with every commit to master, fully automated.

Re: Transition to React Native

#217

Hi all - I support all Retail engineering at Coinbase and was one of the folks who helped shepherd this change through from inception to rollout. I'm happy to answer any questions that folks have - just thread here, and I'll either answer or pull in our team to give more detail.

So what is your native mobile engineering team doing now?

All of them were cross-trained to be React Native engineers. Many of them are now working full time in React-land doing product engineering and some of them are working on lower level native infrastructure. We saw very little attrition and have emerged as a stronger, unified client engineering group (across mobile and web).

Re: Transition to React Native

#218

Hi all - I support all Retail engineering at Coinbase and was one of the folks who helped shepherd this change through from inception to rollout. I'm happy to answer any questions that folks have - just thread here, and I'll either answer or pull in our team to give more detail.

Sup Jesse!

Hi!

Re: Transition to React Native

#219

Earlier quoted context omitted.

Thanks for the elaborate answer! You probably have a higher standard on programming languages than I do. I understand that Dart is a very basic language, and comparing it to something almost academic like Haskell will probably make it seem real primitive and stupid. Coming from mostly frontend/UI product dev in C#/Java/JS I've had a blast with it though. I do agree that some common patterns are contrived (BLoC, json…

> Thanks for the elaborate answer! You probably have a higher standard on programming languages than I do. I understand that Dart is a very basic language, and comparing it to something almost academic like Haskell will probably make it seem real primitive and stupid. Coming from mostly frontend/UI product dev in C#/Java/JS I've had a blast with it though. Well I spend a lot of my time yak shaving so :). Most of the…

It's all good, I enjoy hearing your perspective! To be honest I've never been greatly interested in programming languages as a subject in its own right. As such, and as you correctly assume, I only got into Dart because of Flutter. Since then I've used it for backend services as well, and it's very pleasant to me.

A lot of it probably comes from the excellent devex, but it strikes a nice balance between dynamic get-shit-done-ness that you find in JS/Python, and the more verbose, safe, structured nature of C#/Java.

Global imports, method cascading, extensive list comprehensions, named arguments, inference being heavily encouraged, flexible constructors. It's been a while since I did any serious large scale coding in C#, but I just remember it being more of a verbose slog.

Re: Transition to React Native

#220

Earlier quoted context omitted.

We did consider Flutter, but (1) we already had a very strong javascript talent base that we wanted to leverage; (2) at the time when we made the decision, Flutter was still relatively early in its lifecycle. That said, we've spent a lot of time talking with teams using Flutter and we think it's awesome!

Could you say which teams you were talking to? Curious about companies adopting Flutter and why over other solutions.

Mostly teams within Google that have had success with it.
Post reply on HN