A browser-to-browser handoff can look simple in a five-minute test: open one page, scan its QR code on a phone, connect two WebSockets, and move some text. The harder test is leaving both devices alone for a day.
That exposed an uncomfortable failure mode in a QR-paired tool I maintain. Android could remain on Connecting indefinitely, while the desktop still showed old text and neither side made useful progress. Reloading the phone was not a real recovery path either: an expired pair could become Disconnected or Pairing unavailable without producing the fresh QR code the user needed.
The problem was not just a dropped socket. It was a client state model that did not distinguish transport recovery from pairing recovery clearly enough.
Disclosure: this article was prepared with AI editorial assistance from implementation and test notes. The behavior described below was checked against the deployed client plus automated and physical-device evidence.
A WebSocket is not the session






