Building for unreliable networks.
WHAT TO ASSUME
Connections drop mid-action.
WHAT THAT MEANS
Any action may be half-completed.
WHAT TO BUILD
Requests that can be safely retried Clear indication of what succeeded Preservation of unsent input
WHY PRESERVING INPUT MATTERS MOST
Losing a long form to a dropped connection is the most infuriating failure in web software.
WHAT TO DO
Save drafts locally as they type.
WHAT IDEMPOTENCY MEANS HERE
A repeated submission producing one result, not two.
HOW TO ACHIEVE IT
A unique key per action, checked before processing.
WHY IT MATTERS
Users retry when unsure, and duplicates follow.
WHAT TO SHOW DURING SLOW OPERATIONS
Progress, and what is happening.
WHAT TO AVOID
Operations that appear frozen Timeouts with no explanation Errors saying only that something went wrong
WHAT TO REDUCE
Page weight, and the number of requests.
WHY
Each request is another chance to fail.
WHAT TO CACHE
Anything that rarely changes.
WHAT TO TEST DELIBERATELY
High latency Packet loss Connection lost mid-request
WHAT THAT REVEALS
Almost every assumption you made about the network.