Race Conditions & Request Ordering

Suppose a user searches for rea, then quickly changes the query to react. If the first request finishes after the second, a naive implementation can display stale results.

Cancellation is one solution. Another is assigning each request an identity and accepting a response only if it still matches the latest request. Data-fetching libraries often handle these concerns for you.

The broader principle is that asynchronous work can finish in a different order from the order in which it started. UI state must respect the logical ordering expected by the user.

Async Race
Key Takeaways
  • Completion order is not start order.
  • Cancel or ignore obsolete async work.
  • Treat request identity as part of correctness, not just performance.