Snap (Snapchat)
11 min read

Shipping Two Apps in One on Android - Snap Engineering

Read Full Article

Summary

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

Read Full Article at Snap (Snapchat)