Design One-to-One Messaging Across Multiple Devices
Company: Lyft
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design a messenger that supports one-to-one conversations. Messages must be stored on the server so users can retrieve their conversation history.
### Part 1 — Message storage and delivery
Describe the send path, persistent message model, and delivery to a recipient who is currently online. Explain how an offline recipient is notified through APNs or Google Firebase Cloud Messaging.
#### What This Part Should Cover
- A durable acceptance point, stable message identity, and retry behavior.
- The relationship between online connections, presence information, and mobile push notifications.
- The distinction between storing a message, notifying a device, and knowing that a user has read it.
### Part 2 — Multiple devices and history
Users can be logged in on several devices at once. Explain how messages synchronize across those devices and how a user pages through older server-stored messages.
#### What This Part Should Cover
- Device-specific connections and synchronization progress, including reconnects and missed messages.
- A stable conversation ordering and cursor-based history pagination during concurrent new sends.
- Authorization checks that restrict every delivery and history request to conversation participants.
### What a Strong Answer Covers
- A consistent account of message identity and ordering across storage, retries, live delivery, push, and history.
- Recovery when connection or notification state is stale, rather than treating presence as proof of delivery.
- Explicit assumptions about scale and optional features; group chat and invented latency targets are not required.
### Follow-up Questions
- What happens if a message is stored successfully but the sender times out before receiving the response?
- How does a device recover a gap if it receives a newer message before an older one?
Overview: Design one-to-one messaging with durable sends, online delivery, mobile push, multi-device synchronization, retries, and stable conversation-history pagination.
Design One-to-One Messaging Across Multiple Devices
Lyft
Sep 8, 2026
mediumSoftware EngineerOnsiteSystem Design
0
0
Design a messenger that supports one-to-one conversations. Messages must be stored on the server so users can retrieve their conversation history.
Part 1 — Message storage and delivery
Describe the send path, persistent message model, and delivery to a recipient who is currently online. Explain how an offline recipient is notified through APNs or Google Firebase Cloud Messaging.
What This Part Should Cover Guidance
A durable acceptance point, stable message identity, and retry behavior.
The relationship between online connections, presence information, and mobile push notifications.
The distinction between storing a message, notifying a device, and knowing that a user has read it.
Part 2 — Multiple devices and history
Users can be logged in on several devices at once. Explain how messages synchronize across those devices and how a user pages through older server-stored messages.
What This Part Should Cover Guidance
Device-specific connections and synchronization progress, including reconnects and missed messages.
A stable conversation ordering and cursor-based history pagination during concurrent new sends.
Authorization checks that restrict every delivery and history request to conversation participants.
What a Strong Answer Covers Guidance
A consistent account of message identity and ordering across storage, retries, live delivery, push, and history.
Recovery when connection or notification state is stale, rather than treating presence as proof of delivery.
Explicit assumptions about scale and optional features; group chat and invented latency targets are not required.
Follow-up Questions Guidance
What happens if a message is stored successfully but the sender times out before receiving the response?
How does a device recover a gap if it receives a newer message before an older one?