UI + UX Cross-Device And Physical Interaction standard

Camera capture

Provide a camera capture flow with explicit user invocation, contextual permission rationale, live preview, active-camera indicator, framing and quality guidance, capture feedback, review before upload, retake and edit controls, file or manual fallback, cancel recovery, and guaranteed media-track cleanup.

Decision first

Choose this pattern when the problem matches

Use when

  • Users need to create new photo or video media inside the task.
  • The product can show live preview, quality guidance, capture review, and fallback paths.
  • The capture output affects evidence, verification, documentation, support, profile identity, or visual record quality.

Avoid when

  • Existing file upload, text entry, barcode input, or manual confirmation is sufficient.
  • The task is privacy-sensitive and cannot provide clear purpose, retention, fallback, and cancellation behavior.
  • The product cannot safely handle permission denial, unavailable camera, stream cleanup, or review before submit.
  • The camera would be used only for novelty or to force mobile-only behavior.

Problem it prevents

Camera capture can reduce manual entry and prove visual context, but camera access is permission-gated, privacy-sensitive, hardware-dependent, and failure-prone; without explicit preview, quality review, fallback, and stream cleanup, users can capture the wrong media, expose private surroundings, or get blocked by permission denial.

Pattern anatomy

What a strong implementation has to make clear

User need

The task asks users to create new images or video for receipts, documents, identity evidence, damage reports, profile photos, QR-like visual data, support diagnostics, deposits, or field work.

Pattern promise

Provide a camera capture flow with explicit user invocation, contextual permission rationale, live preview, active-camera indicator, framing and quality guidance, capture feedback, review before upload, retake and edit controls, file or manual fallback, cancel recovery, and guaranteed media-track cleanup.

Required state

Unsupported browser or insecure-context state with upload or manual alternative.

Recovery path

Camera activates without an explicit user action.

Access contract

Provide file upload, manual entry, or assisted alternatives for users who cannot use a camera.

Quality bar

The difference between expert and weak execution

Strong implementation

Specific, visible, recoverable

  • A receipt scanner asks users to Scan receipt, explains camera use, shows a live preview with document edges, captures a frozen preview, then offers Retake, Crop, Upload file, and Attach to claim.
  • A damage report flow labels the rear camera, shows a privacy indicator and steady frame guide, warns when the image is blurry, and keeps Submit disabled until a reviewable photo is captured.
  • A user starts Scan receipt, grants camera access, sees Align the whole receipt, captures a photo, reviews blur feedback, retakes, then attaches the corrected image.
  • A user denies camera access in a clinic and completes the same identity-document step by uploading a saved image.
Weak implementation

Vague, hidden, hard to recover from

  • The page opens the camera on load, hides the active-stream indicator, and starts recording before users choose a task.
  • The capture button uploads immediately with no frozen preview, retake, crop, or file fallback.
  • A user closes a capture sheet but the camera light stays on and the preview remains active in the background.
  • A user captures a child ID photo and the app leaves it visible in recent previews after cancel.
UI guidance
  • Render camera capture as a deliberate media-acquisition surface with purpose text, camera permission state, selected camera, live preview, privacy indicator, framing guide, capture button, shutter feedback, review preview, retake, crop or rotate, submit, cancel, and upload fallback.
  • Show what will happen to the captured image or video before access is requested: target object, required quality, storage or retention, whether the stream is active, and whether users can complete the task without camera access.
UX guidance
  • Use camera capture when users need to create new visual evidence, scan a document, attach a receipt, capture damage, verify an object, or record a short video from a device camera.
  • Design the lifecycle from unsupported state through permission, device choice, preview, framing guidance, capture, frozen result, quality repair, retake, review, upload or attach, cancellation, and stream cleanup.
Implementation contract

What the implementation must handle

States

  • Unsupported browser or insecure-context state with upload or manual alternative.
  • Camera permission not requested, granted, denied, and revoked states.
  • Start capture state with purpose, target object, and privacy explanation.
  • Device selection or front/rear camera switch state when multiple cameras are available.

Interaction

  • The camera stream starts only after a deliberate user action and contextual permission rationale.
  • Users can see whether camera access is inactive, requesting, active, paused, denied, unsupported, or stopped.
  • The live preview names the selected camera and shows framing guidance that matches the task's quality requirement.
  • Capture freezes the result and moves to review; upload or submit does not happen from the shutter press alone unless the task is explicitly low-risk and reversible.

Accessibility

  • Provide file upload, manual entry, or assisted alternatives for users who cannot use a camera.
  • Label capture, retake, switch camera, stop, upload fallback, crop, rotate, cancel, and submit controls programmatically and visibly.
  • Do not rely on visual framing alone; provide text guidance and error feedback for blur, glare, missing subject, or wrong orientation.
  • Keep keyboard focus inside modal or full-screen capture only when that surface owns a clear exit and return path.

Review

  • What explicit user action starts the camera, and what purpose text appears before permission?
  • What can users do when camera permission is denied, the camera is already in use, or the browser does not support capture?
  • Does the preview show active camera state, selected camera, framing guide, and quality guidance?
  • Is the shutter action separate from final upload or submission, and can users retake or replace the capture?
Interactive lab

Inspect the states before you copy the pattern

Create and review new media from a live camera

Inspect unsupported, permission, live preview, switch camera, framing guide, low light, blur warning, capture, review, retake, crop, upload fallback, denied permission, upload pending, upload failed, saved, cancel cleanup, and sensitive capture states; compare auto start, no indicator, instant upload, no fallback, stream leak, wrong camera, no review, and stored after cancel failures.

Camera capture
Interactive demo is ready

Launch the live UI/UX lab when you want to inspect states, keyboard behavior, and common failure modes.

State To Inspect

Unsupported browser or insecure-context state with upload or manual alternative.

Keyboard / Access

Tab reaches start camera, permission explanation, upload fallback, switch camera, capture, retake, crop, rotate, cancel, submit, and retry controls.

Avoid Generating

Opening the camera automatically on page load or hover.

Evidence trail

Source-backed claims behind this guidance

MDN: input type=file

Mozilla - checked

Supports upload fallback, accept filtering, selected files, and capture hints.

Full agent/debug reference

Problem Context

  • The task asks users to create new images or video for receipts, documents, identity evidence, damage reports, profile photos, QR-like visual data, support diagnostics, deposits, or field work.
  • Users may be on mobile, desktop webcam, tablet, kiosk, assistive technology, low light, poor network, denied permissions, unsupported browsers, shared devices, or privacy-sensitive locations.
  • The product may need still images, video snippets, facing-mode choice, resolution constraints, crop, rotation, blur or glare detection, metadata handling, upload progress, redaction, or retention notice.
  • Camera capture is often adjacent to file upload, permission request, sensitive-data reveal, full-screen takeover, drag-and-drop upload, and future QR or barcode scanning flows.

Selection Rules

  • Choose camera capture when the product must create new camera media and users need live preview, framing, capture, review, and retake behavior.
  • Use file upload when existing local files are acceptable and live camera access, active media stream, and shutter feedback are not the main interaction.
  • Use permission request for the standalone access rationale and timing; camera capture includes the permission ask only as one state inside the capture lifecycle.
  • Use sensitive-data reveal when captured content needs masking, timed reveal, redaction, or audit after acquisition.
  • Use full-screen takeover when the capture task needs an immersive temporary mode with its own navigation and exit contract.
  • Use drag-and-drop upload when users move existing files into a drop zone rather than create a new photo or video.
  • Prefer explicit user action before starting the stream; never activate the camera only because a page, route, carousel, or modal loaded.
  • Offer upload, manual entry, skip, or assisted alternatives before or immediately after permission denial.
  • Capture is not submission: freeze the frame, show what was captured, and require review for consequential workflows.
  • Stop tracks and clear unsaved previews on cancel, close, submit, route change, timeout, or permission revocation.

Required States

  • Unsupported browser or insecure-context state with upload or manual alternative.
  • Camera permission not requested, granted, denied, and revoked states.
  • Start capture state with purpose, target object, and privacy explanation.
  • Device selection or front/rear camera switch state when multiple cameras are available.
  • Live preview state with active camera indicator, framing guide, and stop control.
  • Low light, glare, blur, occlusion, wrong orientation, or missing-subject quality warning state.
  • Captured still or recorded clip state with frozen preview.
  • Review state with retake, crop, rotate, replace, submit, and cancel controls.
  • Upload fallback, file fallback, manual entry, or skip state when camera fails or is denied.
  • Upload pending, upload failed, retry, saved, attached, or submitted state.
  • Cancel or dirty-exit state that explains whether captured media will be discarded.
  • Stream cleanup state after cancel, submit, permission loss, or navigation.
  • Sensitive capture state for IDs, faces, addresses, payment cards, private spaces, minors, or location-revealing images.

Interaction Contract

  • The camera stream starts only after a deliberate user action and contextual permission rationale.
  • Users can see whether camera access is inactive, requesting, active, paused, denied, unsupported, or stopped.
  • The live preview names the selected camera and shows framing guidance that matches the task's quality requirement.
  • Capture freezes the result and moves to review; upload or submit does not happen from the shutter press alone unless the task is explicitly low-risk and reversible.
  • Retake, replace with file, cancel, and submit controls are reachable by keyboard and touch.
  • Camera denial, unavailable device, unsatisfied constraints, upload failure, and network loss preserve the task and expose alternatives.
  • Closing, canceling, leaving the route, submitting, or losing permission stops the media tracks and removes unsaved sensitive previews.
  • Captured media metadata, storage, retention, and review boundaries are disclosed when the content is sensitive or externally submitted.

Implementation Checklist

  • Define capture purpose, target object, allowed media type, required resolution, facing mode, quality checks, fallback path, retention rule, and downstream validation before requesting camera access.
  • Use a secure context and request media only from an explicit capture action; handle permission denied, not found, not readable, overconstrained, and aborted states.
  • Show active-stream status, selected camera, switch-camera control, framing overlay, quality feedback, and stop or cancel control while preview is live.
  • Freeze the captured frame or clip for review and keep capture state separate from upload, submitted record, file fallback, and sensitive reveal state.
  • Provide retake, crop, rotate, replace, upload file, manual entry, submit, cancel, retry upload, and discard-review paths where relevant.
  • Stop all media tracks on cancel, close, successful submit, route change, component unmount, permission revocation, and timeout.
  • Avoid persisting raw images, EXIF, location metadata, faces, IDs, or private-space previews unless users understand the purpose and retention.
  • Test mobile front and rear cameras, desktop webcams, denied permission, no camera, camera in use, low light, high zoom, keyboard, screen reader, file fallback, slow upload, and privacy-sensitive cancellation.

Common Generated-UI Mistakes

  • Opening the camera automatically on page load or hover.
  • Treating the shutter button as final upload for consequential tasks.
  • Hiding the live preview, active camera state, stop control, or selected camera.
  • Blocking the workflow when camera permission is denied even though upload or manual entry would work.
  • Leaving the camera stream active after close, cancel, navigation, or submit.
  • Using camera capture when a normal file upload or text field would be simpler and less invasive.
  • Saving sensitive captured media or metadata after users cancel.
  • Showing quality errors only after final submission instead of during preview or review.

Critique Questions

  • What explicit user action starts the camera, and what purpose text appears before permission?
  • What can users do when camera permission is denied, the camera is already in use, or the browser does not support capture?
  • Does the preview show active camera state, selected camera, framing guide, and quality guidance?
  • Is the shutter action separate from final upload or submission, and can users retake or replace the capture?
  • When are media tracks stopped, and how is unsaved sensitive media cleared?
  • Which metadata, images, frames, or thumbnails are stored, for how long, and who can access them?
  • Is this really camera capture, or would file upload, permission request, full-screen takeover, or sensitive-data reveal own the main problem?
Accessibility
  • Provide file upload, manual entry, or assisted alternatives for users who cannot use a camera.
  • Label capture, retake, switch camera, stop, upload fallback, crop, rotate, cancel, and submit controls programmatically and visibly.
  • Do not rely on visual framing alone; provide text guidance and error feedback for blur, glare, missing subject, or wrong orientation.
  • Keep keyboard focus inside modal or full-screen capture only when that surface owns a clear exit and return path.
  • Announce permission, live preview, capture success, quality warnings, upload progress, failure, and saved state through text and status messaging.
  • Avoid motion-only shutter feedback and color-only quality indicators.
  • Respect zoom, screen readers, switch control, reduced motion, mobile orientation, and one-handed operation.
  • Make camera denial and unsupported states completeable without requiring users to change browser settings.
Keyboard Behavior
  • Tab reaches start camera, permission explanation, upload fallback, switch camera, capture, retake, crop, rotate, cancel, submit, and retry controls.
  • Enter or Space activates visible controls and never starts capture from a hidden listener.
  • Escape stops preview or opens discard review when unsaved media exists.
  • Arrow keys may adjust crop or framing handles only when the crop tool is active and labeled.
  • After capture, focus moves to the review heading or first repair control rather than the live preview.
  • After retake, focus returns to the capture button or live preview instructions.
  • After submit or cancel, focus returns to the invoking control or next logical task step.
  • File fallback remains keyboard-operable when camera permission is denied.
Variants
  • Receipt photo capture
  • Document camera capture
  • Profile photo capture
  • Damage evidence capture
  • Short video capture
  • Front camera capture
  • Rear camera capture
  • Camera capture with upload fallback
  • Camera capture with crop review
  • Full-screen camera capture

Verification

Last verified: