Find My Friends — Notes
Functional
- Share live location with chosen friends/family.
- See last-known and live position on map.
- Geofence alerts.
- Temporary share links.
- Emergency SOS.
Non-functional
- Update latency < 5 s glass-to-glass.
- Battery-efficient (sparse updates when idle).
- Strong privacy controls.
Capacity
- 100M+ users; 100s of millions of small updates / hr.
- WS connections sized like chat (~100k per gateway).
Schema
presence(user_id, lat, lng, accuracy, ts) Redis hash with TTL
sharing(owner_id, viewer_id, since, until, precision)
geofences(user_id, region, trigger_event)
Trade-offs
- Always-on WS vs push wakeup: WS for foreground; push notifications wake app briefly.
- Per-user channel vs presence query: channel push is timelier; periodic query is simpler.
- Server-side history = nice UX but big storage/privacy risk; default off.
Refs
- Apple Find My architecture talks (WWDC),
Google Family Link / Maps share location,
ByteByteGo "Design proximity / find friends".