Episode Summary: Coinbase React Native: Building the Cryptocurrency Ecosystem
Coinbase is a popular and well-trusted cryptocurrency platform for buying and selling digital currencies. With Coinbase, your portfolio for crypto investments is managed in a central location. Originally just a web application, Coinbase has now grown to multiple different products across multiple platforms such as web, iOS and Android. With that increased scale came increased complexity as the team began maintaining multiple codebases and hiring individuals to fill the same role for multiple platforms.
Around two years ago, the development team at Coinbase came up with the theory that by using React Native and its ability to develop for multiple platforms with the same codebase, they could reduce the code complexity of maintaining multiple platforms while maintaining the same high quality that people expect from native code. Traditionally iOS and Android development has happened in silos. Each team had its own development team, design team and product management. In addition, since both apps accessed the same backend data models, inconsistencies and headaches would arise with how each app accessed and used the same backend data. React Native promised to solve this problem and at least present a unified mobile platform. However, the journey would take around two years and present its own challenges and headaches.
Coinbase wanted to have an incremental approach where they could test and validate assumptions while maintaining the availability of their core app. They started by rewriting their main app for Android. At the time it was clear that React Native was much less mature, much more buggy and more difficult to make performant. If they could reach the quality bar they wanted to, Android then transitioning the iOS app would be simpler and faster. This assumption proved true as the Android app took over a year and half to transition over and the iOS app took less than six months. However, a transition from native Katlin and Swift apps was not without its own problems.
One of the biggest problems that the Coinbase team faced was people management. Coinbase had already developed two separate mobile development teams that specialize in iOS and Android development and convincing them to move over to React Native was an arduous process. Coinbase set up a React Native school where they had an expert teacher to select individuals. Those individuals then paired up with individual team members to pass on knowledge and give a tour of the features and capabilities. Only when everyone had their hands dirty writing React Native code did they begin the transition of the codebase. It required a large initial investment in time and money and continuous investment to improve the team and the technical expertise. To this day, Coinbase has a team of React Native consultants to ensure that the team is always taking advantage of new features and developing with best practices in mind.
Another big problem that Coinbase had was recognizing the limitations of React Native. There is this stigma that still exists to this day that React Native code cant be performant or as high quality as native code. Airbnb tried to make the transition to React Native but abandoned the project due to this very reason. However, this is less to do with the actual capabilities of the platform and more to do with the applications being developed. Coinbase made a concerted effort to make sure the performance and quality were as high as possible. This led to several concrete actions. They developed some custom tooling as the React Native debugger was and is still fairly obscure. They had a unified design team that made sure the user experience was consistent and exceptional across platforms and products. They also made sure to retain some of the mobile platform experts and roles as some changes needed to be made per platform experience to ensure an excellent experience. Native experts are important to making React Native look and feel really, really good on their respective platforms. Things like headers growing in IOS when you scroll over, or different rubber banding in certain places and other tiny details disguise the abstraction of Typescript so that end-users feel like they are using a Native Platform.
Part of this success at this rewrite was due to Coinbase’s unique culture of debate, decide, deliver. You make sure to take everyone’s opinion but once a decision has been made, everyone rows in the same direction. That culture led the mobile engineers to trust, work hard, and dedicate themselves to the rewrite. By honestly discussing the migration, the journey, the metrics, and the decision points and documenting them with a heavy paper trail, Coinbase got buy-in from everyone and that was an important part of their success.
Coinbase is an impactful company. It’s this generation’s Facebook or Amazon. Crypto will only continue to grow and as it does Coinbase will be right beside it providing secure, highly scalable products.
This summary is based on an interview with Brent Walter, a Senior Engineering Manager at Coinbase and Jacob Thornton, a Senior Staff Engineer at Coinbase. To listen to the full interview, click here