Why Discord is Sticking with React Native - Deepstash
Why Discord is Sticking with React Native

Why Discord is Sticking with React Native


1.42K reads

Why Discord is Sticking with React Native

Keep reading for FREE

They started with iOS and when Android release was ready, took them only 2 days to build.

However, they immediately stopped after identifying various issues such as poor performance of touch events and lack of 64-bit support .

Though they thought React Native was ideally for iOS.


302 reads

Faster Iteration of UI components

Used storybook to quickly render "dumb" components that don't manage any state internally with mock props. By leveraging the same tooling, they could quickly follow the web team who originally adopted storybook. Along with hot reloading, storybook dramatically accelerates their UI development cycle.

Designers can even easily tweak styling directly in storybook.


290 reads

A few days ago, we were able to quickly deploy a post-release fix for cameras and skip the approval process. We can’t even begin to count how many OTAs we’ve shipped. Being allowed more room for mistakes, engineers can ship often with confidence and avoid coordination, which unblocks everyone.


143 reads

Immature long lists have been a well known issue since day one, using for chat view. Alternatively, they use UITableView for smooth scrolling performance and dynamic cell heights.

This is the only view which was implemented on native, which means the hundreds of other of React Native components are provided at 60 fps.


85 reads

2. High-Priority Updates

Facebook is solving this problem by re-architecting the threading model :

It will be possible to call synchronously into JavaScript on any thread for high-priority updates.

After various attempts at solutions like InputAccessoryView , we eventually figured out a way to "portal" the React Native component into native iOS views hierarchy and therefore manage high-priority keyboard updates synchronously in native. We will detail this more in a later blog post.


91 reads

Time to Interaction (TTI) is a key aspect of how a user perceives the performance of an app. The TTI of our iOS app is noticeably longer than other competing messaging apps written in native code. Since React Native loads and parses all the Javascript code before execution, you get startup delay based on bundle size. In our case, it’s roughly 1.5s startup delay to load a 15mb bundle on an iPhone X.

Fortunately, Facebook documented unbundling to only load necessary portions of the bundle for startup and progressively load more as needed via their packager.


158 reads

React Native is a great framework that bridges the gap between web and mobile. At Discord it has brought us incredibly efficiency. It allows us to write reusable code, learn from each other, and move fast with a two person team.

Although there are real pain points and challenges, the overall gains significantly outweigh the costs which motivates us to keep investing in the platform.


358 reads


It's time to
Read like a Pro.

Jump-start your

reading habits

, gather your



remember what you read

and stay ahead of the crowd!

Save time with daily digests

No ads, all content is free

Save ideas & add your own

Get access to the mobile app

2M+ Installs

4.7 App Rating