Notion: going native on iOS and Android
Description
Supported by Our Partner
DX → DX is an engineering intelligence platform designed by leading researchers
—
In today’s exciting episode of The Pragmatic Engineer, I am joined by two members of the Notion mobile apps team, Austin Louden and Karn Saheb. Austin and Karn joined Notion in 2019 when Notion was revamping its mobile apps.
Notion is a versatile productivity and collaboration platform that combines note-taking, task management, and knowledge organization into a single workspace. It is available as a web app, as well as iOS and Android apps for mobile use.
In our conversation today, we take a deep dive into how the Notion mobile team operates and discuss the following:
• What the engineering culture is like at Notion
• Why the mobile team focuses so much on app performance
• The incremental shift from Cordova to Native
• Notion’s tech stack and frameworks they rely on
• How the mobile team maintains consistency across iOS and Android
• Unique features of the development process, including a public beta, using modules, and practices around feature flags
• … and much more!
—
Timestamps
(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
—
The Pragmatic Engineer deepdives relevant for this episode:
—
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/
• YouTube: https://www.youtube.com/c/mrgergelyorosz
• LinkedIn: https://www.linkedin.com/in/gergelyorosz/
• X: https://x.com/GergelyOrosz
—
References and Transcripts:
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 podcast@pragmaticengineer.com.
Get full access to The Pragmatic Engineer at newsletter.pragmaticengineer.com/subscribe