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

Why Discord is Sticking with React Native

Curated from: blog.discord.com

Ideas, facts & insights covering these topics:

7 ideas


1.67K reads


Explore the World's Best Ideas

Join today and uncover 100+ curated journeys from 50+ topics. Unlock access to our mobile app with extensive features.

Start with iOS, Try Android Later

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.


339 reads

Faster Iteration of UI components

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.


337 reads

Over The Air Patches (OTA)

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.


172 reads

1. Immature Long Lists

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.


113 reads

2. High-Priority Updates

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.


121 reads

4. Startup Delay

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.


202 reads

Sticking with React Native

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.


392 reads



Building @deepstash

Sabin Hantu's ideas are part of this journey:

Machine Learning With Google

Learn more about computerscience with this collection

Understanding machine learning models

Improving data analysis and decision-making

How Google uses logic in machine learning

Related collections

Similar ideas

Testing · React Native

12 ideas

Next.js 12

9 ideas

Next.js 12


Read & Learn

20x Faster





Personalized microlearning

100+ Learning Journeys

Access to 200,000+ ideas

Access to the mobile app

Unlimited idea saving

Unlimited history

Unlimited listening to ideas

Downloading & offline access

Supercharge your mind with one idea per day

Enter your email and spend 1 minute every day to learn something new.


I agree to receive email updates