Skip to content

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".