Don't Rewrite Your App, Unless You Have To - Snap Engineering
Read Full ArticleSummary
The article discusses the Snapchat Engineering team's experience in rewriting their Android app to enhance performance and reduce bugs. It outlines the challenges faced due to the app's complexity and the decision-making process that led to the rewrite. The team focused on creating a modular architecture that allowed for faster loading times and better resource management. Key strategies included setting ground rules for development, maintaining a narrow scope to avoid scope creep, and adopting a Minimum Viable Product (MVP) mentality to ensure quality throughout the development process.
Key Learnings
- 1Rewriting an app can be a more efficient solution than incremental refactoring when faced with significant performance issues.
- 2Establishing clear ground rules and focusing on performance can help teams avoid common pitfalls during a rewrite.
- 3Adopting an MVP strategy allows teams to identify and address performance regressions early in the development process.
- 4Maintaining a modular architecture facilitates ongoing improvements and refactoring without the need for complete rewrites.
- 5Effective project management and communication are crucial to keep teams aligned and focused during lengthy development cycles.
Who Should Read This
Senior Mobile Developers with experience in app performance optimization and those facing challenges in scaling complex mobile applications.
Test Your Knowledge
What specific performance issues prompted the Snapchat team to consider a complete rewrite of their Android app?
How did the team ensure that the rewrite did not introduce new bugs or regressions?
What strategies did the team implement to maintain focus and avoid scope creep during the rewrite?
In what ways did the MVP mentality influence the development and testing of the new app?
What lessons were learned regarding the modular architecture of the app, and how does it support future development?
Topics
More articles about Android
Explore Android engineering →Android VPAT journey
The article outlines Slack's journey in improving accessibility for its Android application through a Voluntary Product Accessibility Template (VPAT). It details the identification of accessibility...
How AI Is Transforming the Adoption of Secure-by-Default Mobile Frameworks
The article explores how Meta is transforming mobile security through the development of secure-by-default frameworks that integrate seamlessly with existing APIs. These frameworks are designed to...
Shipping Two Apps in One on Android - Snap Engineering
The article outlines the engineering challenges and solutions encountered by Snap in shipping two versions of the Snapchat app within a single APK. It discusses the need for A/B testing, the...
A Developer Ecosystem for Snapchat - Snap Engineering
The article outlines the Snap Kit ecosystem, which provides developers with tools to integrate Snapchat's features into their applications. It describes various kits such as Creative Kit, Login Kit,...
Improving Djinni - Snap Engineering
The article discusses the enhancements made to the Djinni project, a tool for generating bridging code between C++ and other programming languages, particularly for mobile applications. It highlights...
More from Snap (Snapchat) Engineering
View Snap (Snapchat) engineering blogs →Spectacles - EyeConnect
The article discusses EyeConnect, a feature designed to facilitate shared augmented reality experiences by allowing users to connect their Spectacles through a novel motion tracking algorithm. Unlike...
Universal User Modeling (UUM): A Foundation Model for User Understanding at Snapchat
The article discusses Universal User Modeling (UUM) at Snapchat, a foundational model designed to enhance user understanding across various product surfaces. UUM captures user behaviors over time by...
From Monolith to Multicloud Micro-Services: Inside Snap’s Service Mesh - Snap Engineering
The article outlines Snap Engineering's transition from a monolithic application architecture to a microservices architecture deployed across multiple cloud providers, specifically AWS and Google...
Making The Most of a Rewrite - Snap Engineering
The article outlines the process and considerations involved in rewriting the Snapchat application, focusing on architectural improvements to enhance performance and maintainability. It emphasizes...
Device-Distributed Machine Learning - Snap Engineering
The article presents Device-Distributed Machine Learning (DDML), a framework developed by Snapchat that enables training machine learning models directly on client devices while preserving user...