Dropbox Stephen Poletto Apr 14, 2014

Building Carousel Part I: How We Made Our Networked Mobile App Feel Fast and Local

Article Summary

Dropbox's Carousel team faced a brutal truth: their photo app was slower than local galleries, and users noticed. No one wants to wait for network requests just to delete a photo.

This deep dive from Dropbox Engineering explains how they rebuilt their mobile photo app architecture from the ground up. The goal was ambitious: make a cloud-backed gallery feel as fast as native device storage.

Key Takeaways

Critical Insight

By treating local and remote photos as equivalent objects and replaying pending operations on cached server state, Carousel eliminated all user-facing network waits.

The LUID system solved a tricky problem: how do you let users share photos that are still uploading, even from other devices?

About This Article

Problem

The carousel needed to handle collections with over 100,000 photos without slowing down. The team had to focus on memory management and work around Android's garbage collector limitations.

Solution

Dropbox built a delta-based architecture that keeps the photo model in memory and updates it as new changes come in. They added a delta layer between disk and memory to reduce latency.

Impact

By treating local and remote photos as the same type of object, users could share and delete photos instantly. Network delays became invisible, so the app no longer needed blocking HTTPS requests that made users wait.