Back to compare picker

Conflict resolution vs Conflict state vs Review before submit vs Autosave recovery

Conflict resolution is the guided decision workflow after a conflict is detected. Conflict state signals and preserves competing versions, review before submit checks the user's own answers before final commit, and autosave recovery preserves work after failed or uncertain saving.

Learn the decision

Match the interaction to the person's task

Conflict resolution is the guided decision workflow after a conflict is detected. Conflict state signals and preserves competing versions, review before submit checks the user's own answers before final commit, and autosave recovery preserves work after failed or uncertain saving.

Conflict resolution

Use it when: A conflict has been detected and a user must choose, merge, save-copy, skip, or commit a result.

Make this state clear: Conflict list state with unresolved count and current conflict position.

Observe the result: A user resolves the supervisor comment by merging both versions, keeps the server contact number, saves the local safety note as a copy, reviews the final report, then commits with an audit summary.

Study the full pattern →

Conflict state

Use it when: Concurrent users, devices, branches, or background jobs changed the same object or location.

Make this state clear: Conflict detected state naming affected object and source versions.

Observe the result: A user tries to sync an offline field report, reviews only the two changed fields, merges one comment, keeps the server contact number, and commits a resolved version.

Study the full pattern →

Review before submit

Use it when: A user has provided multiple answers and should verify them before a consequential submit action.

Make this state clear: Initial review state with grouped captured answers, relevant sections, and explicit submit action.

Observe the result: A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved.

Study the full pattern →

Autosave recovery

Use it when: Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work.

Make this state clear: Clean saved state with current server timestamp.

Observe the result: A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates.

Study the full pattern →

Practice the judgment: Imagine this situation: A review page asks users to check answers but hides that another source changed the same field. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Conflict resolutionConflict stateReview before submitAutosave recovery
UI or UX UI + UX - Guided workflow for reviewing and committing conflict decisionsUI + UX - Competing-version resolution stateUI + UX - Final editable answer summary before committing a transactionUI + UX - Recovery surface for failed or uncertain background saves
UI guidance Show a durable resolution workspace that lists every unresolved conflict, exposes the current conflict, names each version source, and separates choose-local, choose-remote, merge, save-copy, skip, and commit actions.Show both competing versions near the affected object, field, paragraph, file, row, or branch with source labels such as Your edit, Server version, Mina's edit, Target branch, and Current published value.Render a single review page immediately before commit with a clear title, grouped answer sections, readable key/value rows, per-answer or per-section Change actions, skipped optional answers when meaningful, and a primary button whose label names the committed action.Keep the user's latest local value visible or copyable until recovery succeeds, and distinguish Retry save, Keep local copy, Restore last saved, Compare versions, Download copy, and Continue after recovery.
UX guidance Use conflict resolution after conflict detection when users must make one or more explicit decisions before a record, document, branch, import, or synced object can continue.Preserve each version, explain why automatic merge was unsafe, guide users through the smallest conflicting unit, and make the post-resolution result reviewable before committing.Use review before submit to give users one final chance to verify and correct captured answers before a transaction is sent, paid, published, applied, or otherwise committed.Use autosave recovery when users need to preserve effort after background saving fails, stalls, conflicts, expires, or only stores a local copy.
Good UI A field report resolver shows 2 of 3 conflicts remaining, displays Your offline value and Mina's server value for the current field, offers Keep local, Keep server, Merge both, Save copy, and shows a reviewed result before Commit resolutions.A field report says Conflict on supervisor comment, shows Your offline edit from 11:06 beside Server edit by Mina at 11:07, and offers Keep mine, Keep server, and Merge comment.A claim review page has Applicant, Contact details, Evidence, and Declaration sections; each row shows the captured answer and a Change link with hidden context such as Change email address.A claim form says Household income answer failed to autosave at 10:42, keeps the typed answer visible, and offers Retry save, Copy answer, Restore last saved, and Continue after saved.
Bad UI A resolver lets users click Commit while some conflicts are still unresolved and hides which side will be lost.A save banner says Something went wrong and only offers Retry after another user changed the same field.Change links lack context, so assistive technology users hear a list of identical Change links.The app clears the field after a failed autosave and offers only Reload page.
Good UX A user resolves the supervisor comment by merging both versions, keeps the server contact number, saves the local safety note as a copy, reviews the final report, then commits with an audit summary.A user tries to sync an offline field report, reviews only the two changed fields, merges one comment, keeps the server contact number, and commits a resolved version.A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved.A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates.
Bad UX The system silently resolves all conflicts by newest timestamp and only shows a success toast.The app silently keeps the newest server value and deletes the user's local note.A user selects Change address, edits one field, then has to repeat every later page before finding the review page again.A stale saved timestamp hides that the latest answer failed after the timestamp.
Best fit A conflict has been detected and a user must choose, merge, save-copy, skip, or commit a result.Concurrent users, devices, branches, or background jobs changed the same object or location.A user has provided multiple answers and should verify them before a consequential submit action.Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work.
Avoid when The interface only needs to signal that a conflict exists and route users elsewhere.The user is managing an unpublished draft lifecycle rather than resolving competing edits.The task is a single low-risk field with clear inline validation and an obvious submit action.The work is a durable draft object with list-level resume, publish, and discard lifecycle.
Required state Conflict list state with unresolved count and current conflict position.Conflict detected state naming affected object and source versions.Initial review state with grouped captured answers, relevant sections, and explicit submit action.Clean saved state with current server timestamp.
Accessibility burden Place resolution controls after the compared values they affect and label them with the source they keep or discard.Associate each conflict message with the affected field, row, line, paragraph, or file.Use headings that make the review task explicit, such as Check your answers before sending your application.Place recovery controls in reading order near the affected field, section, or submit action.
Common misuse Marking conflicts resolved before the user reviews the surviving value.Treating a conflict as a simple retryable save error.Labelling the final commit button Continue.Leaving a green Saved label visible after a failed or stale autosave.

Conflict resolution

UI or UX
UI + UX - Guided workflow for reviewing and committing conflict decisions
UI guidance
Show a durable resolution workspace that lists every unresolved conflict, exposes the current conflict, names each version source, and separates choose-local, choose-remote, merge, save-copy, skip, and commit actions.
UX guidance
Use conflict resolution after conflict detection when users must make one or more explicit decisions before a record, document, branch, import, or synced object can continue.
Good UI
A field report resolver shows 2 of 3 conflicts remaining, displays Your offline value and Mina's server value for the current field, offers Keep local, Keep server, Merge both, Save copy, and shows a reviewed result before Commit resolutions.
Bad UI
A resolver lets users click Commit while some conflicts are still unresolved and hides which side will be lost.
Good UX
A user resolves the supervisor comment by merging both versions, keeps the server contact number, saves the local safety note as a copy, reviews the final report, then commits with an audit summary.
Bad UX
The system silently resolves all conflicts by newest timestamp and only shows a success toast.
Best fit
A conflict has been detected and a user must choose, merge, save-copy, skip, or commit a result.
Avoid when
The interface only needs to signal that a conflict exists and route users elsewhere.
Required state
Conflict list state with unresolved count and current conflict position.
Accessibility burden
Place resolution controls after the compared values they affect and label them with the source they keep or discard.
Common misuse
Marking conflicts resolved before the user reviews the surviving value.

Conflict state

UI or UX
UI + UX - Competing-version resolution state
UI guidance
Show both competing versions near the affected object, field, paragraph, file, row, or branch with source labels such as Your edit, Server version, Mina's edit, Target branch, and Current published value.
UX guidance
Preserve each version, explain why automatic merge was unsafe, guide users through the smallest conflicting unit, and make the post-resolution result reviewable before committing.
Good UI
A field report says Conflict on supervisor comment, shows Your offline edit from 11:06 beside Server edit by Mina at 11:07, and offers Keep mine, Keep server, and Merge comment.
Bad UI
A save banner says Something went wrong and only offers Retry after another user changed the same field.
Good UX
A user tries to sync an offline field report, reviews only the two changed fields, merges one comment, keeps the server contact number, and commits a resolved version.
Bad UX
The app silently keeps the newest server value and deletes the user's local note.
Best fit
Concurrent users, devices, branches, or background jobs changed the same object or location.
Avoid when
The user is managing an unpublished draft lifecycle rather than resolving competing edits.
Required state
Conflict detected state naming affected object and source versions.
Accessibility burden
Associate each conflict message with the affected field, row, line, paragraph, or file.
Common misuse
Treating a conflict as a simple retryable save error.

Review before submit

UI or UX
UI + UX - Final editable answer summary before committing a transaction
UI guidance
Render a single review page immediately before commit with a clear title, grouped answer sections, readable key/value rows, per-answer or per-section Change actions, skipped optional answers when meaningful, and a primary button whose label names the committed action.
UX guidance
Use review before submit to give users one final chance to verify and correct captured answers before a transaction is sent, paid, published, applied, or otherwise committed.
Good UI
A claim review page has Applicant, Contact details, Evidence, and Declaration sections; each row shows the captured answer and a Change link with hidden context such as Change email address.
Bad UI
Change links lack context, so assistive technology users hear a list of identical Change links.
Good UX
A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved.
Bad UX
A user selects Change address, edits one field, then has to repeat every later page before finding the review page again.
Best fit
A user has provided multiple answers and should verify them before a consequential submit action.
Avoid when
The task is a single low-risk field with clear inline validation and an obvious submit action.
Required state
Initial review state with grouped captured answers, relevant sections, and explicit submit action.
Accessibility burden
Use headings that make the review task explicit, such as Check your answers before sending your application.
Common misuse
Labelling the final commit button Continue.

Autosave recovery

UI or UX
UI + UX - Recovery surface for failed or uncertain background saves
UI guidance
Keep the user's latest local value visible or copyable until recovery succeeds, and distinguish Retry save, Keep local copy, Restore last saved, Compare versions, Download copy, and Continue after recovery.
UX guidance
Use autosave recovery when users need to preserve effort after background saving fails, stalls, conflicts, expires, or only stores a local copy.
Good UI
A claim form says Household income answer failed to autosave at 10:42, keeps the typed answer visible, and offers Retry save, Copy answer, Restore last saved, and Continue after saved.
Bad UI
The app clears the field after a failed autosave and offers only Reload page.
Good UX
A user loses network while writing a long answer, sees it is saved on this device only, reconnects, retries the same value, and continues after the timestamp updates.
Bad UX
A stale saved timestamp hides that the latest answer failed after the timestamp.
Best fit
Autosave failed, stalled, expired, or became uncertain while users still have meaningful local work.
Avoid when
The work is a durable draft object with list-level resume, publish, and discard lifecycle.
Required state
Clean saved state with current server timestamp.
Accessibility burden
Place recovery controls in reading order near the affected field, section, or submit action.
Common misuse
Leaving a green Saved label visible after a failed or stale autosave.
Decision rules
  • Use conflict resolution when users must step through one or more detected conflicts, decide what survives, preview the resolved result, and commit or defer decisions.
  • Use conflict state when the main UI task is to expose that competing valid versions exist, preserve both values, and route users toward a resolution path.
  • Use review before submit when the user is checking their own captured answers before final submission and no external source, collaborator, branch, server, or import row is competing.
  • Use autosave recovery when a background save failed, stalled, expired, or became uncertain and the first job is to preserve or restore the latest local work before a resolution workflow exists.
  • Conflict resolution should show unresolved count, current conflict position, source labels, decision controls, resolved preview, skipped or copied items, and final commit state.
  • Conflict state can show Keep mine or Keep server actions for a single conflict, but a multi-conflict or audited decision sequence needs a conflict resolution workflow.
  • Review before submit can link users back to change an answer; conflict resolution must preserve both competing values until the chosen result is committed.
  • Autosave recovery may hand off to conflict resolution when local and server values both changed and the user must choose or merge them.
  • Do not use generic Retry, Accept all, or newest timestamp wins for conflict resolution; users need to inspect what will be kept and discarded.
  • Do not clear conflict badges or saved-state warnings until the resolved value is accepted by the server, document, import job, or repository.
Inspect live examples
Failure modes
  • A conflict state says Review needed but opens a page with no ordered list of conflicts or final commit review.
  • A review page asks users to check answers but hides that another source changed the same field.
  • Autosave recovery compares versions but commits one side without a resolution decision.
  • A conflict resolver enables Commit while required conflicts remain skipped or invalid.
  • A bulk Accept all action discards local, collaborator, or target-branch values without showing a final summary.
  • A resolved preview is accepted in the browser but the server rejects it and the UI still clears the conflict.

Saved items