How do you design a REST API specifically for mobile-first clients considering bandwidth and offline-first use cases?

Answer

Mobile clients have unique constraints that shape API design. Minimize payload size: implement sparse fieldsets (?fields=id,name), use gzip/brotli compression (mandatory for mobile), and return only necessary nested data. Consider a BFF (Backend for Frontend) layer that aggregates multiple service calls into one mobile-optimized response, reducing round trips. Reduce round trips: design composite endpoints that return all data a screen needs in one call (GET /home-feed returns posts, stories, and user info together). Support conditional requests (ETags) so the client can check for changes without re-downloading unchanged data. For offline-first: design APIs around a sync model — each resource has an updatedAt timestamp, and clients send GET /posts?updatedSince=2024-01-01T00:00:00Z to fetch only changes. Use conflict resolution strategies (last-write-wins, version vectors, or server authority) for data modified offline. Support delta sync — a dedicated /sync endpoint returns only changed/deleted items since the last sync token. Idempotency keys on POST requests let mobile clients safely retry mutations when offline actions are replayed on reconnection. Optimize for slow networks by supporting request priority hints and limiting default page sizes to 20-50 items.