Shipping Two Apps in One on Android - Snap Engineering
Read Full ArticleSummary
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 complexities of maintaining app isolation, and the development of a library called 'Stuffing' to facilitate this process. The article emphasizes the trade-offs involved, including increased app size and performance considerations, while detailing the technical requirements and implementation strategies that allowed for a successful rollout without regressions in critical business metrics.
Key Learnings
- 1The 'Stuffing' library enables the coexistence of multiple app families within a single APK while maintaining isolation and independent functionality.
- 2A/B testing can be effectively implemented in production environments by shipping multiple app versions together, allowing for gradual rollouts and performance monitoring.
- 3Managing app families requires careful handling of AndroidManifest components and state management to ensure a seamless user experience during app switches.
- 4The approach introduces complexities that necessitate thorough testing and consideration of edge cases, particularly regarding user data migration and app entry points.
Who Should Read This
Senior Mobile Developers designing complex Android applications requiring A/B testing and iterative rollout strategies.
Test Your Knowledge
What are the key trade-offs associated with shipping two apps in one APK, and how do they impact user experience?
How does the 'Stuffing' library facilitate the isolation of multiple app families within a single APK?
What strategies were employed to manage the transition between app families, and what challenges arose during this process?
In what ways does this approach to app deployment enhance A/B testing capabilities compared to traditional methods?
What considerations must be taken into account to ensure data integrity during the switch between app families?
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...
Don't Rewrite Your App, Unless You Have To - Snap Engineering
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...
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...
Don't Rewrite Your App, Unless You Have To - Snap Engineering
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...
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...