# WCAG 2.2 AA Conformance Report (VPAT)

Source: https://support.exposure.co/en/articles/13623092-wcag-2-2-aa-conformance-report-vpat/

_Voluntary Product Accessibility Template for Exposure public-facing story and site views_

* * *

## Overview

This document provides an accessibility conformance summary for **Exposure’s public-facing viewer experience**, using the VPAT format as a practical reference point.

This report focuses on the parts of Exposure that visitors use when reading stories and browsing member sites, including:

-   Story pages
    
-   Member sites
    
-   Category pages
    
-   Public subscribe flows
    
-   Contact forms
    
-   Lightbox viewing
    
-   Public menus, dialogs, and navigation
    

This report does **not** cover internal authoring or administrative interfaces such as:

-   Story editor and compose tools
    
-   Account settings and preferences
    
-   Billing and subscription management
    
-   Admin tools
    

**Report date:** March 2026 **Contact:** [support@exposure.co](<mailto:support@exposure.co>)

* * *

## Conformance Summary

**Overall conformance level:** **Partially Supports WCAG 2.2 Level AA**

Exposure has made substantial accessibility improvements to its public-facing views, with recent work focused on WCAG 2.2 viewer-facing behavior such as:

-   Shared **skip links** and better **main landmarks**
    
-   Improved **keyboard navigation** for public menus and dialogs
    
-   Better **focus management** for subscribe modals, warning dialogs, and lightbox flows
    
-   Stronger **accessible names and labels** for shared controls like search, share, and subscribe actions
    
-   Better handling of **expanded/collapsed menu state**
    
-   Reduced cases where **hidden controls remained tabbable**
    

Exposure also supports:

-   Automated accessibility testing with axe-based coverage
    
-   Semantic HTML and ARIA landmarks
    
-   Reduced motion preferences
    
-   AI-assisted alt text generation
    
-   Public accessibility statement pages
    

Because Exposure supports user-generated content, custom styling, and third-party embeds, accessibility can vary depending on the content and configuration used on an individual site.

* * *

## Terms Used In This Report

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Term</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Meaning</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Supports</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">The feature meets the criterion in normal public-facing use</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Partially Supports</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Most of the experience supports the criterion, but some content, configurations, or third-party integrations may not</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Does Not Support</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">The feature generally does not meet the criterion</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Not Applicable</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">The criterion is not relevant to the product scope described here</p></td></tr></tbody></table>

* * *

## Scope Of This Report

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">In Scope</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Out Of Scope</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Story pages</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Story editor and compose experience</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Member sites</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Account settings</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Category pages</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Billing and subscriptions</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public contact forms</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Admin dashboard</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public subscribe forms and modals</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Photo upload and media management</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Lightbox viewer</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Internal analytics and management tools</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Story Map viewer</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Team and author workflow tools</p></td></tr></tbody></table>

* * *

## WCAG 2.2 Summary By Principle

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Principle</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Notes</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Perceivable</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Partially Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Strong semantic structure and text alternatives support, but user-generated content, third-party embeds, and custom color choices can still affect outcomes</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Operable</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public keyboard support, skip links, lightbox controls, dialog Escape handling, and shared menu focus improvements are implemented</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Understandable</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public forms, labels, navigation patterns, and public page structure are designed for predictable use</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>Robust</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public views use semantic HTML, ARIA roles, status messaging, and improved dialog/menu state handling</p></td></tr></tbody></table>

* * *

## Public-Facing Accessibility Features

### Navigation & Structure

-   Skip links to main content on key public surfaces
    
-   Main landmarks for public page structure
    
-   Semantic heading hierarchy for story and site content
    
-   Landmark navigation for primary public menus and page sections
    

### Keyboard Support

-   Public interactive controls are designed for keyboard access
    
-   Escape closes supported public dialogs, modals, drawers, and lightbox flows
    
-   Lightbox supports keyboard navigation
    
-   Public menus and popouts have improved focus handling and state announcements
    

### Dialogs & Focus Management

-   Public subscribe modal uses dialog semantics
    
-   Focus is moved into public dialogs when they open
    
-   Focus is returned to the opener when supported dialogs close
    
-   Closed menus and popouts are less likely to expose hidden focus targets
    

### Public Forms

-   Shared public search inputs have explicit labels
    
-   Public subscribe flows use clearer labels and button names
    
-   Public contact flows include clearer field labeling
    

### Images & Media

-   AI-assisted alt text support is available for story photos
    
-   Photo captions and media semantics have been improved
    
-   Videos are muted by default where used decoratively
    

* * *

## Notable WCAG 2.2 Viewer Improvements

Recent public-view improvements include:

-   Better handling of **Focus Visible**
    
-   Better handling of **Focus Not Obscured**
    
-   Improved **Target Size** coverage for small public controls
    
-   Stronger support for keyboard-only use of public dialogs and menus
    
-   Better public support for accessible names, roles, and state changes
    

These changes were focused on the real visitor experience rather than internal editing tools.

* * *

## Criteria Highlights

### 1.1 Text Alternatives

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.1.1 Non-text Content</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Partially Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Exposure supports alt text and AI-assisted alt text generation, but user-generated content may still vary</p></td></tr></tbody></table>

### 1.3 Adaptable

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.3.1 Info and Relationships</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public pages use headings, landmarks, and improved dialog/menu semantics</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.3.5 Identify Input Purpose</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Key public form fields and shared search surfaces include clearer labels and input semantics</p></td></tr></tbody></table>

### 1.4 Distinguishable

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.4.3 Contrast (Minimum)</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Partially Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Exposure improves default public contrast behavior, but author-customized themes and image overlays can still affect results</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.4.4 Resize Text</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public pages support zoom and responsive scaling</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>1.4.10 Reflow</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public layouts are designed to adapt responsively</p></td></tr></tbody></table>

### 2.1 Keyboard Accessible

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.1.1 Keyboard</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public site and story controls are designed for keyboard use</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.1.2 No Keyboard Trap</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public dialogs and lightbox flows include supported escape and focus behavior</p></td></tr></tbody></table>

### 2.4 Navigable

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.4.1 Bypass Blocks</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public skip links are available on key public layouts and pages</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.4.3 Focus Order</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public focus order has been improved, especially for menus and modals</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.4.7 Focus Visible</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Shared visible focus styling is implemented for public controls</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.4.11 Focus Not Obscured</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public focus behavior has been improved to reduce obscured targets with sticky UI</p></td></tr></tbody></table>

### 2.5 Input Modalities

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>2.5.8 Target Size (Minimum)</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Partially Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public controls have been improved, but custom content and certain compact UI states may still require validation</p></td></tr></tbody></table>

### 3.3 Input Assistance

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>3.3.2 Labels or Instructions</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Shared public search, subscribe, and contact flows have clearer labels and instructions</p></td></tr></tbody></table>

### 4.1 Compatible

<table role="presentation" style="border: 1px solid #c6c9c0; border-radius: 6px; border-collapse: separate; border-spacing: 0;"><tbody><tr><td style="padding: 8px;"><p class="no-margin">Criterion</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Conformance</p></td><td style="border-left: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Remarks</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>4.1.2 Name, Role, Value</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public controls, dialogs, menus, and buttons have improved accessible names and state semantics</p></td></tr><tr><td style="border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin"><b>4.1.3 Status Messages</b></p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Supports</p></td><td style="border-left: 1px solid #c6c9c0; border-top: 1px solid #c6c9c0; padding: 8px;"><p class="no-margin">Public UI includes improved messaging behavior where applicable</p></td></tr></tbody></table>

* * *

## Testing Approach

Exposure validates public accessibility using a mix of:

-   Automated accessibility testing
    
-   Manual keyboard testing
    
-   Raw HTML/source inspection
    
-   Ongoing review of public dialogs, menus, and viewing flows
    

Public accessibility work is iterative and continues as the platform evolves.

* * *

## Known Limitations

Accessibility can still be affected by:

-   User-generated content without sufficient text alternatives
    
-   Third-party embedded content
    
-   Author-customized color schemes and cover images
    
-   Custom code added by site owners
    
-   Browser and assistive technology differences
    

* * *

## Legal Disclaimer

This conformance report is provided for informational purposes and reflects the public-facing viewer experience described above. It does not cover internal authoring, billing, account management, or administrative interfaces unless explicitly stated.

Accessibility conformance is assessed at a point in time and may change as the platform evolves.

* * *

## Need Help?

If you have questions about this accessibility conformance report, reach out to us at [support@exposure.co](<mailto:support@exposure.co>). We’re happy to help!

* * *

## Need help?

Use the [Exposure contact form](<https://exposure.co/contact>).
