Error recovery does not lose user data
Why it matters
A user who fills out a multi-field signup form, hits a server error, and finds all their input cleared will abandon rather than re-type. ISO 25010 reliability.fault-tolerance requires that fault recovery not introduce secondary failures — clearing user data on error is exactly that. This is especially damaging in multi-step onboarding flows, payment forms, and file upload workflows where re-entering data has high friction. Catch blocks that call form.reset() or setState({}) on error are the most common defect pattern: the form correctly shows an error message but simultaneously destroys the data the user needs to re-submit.
Severity rationale
High because error handlers that clear form state force users to re-enter all input after a server failure, causing direct abandonment in high-value conversion flows.
Remediation
Ensure catch blocks never reset form state — only update the error message and re-enable the submit button.
// Wrong — destroys user input on error
} catch (error) {
form.reset()
setError('Submission failed')
}
// Right — preserves user input, only surfaces the error
} catch (error) {
setSubmitError('Submission failed. Your data is preserved — please try again.')
setIsSubmitting(false)
}
For multi-step flows, store step state in a parent component or context that persists across step unmounts rather than inside individual step components. For file uploads, keep the File object in parent state and only clear it after confirmed server-side success — never on upload failure.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Error Handling Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · reliability.fault-tolerance
Taxons
History
- 2026-04-18·v1.0.0·Initial import from saas-error-handling·automated