SfSkills Domains Docs GitHub

Home / flow / screen-flow-accessibility

screen-flow-accessibility

Screen Flow accessibility — WCAG 2.2 AA, labels, keyboard, error announcements. Triggers: accessible Screen Flow, Flow WCAG, screen reader Flow. NOT for LWC component a11y inside screens — use lwc/lwc-accessibility.

Open the skill folder on GitHub


Screen Flow Accessibility

Purpose

Screen Flows are a fast way to ship an end-user experience, and the default Flow Builder output routinely fails accessibility checks: requiredness typed as an asterisk instead of set as a property, instructions hidden behind a help icon, validation implemented as flow logic so errors detach from their fields, multi-column layouts whose tab order does not match reading order, and custom components dropped in with no audit of their own.

The recurring root cause is doing accessibility work in CSS and prose when the platform had a property for it. Almost every fix in this skill is a metadata change, not a design change.

The standard is WCAG 2.2 Level AA. Salesforce states that Lightning Experience follows Section 508 of the Rehabilitation Act and WCAG 2.2 Level AA to the extent possible. Auditing against 2.1 — still the default in most accessibility guidance — misses six criteria that apply directly to Screen Flows.

  1. Set the target to WCAG 2.2 AA and list the delta. Six criteria are new

    at A/AA: 2.4.11 Focus Not Obscured (Minimum, AA), 2.5.7 Dragging Movements (AA), 2.5.8 Target Size (Minimum, AA) at 24×24 CSS pixels, 3.2.6 Consistent Help (A), 3.3.7 Redundant Entry (A), and 3.3.8 Accessible Authentication (Minimum, AA). Note that 4.1.1 Parsing was removed in 2.2.

  2. Move semantics out of prose into properties. isRequired for

    requiredness (never an asterisk in fieldText); validationRule with an errorMessage so the message attaches to its field; fieldText as a visible label, never a placeholder.

  3. Fix the reading order in metadata. Multi-column screens use

    RegionContainer and Region, and DOM order follows metadata order, not the visual grid. Author first column then second, and verify by tabbing.

  4. Make conditional content discoverable. A field with a visibilityRule

    sits immediately after its trigger; the trigger's label states the outcome. Test at a narrow viewport, where a reveal can push the focused element under a sticky footer.

  5. Rewrite error messages as instructions. "Enter a postal code in the format

    A1A 1A1," not "Invalid." The wording is the accessibility fix.

  6. Scope every ComponentInstance separately. A custom LWC inherits none of

    the screen's accessibility. Its internals belong to lwc/lwc-accessibility; refuse to sign off a screen containing an unaudited one.

  7. Run the audit manually, in every container the flow is published to. One

    keyboard pass and one screen reader pass, in Lightning Experience and in Experience Cloud if it ships there. Automated scans are a floor, not a sign-off.

What the Platform Gives You, and What It Does Not

RequirementPlatform propertyIf you skip it
Required fieldisRequiredAn asterisk in the label announces as "star" and carries no semantics
Field-attached errorvalidationRule + errorMessageA Display Text error block is unassociated and easy to miss
Visible labelfieldTextA placeholder disappears on typing and has low contrast by design
Reading orderOrder of <fields> within RegionTab order follows metadata, not layout
Conditional contentvisibilityRule— but adjacency to the trigger is your decision, not the platform's
Supplementary infohelpText— it renders behind a hover/activate interaction; do not put essentials there

Nothing on this list is an ARIA attribute, because a Screen Flow author cannot set arbitrary attributes on standard components. ARIA advice applies inside a custom LWC and nowhere else on the screen.

Component-Level Checklist

ComponentWatch For
Display TextSemantic HTML only; avoid decorative images; alt text if meaningful
Radio / PicklistGroup label, not just per-option labels
Checkbox groupFieldset + legend equivalent
Custom LWC on screenMust expose labels, handle focus, implement ARIA
File UploadAccessible label, error messaging, progress feedback
Section / RowDo not rely on visual-only grouping

Error Handling Pattern

Focus And Keyboard

Color Contrast

Content Hygiene Inside Display Text

fieldText accepts rich text, so a Display Text field can carry markup nobody reviewed as content:

Read the markup, not the rendered preview.

Anti-Patterns (see references/llm-anti-patterns.md)

Official Sources Used

The full annotated list is in references/well-architected.md.

Package files