My learning 0 of 20 lessons complete
Start lesson 1 →
Back to compare picker

Booking vs Scheduling vs Checkout vs Date picker vs Time picker vs Date range picker vs Payment collection vs Confirmation page vs Conflict state

Use booking when a customer reserves an offered slot, service, staff member, room, seat, or appointment; scheduling when an organizer coordinates calendars and attendees; checkout when the primary commitment is a purchase; and date/time pickers only for field-level selection.

Learn the decision

Match the interaction to the person's task

Use booking when a customer reserves an offered slot, service, staff member, room, seat, or appointment; scheduling when an organizer coordinates calendars and attendees; checkout when the primary commitment is a purchase; and date/time pickers only for field-level selection.

Booking

Use it when: Users reserve an offered appointment, service, class, room, resource, seat, table, pickup window, or visit.

Make this state clear: Service or appointment type selection state.

Observe the result: A client chooses a 45-minute haircut, sees only available stylist times, enters phone and notes, accepts the late-cancel policy, pays a deposit, receives a reference, and gets cancel and reschedule links.

Study the full pattern →

Scheduling

Use it when: Users coordinate time across people, resources, calendars, availability, or recurrence.

Make this state clear: Draft event state

Observe the result: A team lead adds three required attendees, sees one conflict at 10:00, chooses an 11:30 suggested time, adds a room and video link, sends invitations, and sees pending responses.

Study the full pattern →

Checkout

Use it when: A user is ready to purchase selected items, services, tickets, subscriptions, donations, or orderable options.

Make this state clear: Cart summary state with items, quantities, price, shipping, tax, discount, and total due.

Observe the result: A user changes shipping speed, sees delivery date and total update in the sticky order summary, reviews the final charge, places the order once, and lands on a confirmation page with an order number.

Study the full pattern →

Date picker

Use it when: Users are scheduling, booking, planning, or selecting a recent or future date.

Make this state clear: Closed labelled text field with visible date-format hint and calendar button.

Observe the result: A user opens the calendar, sees weekends unavailable, moves to August, chooses Tuesday 11 August 2026, and reviews stored value 2026-08-11.

Study the full pattern →

Time picker

Use it when: Users choose appointment, meeting, delivery, pickup, reminder, or service times.

Make this state clear: Empty labelled time field with persistent hint and optional timezone default.

Observe the result: A user types 9, filters the list to 9:00 AM and 9:30 AM, chooses 9:30 AM, selects Eastern time, and submits canonical value 09:30:00 America/New_York.

Study the full pattern →

Date range picker

Use it when: Users need to select a reporting, analytics, booking, scheduling, campaign, or eligibility period.

Make this state clear: Empty start and end fields with visible labels, date-format hints, and a calendar trigger.

Observe the result: A user chooses Last 7 days, sees 2026-08-08 through 2026-08-14 filled in the calendar, reviews both inputs, then applies the range.

Study the full pattern →

Payment collection

Use it when: The user must pay a known fee, invoice, balance, application charge, renewal, subscription, donation, deposit, or service amount.

Make this state clear: Payment request state with amount, currency, reference, description, payer context, accepted methods, and secure provider handoff.

Observe the result: The person reaches a clear outcome.

Study the full pattern →

Confirmation page

Use it when: A transaction or service journey has ended and users need durable proof plus next-step information.

Make this state clear: Submitted state immediately after authoritative commit routes to the confirmation page.

Observe the result: A user copies the reference, saves the receipt, follows Track application, and later returns from a bookmark to the same confirmation details or a helpful tracking fallback.

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 →

Practice the judgment: Imagine this situation: The interface hides staff, service duration, location, or timezone until after confirmation. 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 BookingSchedulingCheckoutDate pickerTime pickerDate range pickerPayment collectionConfirmation pageConflict state
UI or UX UI + UX - Customer-facing flow for reserving an offered slot, service, resource, appointment, class, or seatUI + UX - Workflow for arranging time, attendees, availability, recurrence, and remindersUI + UX - Purchase commitment and order finalization flowUI + UX - Single-date text field with attached calendar menuUI + UX - Time input with filtered slot list, period selector, and timezone selectorUI + UX - Two date fields with attached range calendar and apply controlsUI + UX - Payment request, authorization, and status lifecycleUI + UX - Final endpoint page after a transaction is completeUI + UX - Competing-version resolution state
UI guidance Render booking as a reservation contract with service or appointment type, provider or staff, location or delivery mode, available date and time slots, duration, timezone, party size or capacity, price or deposit when applicable, customer details, intake questions, policy acceptance, and confirmation action.Render scheduling as a coordinated time-planning workflow with title, calendar, attendees, required and optional people, rooms or resources, location or conference link, date, start and end time, timezone, recurrence, availability, reminders, and save or send outcome.Render checkout as a purchase commitment flow with order summary, customer contact, shipping or pickup choice, payment handoff, discount and tax state, total due, review, place-order action, payment processing, and confirmation handoff.Render a labelled date text field with a persistent format hint and a calendar button that opens a month grid aligned to the field.Render a labelled time field with persistent hint text, filtered time suggestions, clear selected state, AM/PM control when using 12-hour display, and timezone control when interpretation depends on location.Render separate labelled start and end date fields with persistent format hints, a calendar trigger, and a shared calendar menu that shows both endpoints and the days between them.Render payment collection as a money-movement journey with amount due, reference, payer or service context, accepted methods, provider handoff, authorization or processing state, failure and cancel recovery, retry rules, receipt, and reconciliation status.Render a full page after commit with a prominent completion panel, a page heading that names what finished, a reference or receipt when users need one, and a clear section for what happens next.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 Use booking when a customer, invitee, client, patient, guest, student, or attendee reserves a provider-defined appointment, class, room, seat, resource, or service slot.Use scheduling when users arrange a meeting, event, availability rule, or recurring time plan that must account for people, calendars, rooms, buffers, time zones, recurrence, reminders, invitations, or conflicts.Use checkout when a user is ready to turn selected items, services, tickets, or subscriptions into a committed order and needs confidence about total cost, delivery, payment, and recovery before placing the order.Use a date picker when choosing a date requires calendar context such as weekday, nearby availability, booking windows, deadlines, or recent/future scheduling.Use a time picker when users are scheduling or choosing a specific clock time from predictable increments such as 15-minute or 30-minute appointments.Use a date range picker when users need to select or inspect a continuous period such as a report window, trip, event, booking, campaign, or eligibility span.Use payment collection when the user must pay a bill, fee, invoice, application charge, renewal, subscription, donation, deposit, or balance and the service must make the amount, reference, status, and next action unambiguous.Use a confirmation page when the transaction or service journey has ended and users need durable proof, reassurance, next-step timing, or a record they can bookmark, print, quote, or revisit.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 salon booking page shows Haircut, 45 minutes, Zara as stylist, Thu 14:30, two remaining openings, New York timezone, price, intake questions, cancellation policy, and a Book appointment button.A meeting scheduler shows required attendees, free/busy bars, suggested times, selected timezone, room availability, video link, recurrence, reminders, and a Send invitation button.A checkout shows cart items, shipping address, delivery options, taxes, discount, total, payment state, and a Place order button that disables while authorization is pending.An appointment booking field shows Appointment date, hint mm/dd/yyyy, a calendar button, July 2026 grid, disabled weekends, today marker, and selected July 14 date.An appointment time field shows a label, hint that typing filters 30-minute slots, a 9:30 AM selected option, AM/PM selector, Eastern timezone selector, and canonical value 09:30:00.An analytics report control shows Since and Until text fields, quick choices for Today and Last 7 days, a two-week calendar grid, selected August 3 start, selected August 14 end, and a filled band for days inside the range.A permit-fee payment page shows Reference APP-2048, Amount due $84.00, accepted card and wallet methods, Continue to secure payment, and returns to a status page after provider authorization.A grant application page says Application complete, shows reference APP-48291, lists what happens next within 5 working days, and offers Save record, Track application, and feedback links.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 booking page lists calendar dates but hides service duration, staff, capacity, timezone, price, and cancellation policy until after confirmation.A recurring event editor hides whether changes apply to one occurrence or the whole series.A checkout hides shipping costs until after card entry and changes the total at the last moment.A grid of unlabeled numbers uses pale grey for unavailable dates but still lets users click them before showing a late error.A dropdown lists 1,440 minute-by-minute options even though appointments are only available every half hour.A calendar highlights only the first and last dates, leaving included days visually indistinguishable from unselected days.A page says Payment failed after redirect but hides whether the bank declined, the user canceled, the session expired, or money might still be pending.Users submit twice because refresh or Back replays the final action instead of returning to the receipt.A save banner says Something went wrong and only offers Retry after another user changed the same field.
Good UX A client chooses a 45-minute haircut, sees only available stylist times, enters phone and notes, accepts the late-cancel policy, pays a deposit, receives a reference, and gets cancel and reschedule links.A team lead adds three required attendees, sees one conflict at 10:00, chooses an 11:30 suggested time, adds a room and video link, sends invitations, and sees pending responses.A user changes shipping speed, sees delivery date and total update in the sticky order summary, reviews the final charge, places the order once, and lands on a confirmation page with an order number.A user opens the calendar, sees weekends unavailable, moves to August, chooses Tuesday 11 August 2026, and reviews stored value 2026-08-11.A user types 9, filters the list to 9:00 AM and 9:30 AM, chooses 9:30 AM, selects Eastern time, and submits canonical value 09:30:00 America/New_York.A user chooses Last 7 days, sees 2026-08-08 through 2026-08-14 filled in the calendar, reviews both inputs, then applies the range.The person reaches the intended result with clear feedback.A user copies the reference, saves the receipt, follows Track application, and later returns from a bookmark to the same confirmation details or a helpful tracking fallback.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 A guest books a restaurant table shown in local browser time but the venue expected venue time, so the reservation lands in the wrong slot.A user moves one weekly event and unintentionally shifts every event in the series.A user taps Place order twice during a slow authorization and receives two duplicate orders.A user selects a disabled Saturday because it was only dimmed, then loses their previous month when the error appears.A historical time-of-birth field forces a scheduling dropdown even though the user needs to type the exact recorded time.A dashboard refreshes on every hovered day while the user is still deciding the end date.A user pays the same invoice twice because retry generated a second reference instead of reusing a duplicate-safe payment attempt.Users submit twice because refresh or Back replays the final action instead of returning to the receipt.The app silently keeps the newest server value and deletes the user's local note.
Best fit Users reserve an offered appointment, service, class, room, resource, seat, table, pickup window, or visit.Users coordinate time across people, resources, calendars, availability, or recurrence.A user is ready to purchase selected items, services, tickets, subscriptions, donations, or orderable options.Users are scheduling, booking, planning, or selecting a recent or future date.Users choose appointment, meeting, delivery, pickup, reminder, or service times.Users need to select a reporting, analytics, booking, scheduling, campaign, or eligibility period.The user must pay a known fee, invoice, balance, application charge, renewal, subscription, donation, deposit, or service amount.A transaction or service journey has ended and users need durable proof plus next-step information.Concurrent users, devices, branches, or background jobs changed the same object or location.
Avoid when The user only needs one standalone date or time field.The user only needs one remembered date or time field.The user has already placed the order and needs a confirmation page, receipt, or post-purchase management.The date is far in the past, such as a birthday or historic document date.The answer is approximate, relative, unknown, or naturally expressed in words.The task asks for only one exact date.The task is a full ecommerce checkout with cart, shipping, tax, discounts, and order finalization.The user remains inside an ongoing task and only needs local proof near the changed object.The user is managing an unpublished draft lifecycle rather than resolving competing edits.
Required state Service or appointment type selection state.Draft event stateCart summary state with items, quantities, price, shipping, tax, discount, and total due.Closed labelled text field with visible date-format hint and calendar button.Empty labelled time field with persistent hint and optional timezone default.Empty start and end fields with visible labels, date-format hints, and a calendar trigger.Payment request state with amount, currency, reference, description, payer context, accepted methods, and secure provider handoff.Submitted state immediately after authoritative commit routes to the confirmation page.Conflict detected state naming affected object and source versions.
Accessibility burden Use labelled controls for service, staff/resource, location, party size, date, time, timezone, intake fields, policy acceptance, verification, payment, and final booking action.Use labelled fields for title, attendees, required/optional role, date, start time, end time, timezone, recurrence, location, conferencing, reminders, and calendar selection.Use headings that expose the current checkout task and step, such as Delivery, Payment, or Review order.Give the calendar button an accessible name and state that distinguishes opening from closing the menu.Use a visible label and persistent hint that explain filtering, increments, and time range.Label start and end fields separately and associate each hint and error with the correct field.Use headings that name the payment task and amount, such as Pay application fee or Pay invoice INV-1482.Keep interactive controls out of low-contrast panel treatments unless focus and text contrast are explicitly verified.Associate each conflict message with the affected field, row, line, paragraph, or file.
Common misuse Treating booking as only a date picker and time picker.Treating scheduling as only a date field and a time field.Forcing account creation before purchase when guest checkout would work.Using a calendar picker for a date of birth or other remembered historic date.Using a minute-by-minute dropdown for a schedule that only accepts 30-minute increments.Collapsing the range into one unlabeled field with ambiguous dash-separated dates.Letting users submit the same payment twice while the first attempt is processing.Showing a toast or local success strip as the only proof of a completed transaction.Treating a conflict as a simple retryable save error.

Booking

UI or UX
UI + UX - Customer-facing flow for reserving an offered slot, service, resource, appointment, class, or seat
UI guidance
Render booking as a reservation contract with service or appointment type, provider or staff, location or delivery mode, available date and time slots, duration, timezone, party size or capacity, price or deposit when applicable, customer details, intake questions, policy acceptance, and confirmation action.
UX guidance
Use booking when a customer, invitee, client, patient, guest, student, or attendee reserves a provider-defined appointment, class, room, seat, resource, or service slot.
Good UI
A salon booking page shows Haircut, 45 minutes, Zara as stylist, Thu 14:30, two remaining openings, New York timezone, price, intake questions, cancellation policy, and a Book appointment button.
Bad UI
A booking page lists calendar dates but hides service duration, staff, capacity, timezone, price, and cancellation policy until after confirmation.
Good UX
A client chooses a 45-minute haircut, sees only available stylist times, enters phone and notes, accepts the late-cancel policy, pays a deposit, receives a reference, and gets cancel and reschedule links.
Bad UX
A guest books a restaurant table shown in local browser time but the venue expected venue time, so the reservation lands in the wrong slot.
Best fit
Users reserve an offered appointment, service, class, room, resource, seat, table, pickup window, or visit.
Avoid when
The user only needs one standalone date or time field.
Required state
Service or appointment type selection state.
Accessibility burden
Use labelled controls for service, staff/resource, location, party size, date, time, timezone, intake fields, policy acceptance, verification, payment, and final booking action.
Common misuse
Treating booking as only a date picker and time picker.

Scheduling

UI or UX
UI + UX - Workflow for arranging time, attendees, availability, recurrence, and reminders
UI guidance
Render scheduling as a coordinated time-planning workflow with title, calendar, attendees, required and optional people, rooms or resources, location or conference link, date, start and end time, timezone, recurrence, availability, reminders, and save or send outcome.
UX guidance
Use scheduling when users arrange a meeting, event, availability rule, or recurring time plan that must account for people, calendars, rooms, buffers, time zones, recurrence, reminders, invitations, or conflicts.
Good UI
A meeting scheduler shows required attendees, free/busy bars, suggested times, selected timezone, room availability, video link, recurrence, reminders, and a Send invitation button.
Bad UI
A recurring event editor hides whether changes apply to one occurrence or the whole series.
Good UX
A team lead adds three required attendees, sees one conflict at 10:00, chooses an 11:30 suggested time, adds a room and video link, sends invitations, and sees pending responses.
Bad UX
A user moves one weekly event and unintentionally shifts every event in the series.
Best fit
Users coordinate time across people, resources, calendars, availability, or recurrence.
Avoid when
The user only needs one remembered date or time field.
Required state
Draft event state
Accessibility burden
Use labelled fields for title, attendees, required/optional role, date, start time, end time, timezone, recurrence, location, conferencing, reminders, and calendar selection.
Common misuse
Treating scheduling as only a date field and a time field.

Checkout

UI or UX
UI + UX - Purchase commitment and order finalization flow
UI guidance
Render checkout as a purchase commitment flow with order summary, customer contact, shipping or pickup choice, payment handoff, discount and tax state, total due, review, place-order action, payment processing, and confirmation handoff.
UX guidance
Use checkout when a user is ready to turn selected items, services, tickets, or subscriptions into a committed order and needs confidence about total cost, delivery, payment, and recovery before placing the order.
Good UI
A checkout shows cart items, shipping address, delivery options, taxes, discount, total, payment state, and a Place order button that disables while authorization is pending.
Bad UI
A checkout hides shipping costs until after card entry and changes the total at the last moment.
Good UX
A user changes shipping speed, sees delivery date and total update in the sticky order summary, reviews the final charge, places the order once, and lands on a confirmation page with an order number.
Bad UX
A user taps Place order twice during a slow authorization and receives two duplicate orders.
Best fit
A user is ready to purchase selected items, services, tickets, subscriptions, donations, or orderable options.
Avoid when
The user has already placed the order and needs a confirmation page, receipt, or post-purchase management.
Required state
Cart summary state with items, quantities, price, shipping, tax, discount, and total due.
Accessibility burden
Use headings that expose the current checkout task and step, such as Delivery, Payment, or Review order.
Common misuse
Forcing account creation before purchase when guest checkout would work.

Date picker

UI or UX
UI + UX - Single-date text field with attached calendar menu
UI guidance
Render a labelled date text field with a persistent format hint and a calendar button that opens a month grid aligned to the field.
UX guidance
Use a date picker when choosing a date requires calendar context such as weekday, nearby availability, booking windows, deadlines, or recent/future scheduling.
Good UI
An appointment booking field shows Appointment date, hint mm/dd/yyyy, a calendar button, July 2026 grid, disabled weekends, today marker, and selected July 14 date.
Bad UI
A grid of unlabeled numbers uses pale grey for unavailable dates but still lets users click them before showing a late error.
Good UX
A user opens the calendar, sees weekends unavailable, moves to August, chooses Tuesday 11 August 2026, and reviews stored value 2026-08-11.
Bad UX
A user selects a disabled Saturday because it was only dimmed, then loses their previous month when the error appears.
Best fit
Users are scheduling, booking, planning, or selecting a recent or future date.
Avoid when
The date is far in the past, such as a birthday or historic document date.
Required state
Closed labelled text field with visible date-format hint and calendar button.
Accessibility burden
Give the calendar button an accessible name and state that distinguishes opening from closing the menu.
Common misuse
Using a calendar picker for a date of birth or other remembered historic date.

Time picker

UI or UX
UI + UX - Time input with filtered slot list, period selector, and timezone selector
UI guidance
Render a labelled time field with persistent hint text, filtered time suggestions, clear selected state, AM/PM control when using 12-hour display, and timezone control when interpretation depends on location.
UX guidance
Use a time picker when users are scheduling or choosing a specific clock time from predictable increments such as 15-minute or 30-minute appointments.
Good UI
An appointment time field shows a label, hint that typing filters 30-minute slots, a 9:30 AM selected option, AM/PM selector, Eastern timezone selector, and canonical value 09:30:00.
Bad UI
A dropdown lists 1,440 minute-by-minute options even though appointments are only available every half hour.
Good UX
A user types 9, filters the list to 9:00 AM and 9:30 AM, chooses 9:30 AM, selects Eastern time, and submits canonical value 09:30:00 America/New_York.
Bad UX
A historical time-of-birth field forces a scheduling dropdown even though the user needs to type the exact recorded time.
Best fit
Users choose appointment, meeting, delivery, pickup, reminder, or service times.
Avoid when
The answer is approximate, relative, unknown, or naturally expressed in words.
Required state
Empty labelled time field with persistent hint and optional timezone default.
Accessibility burden
Use a visible label and persistent hint that explain filtering, increments, and time range.
Common misuse
Using a minute-by-minute dropdown for a schedule that only accepts 30-minute increments.

Date range picker

UI or UX
UI + UX - Two date fields with attached range calendar and apply controls
UI guidance
Render separate labelled start and end date fields with persistent format hints, a calendar trigger, and a shared calendar menu that shows both endpoints and the days between them.
UX guidance
Use a date range picker when users need to select or inspect a continuous period such as a report window, trip, event, booking, campaign, or eligibility span.
Good UI
An analytics report control shows Since and Until text fields, quick choices for Today and Last 7 days, a two-week calendar grid, selected August 3 start, selected August 14 end, and a filled band for days inside the range.
Bad UI
A calendar highlights only the first and last dates, leaving included days visually indistinguishable from unselected days.
Good UX
A user chooses Last 7 days, sees 2026-08-08 through 2026-08-14 filled in the calendar, reviews both inputs, then applies the range.
Bad UX
A dashboard refreshes on every hovered day while the user is still deciding the end date.
Best fit
Users need to select a reporting, analytics, booking, scheduling, campaign, or eligibility period.
Avoid when
The task asks for only one exact date.
Required state
Empty start and end fields with visible labels, date-format hints, and a calendar trigger.
Accessibility burden
Label start and end fields separately and associate each hint and error with the correct field.
Common misuse
Collapsing the range into one unlabeled field with ambiguous dash-separated dates.

Payment collection

UI or UX
UI + UX - Payment request, authorization, and status lifecycle
UI guidance
Render payment collection as a money-movement journey with amount due, reference, payer or service context, accepted methods, provider handoff, authorization or processing state, failure and cancel recovery, retry rules, receipt, and reconciliation status.
UX guidance
Use payment collection when the user must pay a bill, fee, invoice, application charge, renewal, subscription, donation, deposit, or balance and the service must make the amount, reference, status, and next action unambiguous.
Good UI
A permit-fee payment page shows Reference APP-2048, Amount due $84.00, accepted card and wallet methods, Continue to secure payment, and returns to a status page after provider authorization.
Bad UI
A page says Payment failed after redirect but hides whether the bank declined, the user canceled, the session expired, or money might still be pending.
Good UX
The person reaches the intended result with clear feedback.
Bad UX
A user pays the same invoice twice because retry generated a second reference instead of reusing a duplicate-safe payment attempt.
Best fit
The user must pay a known fee, invoice, balance, application charge, renewal, subscription, donation, deposit, or service amount.
Avoid when
The task is a full ecommerce checkout with cart, shipping, tax, discounts, and order finalization.
Required state
Payment request state with amount, currency, reference, description, payer context, accepted methods, and secure provider handoff.
Accessibility burden
Use headings that name the payment task and amount, such as Pay application fee or Pay invoice INV-1482.
Common misuse
Letting users submit the same payment twice while the first attempt is processing.

Confirmation page

UI or UX
UI + UX - Final endpoint page after a transaction is complete
UI guidance
Render a full page after commit with a prominent completion panel, a page heading that names what finished, a reference or receipt when users need one, and a clear section for what happens next.
UX guidance
Use a confirmation page when the transaction or service journey has ended and users need durable proof, reassurance, next-step timing, or a record they can bookmark, print, quote, or revisit.
Good UI
A grant application page says Application complete, shows reference APP-48291, lists what happens next within 5 working days, and offers Save record, Track application, and feedback links.
Bad UI
Users submit twice because refresh or Back replays the final action instead of returning to the receipt.
Good UX
A user copies the reference, saves the receipt, follows Track application, and later returns from a bookmark to the same confirmation details or a helpful tracking fallback.
Bad UX
Users submit twice because refresh or Back replays the final action instead of returning to the receipt.
Best fit
A transaction or service journey has ended and users need durable proof plus next-step information.
Avoid when
The user remains inside an ongoing task and only needs local proof near the changed object.
Required state
Submitted state immediately after authoritative commit routes to the confirmation page.
Accessibility burden
Keep interactive controls out of low-contrast panel treatments unless focus and text contrast are explicitly verified.
Common misuse
Showing a toast or local success strip as the only proof of a completed transaction.

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.
Decision rules
  • Choose booking when the primary job is selecting an available service, staff member, resource, class, appointment type, room, seat, or inventory slot from provider-defined availability.
  • Choose scheduling when the user is arranging time across attendees, calendars, rooms, recurrence, and invitation state rather than reserving a provider-offered slot.
  • Choose checkout when the primary job is committing a cart, order, donation, subscription, or priced product; booking may collect payment, but the booking contract still owns slot availability, policy, and appointment confirmation.
  • Choose date picker when users only need one date value and do not need service selection, staff/resource capacity, customer details, cancellation policy, payment, or booking confirmation.
  • Choose time picker when users only need a clock time field; booking should show bookable slots with capacity, duration, timezone, provider rules, and unavailable reasons.
  • Choose date range picker when selecting a stay, rental, campaign, eligibility, or report span is the main input; booking should also manage availability, party size, resource capacity, policies, and confirmation.
  • Use payment collection inside booking when the appointment, class, reservation, or service requires deposit, prepayment, no-show fee, or paid confirmation before the slot is held.
  • Use confirmation page after a booking is committed, with reference, time, location, staff/resource, policy, calendar file or link, cancellation/reschedule path, and what happens next.
  • Use conflict state when the selected slot becomes unavailable, capacity is full, staff is no longer available, payment authorization fails, email verification fails, or policy terms are missing.
  • Booking must expose service or appointment type, available slot, duration, timezone, customer identity, intake questions, party size or capacity, price/deposit when applicable, cancellation and reschedule policy, confirmation delivery, and stale-slot recovery.
Inspect live examples
Failure modes
  • A customer chooses a slot that was already taken because the booking page did not recheck availability at commit.
  • The interface hides staff, service duration, location, or timezone until after confirmation.
  • The customer pays for a booking but does not get a held appointment or clear refund/cancellation policy.
  • A booking form collects intake or consent after the slot is committed and then rejects the booking.
  • A date picker is used for a limited-capacity class, so customers cannot see sold-out sessions or party-size limits.
  • A cancellation or reschedule path frees the wrong slot, fails to notify the customer, or leaves the provider calendar blocked.
  • The page confirms a booking before email verification, payment, or capacity hold has actually succeeded.

Saved items