MENU

Fun & Interesting

How Notion Builds Their iOS and Android Apps

The Pragmatic Engineer 95,691 4 months ago
Video Not Working? Fix It Now

In today’s exciting episode of The Pragmatic Engineer, I am joined by two founding native mobile engineers from Notion: Austin Louden and Karn Saheb. Austin and Karn joined Notion in 2019 when Notion started to revamp its iOS and Android apps. Today, Notion's mobile apps are used by tens of millions of users. In our conversation today, we take a deep dive into how the Notion mobile team operates and discuss:  • ⁠⁠⁠The engineering culture at Notion  • ⁠⁠⁠How the mobile team rewrote the mobile app from webviews and Cordova to a native implementation  • ⁠⁠⁠Notion’s tech stack and frameworks they rely on  • ⁠⁠⁠Details on the development process, including four types of environments, approaches to using modules, and practices around feature flags • ⁠⁠⁠⁠⁠How the mobile team maintains consistency across iOS and Android • ⁠⁠⁠… and much more! — Brought to you by DX. DX is an engineering intelligence platform designed by leading researchers https://getdx.com/?utm_source=pragmaticengineer — The Pragmatic Engineer deepdives relevant for this episode: • Stacked Diffs (and why you should know about them) https://newsletter.pragmaticengineer.com/p/stacked-diffs • What is a Senior Software Engineer at Scaleups? ⁠https://newsletter.pragmaticengineer.com/p/what-is-a-senior-software-engineer-at-scaleups⁠ • Shipping to Production ⁠https://newsletter.pragmaticengineer.com/p/shipping-to-production⁠ — Where to find Austin Louden: • GitHub: https://github.com/austinlouden • LinkedIn: https://www.linkedin.com/in/austinlouden • Website: https://austinlouden.com/ Where to find Karn Saheb: • GitHub: https://github.com/Karn • LinkedIn: https://github.com/Karn • Website: https://karn.io Where to find Gergely: • Newsletter: https://www.pragmaticengineer.com/ • LinkedIn: https://www.linkedin.com/in/gergelyorosz/ • X: https://x.com/GergelyOrosz — In this episode, we cover: (00:00) Intro (02:03) The RFC process at Notion (06:00) How Notion uses internal channels to share RFCs (07:57) Some of the unique ways the mobile team works (11:07) Why they don’t do sprint planning at Notion—and what they do instead (12:57) An overview of the size of Notion and teams at Notion (13:15) The beginning of mobile at Notion (14:40) A simple explanation of Cordova (15:40) Why Notion decided to revamp mobile in 2019 and shift to Native (18:30) How the mobile team evaluated performance as they made the shift to Native (22:00) Scaling mobile and iterations of moving to Native (26:04) Why the home tab project was so complex (30:59) Why the mobile team saved the editor for last and other future problems (34:35) How mobile works with other teams (36:50) How iOS and Android teams work together (38:28) The tech stack at Notion (39:30) How frameworks are used (41:57) Pros and cons of different frameworks and why Swift was the right choice (45:16) How code reviews work at Notion (48:23) Notion’s mobile team’s testing philosophy (50:18) How the mobile team keeps compile time so fast (52:36) Modules in the iOS app (54:50) Modules in the Android app (56:44) Behind the scenes of an app release and the public beta (1:00:34) Practices around feature flags (1:03:00) The four dev environments at Notion (1:04:48) How development apps work (1:07:40) How and why you can work offline in Notion mobile (1:10:24) Austin and Karn’s thoughts on the future of mobile engineering (1:12:47) Advice for junior engineers (1:16:29) Rapid fire round — See the transcript and other references from the episode at https://newsletter.pragmaticengineer.com/podcast — Production and marketing by https://penname.co/. For inquiries about sponsoring the podcast, email [email protected].

Comment