• Success Criterion 3.3.4
  • Conformance level AA

Timeout That Auto-Submits and Commits a Final Transaction

3.3.4 — Error Prevention (Legal, Financial, Data)

Scenario

Setting

An online spreadsheet's toolbar

What’s wrong

Auto-submitting final steps on timeout (compound with 2.2.1) committing the transaction.

Example

// pendingInvoice is queued when the toolbar's 'Send Invoice' button is clicked, then held for one final review
function onSessionTimeout() {
  if (pendingInvoice) {
    sendInvoice(pendingInvoice); // auto-submits and finalizes the transaction just because the session timed out
  }
}

Why it matters

A freelancer who clicks the toolbar's Send Invoice button, then steps away mid-review, finds their unfinished invoice already sent and finalized by the time they return.

How to test

Let a timed step expire: if it auto-submits and commits the transaction rather than warning first, it fails (also relevant to 2.2.1).

How to fix

A timeout should pause or discard a pending action, never complete something binding on the user's behalf.

// pendingInvoice is still queued from the toolbar's 'Send Invoice' button
function onSessionTimeout() {
  if (pendingInvoice) {
    discardDraft(pendingInvoice); // saved as a draft instead, never auto-committed
    notifyUser('Your session timed out. The invoice was saved as a draft, not sent.');
  }
}

Outcome

The freelancer returns from the interruption to find a saved draft, not a sent invoice, and finishes reviewing it.

Who is affected

People who need more time to read and review, including users with cognitive disabilities and screen reader users working at a slower pace.

Learn more