This document discusses building offline-first applications. It recommends planning data structure and synchronization approaches before development. It also stresses being paranoid about users' data and developing applications with offline-first design. The key components of offline-first apps are offline data storage, data synchronization between client and server, and user experience during online and offline states. Common data synchronization approaches include replication, operational transformation, and conflict-free replicated data types.