This article was written in collaboration with Vitalii Topoliuk, a Software Engineer at Meta and Sean Keegan, a Developer Advocate at Meta.
For today's interview, we have Vitalii Topoliuk, a Software Engineer on the Messenger Desktop App team at Meta. Vitalii’s team works on the desktop version of Messenger, which enables you to text, call, and stay in touch–directly from your computer.
My name is Vitalii Topoliuk and I am a Software Engineer on the Messenger Desktop App team. We have been developing Windows and macOS versions of the Messenger App for the last three years–the last two of which we’ve been using React Native.
Our app is powered by the React Native framework.
Messenger Desktop and derived projects: Work Chat for Desktop, Workrooms for Desktop.
Our app was built on the top of the Electron framework which gave us a very good initial boost. Unfortunately, we reached the capacity of Electron pretty fast and had to invest a lot to meet Performance, Reliability, and Efficiency (PRE) requirements. Additionally, the features of our app were limited by Electron.
By transitioning to React Native, we solved several PRE issues and significantly improved the developers' experience. React Native allowed us to reuse 80% of our codebase and improve a lot of PRE metrics. Below are some of the improvements we achieved just by moving to React Native for the app without any additional investment in PRE versus the established Electron app on which we’d been focusing on PRE improvements over three months:
Crash Reach: -60%
Cold Start Success Rate: 97% (88% for Electron)
P90 Cold Start Latency: -50%
Binary Size: -80%
Crash Reach: +59%
Cold Start Success Rate: 99% (95% for Electron)
P90 Cold Start Latency: -60%
Binary Size: -70%
Yes, at Meta, we get the opportunity to show the community that React Native can be used to create cross-platform applications for Desktop.
I hope that React Native will replace Electron in the future–but for this to work, the framework should be improved to include more end-to-end production tools. For example, Electron is not only a shell for web-based apps, but also contains tools to create installers, auto-updaters, crash reporting, etc.
We would like to thank Vitalii for taking the time to do this interview. It was amazing to learn how React is being used to improve major applications; and how we are learning from the things that we build here at Meta and contributing that knowledge back to the React community. We hope you found this interview useful and that it gave you some insight into how and where React is being used at Meta. Look out for more interview blogs where we meet with Meta engineers and hear their thoughts on this topic.
React is one of the most popular open source projects and has consistently been ranked as one of the “most loved” web frameworks for the last several years. We at Meta believe that React is an outstanding library that helps developers build user interfaces easily and at scale. Used by millions of developers worldwide, for everything from simple websites to enterprise applications, React is an open source library with a place for everybody.
This blog is a part of our Meet the Developers series, where we invite Meta engineers who use React on a regular basis to share their experiences and tell us about the amazing products they are building. Look out for more interview blogs where we meet with other engineers and hear their thoughts on this topic.