Accessibility
Accessibility Conformance Report (VPAT® 2.5 – WCAG Edition)
Overview
Return Grid is committed to WCAG 2.1 Level AA conformance across the surfaces our customers (property owners/managers), their tenants, and prospective applicants use every day. This report is a voluntary, self-assessed Accessibility Conformance Report (ACR), formatted per the industry-standard VPAT® 2.5 WCAG Edition template published by the Information Technology Industry Council (ITI). It documents the current conformance level of each applicable WCAG 2.1 A and AA success criterion, along with remarks explaining our evidence and any known gaps.
This report is refreshed on a quarterly cadence and updated immediately after any accessibility-relevant change to a covered surface. It reflects Return Grid's Tenant Portal P0 (foundation) and P1 (applications, screening, e-sign, communications) feature phases as defined in our Tenant Portal specification, Decision 14.
Scope of this report
The following publicly reachable and tenant-authenticated surfaces are covered by this assessment:
Tenant Portal
tenant.returngrid.app — login, dashboard, pay rent, maintenance requests, documents, applications, e-sign, move-in/move-out inspections, notification preferences, and account settings.
Public rental listings & apply flow
returngrid.app/rent/{org} — listing search, listing detail, and the online rental application flow used by prospective applicants who are not yet Return Grid users.
Owner Portal (auth surface)
returngrid.app — the sign-in/authentication surface shared with property managers and investors, scanned as part of the same automated accessibility pipeline.
Out of scope for this report: the internal, staff-only Admin Portal (returngrid.app/admin), which is not a customer- or tenant-facing surface.
Evaluation methods used
- Automated testing: axe-core (via
@axe-core/playwright) runs in continuous integration on every push and pull request against the Tenant Portal and Owner Portal authentication surfaces, scanning against WCAG 2.1 A, AA, and 2.1-specific rule sets. The build fails on any critical or serious violation. - Manual code review: semantic HTML structure, ARIA labeling, keyboard skip-links, minimum 44×44px touch targets, and
prefers-reduced-motionsupport were reviewed across the Tenant Portal, public listings, and Owner Portal codebases. - Design-system contrast validation: our organization branding/accent-color picker performs a live WCAG 2.1 AA contrast calculation (4.5:1 minimum) before an org can save a custom accent color.
- Not yet performed: a full manual audit with screen readers (NVDA/JAWS/VoiceOver) and switch-access hardware across every authenticated view and multi-step wizard. This is planned as part of our ongoing quarterly review cycle; criteria affected by this gap are marked Partially Supports below with specific remarks.
Terminology
WCAG 2.1 Level A
Summary — 16 Supports · 5 Partially Supports · 9 Not Applicable (30 criteria total)
| Criterion | Conformance | Remarks and explanations |
|---|---|---|
| 1.1.1 Non-text Content (Level A) | Partially Supports | Content images (property listing photos) carry descriptive alt text sourced from the listing headline; purely decorative/duplicate thumbnail images use empty alt="" so screen readers skip them. Icon-only buttons across the Owner and Tenant Portals use aria-label. Not yet audited: a small number of legacy admin-only icon buttons may lack labels — tracked for the next quarterly review. |
| 1.2.1 Audio-only and Video-only (Prerecorded) (Level A) | Not Applicable | Return Grid ships no prerecorded audio-only or video-only content. |
| 1.2.2 Captions (Prerecorded) (Level A) | Not Applicable | No prerecorded video content is published in the product. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A) | Not Applicable | No prerecorded video content is published in the product. |
| 1.3.1 Info and Relationships (Level A) | Supports | Semantic HTML5 landmarks (header/nav/main/footer), heading hierarchy, and native form label associations are used throughout the Tenant Portal, public listings, and Owner Portal auth surfaces. Verified via axe-core CI (label, landmark-*, heading-order rules) on tenant.html and index.html auth views. |
| 1.3.2 Meaningful Sequence (Level A) | Supports | DOM order matches visual reading order across all three surfaces; no CSS-only reordering that would break assistive-technology reading order. |
| 1.3.3 Sensory Characteristics (Level A) | Supports | Instructions do not rely solely on shape, size, or visual location (e.g., form errors are identified by text and icon, not color/position alone). |
| 1.4.1 Use of Color (Level A) | Supports | Status indicators (invoice status, ticket status, application status) pair color with a text label or icon, never color alone. |
| 1.4.2 Audio Control (Level A) | Not Applicable | No audio auto-plays anywhere in the product. |
| 2.1.1 Keyboard (Level A) | Partially Supports | Primary flows (login, pay rent, submit maintenance ticket, apply, sign in) are keyboard-operable and covered by axe-core's keyboard-related rules in CI. A full manual keyboard-only walkthrough of every modal and multi-step wizard (e.g., the e-sign and move-inspection flows) has not yet been completed end-to-end; scheduled for the next quarterly review. |
| 2.1.2 No Keyboard Trap (Level A) | Supports | Modal dialogs (esign-modal, lifecycle modal, etc.) use standard focus-trap patterns with Escape-to-close and no observed keyboard traps during spot checks. |
| 2.1.4 Character Key Shortcuts (Level A) | Not Applicable | The product implements no single-character keyboard shortcuts. |
| 2.2.1 Timing Adjustable (Level A) | Partially Supports | A 30-minute idle / 7-day absolute session timeout is enforced platform-wide as a security control (Decision 14) given the financial and personal data handled. This falls under WCAG's "essential" exception for a security-driven timeout, but the product does not yet show an advance warning with an option to extend before logout. Adding a pre-expiry warning is tracked as a near-term improvement. |
| 2.2.2 Pause, Stop, Hide (Level A) | Not Applicable | No auto-updating, auto-scrolling, or moving content is present. |
| 2.3.1 Three Flashes or Below Threshold (Level A) | Not Applicable | No flashing content is present anywhere in the product. |
| 2.4.1 Bypass Blocks (Level A) | Supports | A visible-on-focus "Skip to content" / "Skip to main content" link is implemented on the Tenant Portal, public listings site, and Owner Portal (skip-link class in tenant.css / rent.css / style.css). |
| 2.4.2 Page Titled (Level A) | Supports | All pages carry a descriptive <title>. |
| 2.4.3 Focus Order (Level A) | Partially Supports | Focus order follows DOM/visual order on primary pages. Focus order inside a few dynamically-rendered multi-step flows (application wizard, move-inspection forms) has not been manually verified in every state; covered only indirectly by automated CI scans of the static auth views. |
| 2.4.4 Link Purpose (In Context) (Level A) | Supports | Links use descriptive text or are supplemented with aria-label where visual text alone would be ambiguous (e.g., repeated "View" links carry a contextual aria-label). |
| 2.5.1 Pointer Gestures (Level A) | Not Applicable | The product uses no multipoint or path-based gestures; all interactions are available via single-pointer actions (tap/click). |
| 2.5.2 Pointer Cancellation (Level A) | Supports | Actions trigger on the standard "up"/click event, not on pointer-down, so accidental activation can be aborted by moving away before release. |
| 2.5.3 Label in Name (Level A) | Supports | Visible button/link text matches or is contained within the accessible name (aria-label) in the audited components. |
| 2.5.4 Motion Actuation (Level A) | Not Applicable | No functionality is operated by device motion or user motion. |
| 3.1.1 Language of Page (Level A) | Supports | lang="en" is set on the root <html> element of index.html, tenant.html, and rent.html. |
| 3.2.1 On Focus (Level A) | Supports | Receiving focus does not trigger a change of context (e.g., navigation or form submission) anywhere in the audited surfaces. |
| 3.2.2 On Input (Level A) | Supports | Changing a form field's value does not automatically submit a form or navigate away without an explicit user action (button press). |
| 3.3.1 Error Identification (Level A) | Supports | Form validation errors (e.g., login, application, maintenance ticket, payment forms) are announced as text adjacent to the relevant field, not by color alone. |
| 3.3.2 Labels or Instructions (Level A) | Supports | Form fields carry visible labels or placeholder-plus-label combinations, and required fields are marked. Verified via axe-core's label rule on the tenant/owner auth views in CI. |
| 4.1.1 Parsing (Level A) | Supports | Pages use valid, well-formed HTML5; no duplicate IDs or unclosed elements were found by axe-core's duplicate-id family of rules in CI. |
| 4.1.2 Name, Role, Value (Level A) | Partially Supports | Standard interactive elements (buttons, links, form controls) expose correct name/role/value natively or via ARIA. Custom widgets outside the two CI-scanned auth views (e.g., in-dashboard modals and multi-step wizards) have not all been individually verified for full ARIA state (aria-expanded, aria-selected, etc.) coverage. |
WCAG 2.1 Level AA
Summary — 15 Supports · 2 Partially Supports · 3 Not Applicable (20 criteria total)
| Criterion | Conformance | Remarks and explanations |
|---|---|---|
| 1.2.4 Captions (Live) (Level AA) | Not Applicable | The product carries no live audio/video content. |
| 1.2.5 Audio Description (Prerecorded) (Level AA) | Not Applicable | The product carries no prerecorded video content. |
| 1.3.4 Orientation (Level AA) | Supports | No view is locked to a single display orientation; all portals are responsive across portrait and landscape. |
| 1.3.5 Identify Input Purpose (Level AA) | Partially Supports | Common fields (email, phone) use appropriate autocomplete attributes in the primary login/apply/payment forms. A full field-by-field autocomplete audit across every form (e.g., move-inspection, application applicant fields) has not been completed. |
| 1.4.3 Contrast (Minimum) (Level AA) | Supports | Base design-token color pairs meet the 4.5:1 minimum. Additionally, the Decision-12 org branding/accent-color picker runs a live WCAG 2.1 AA contrast check (relative-luminance ratio math in app.js) and blocks/warns an org before it can save an accent color that would fail 4.5:1 against button text or white backgrounds. |
| 1.4.4 Resize Text (Level AA) | Supports | Layouts use relative units (rem/%) and reflow correctly at 200% browser zoom without loss of content or functionality in spot checks. |
| 1.4.5 Images of Text (Level AA) | Supports | No images of text are used; all textual content (including the branding/logo area) renders as real text or user-supplied logo images, not styled text-as-image. |
| 1.4.10 Reflow (Level AA) | Supports | Content reflows to a single column at 320px-equivalent width (400% zoom) without requiring two-dimensional scrolling, verified on the Tenant Portal, public listings, and Owner Portal responsive breakpoints. |
| 1.4.11 Non-text Contrast (Level AA) | Supports | Interactive component boundaries (buttons, form field borders, focus indicators) meet the 3:1 minimum against adjacent colors under the shared design-token palette. |
| 1.4.12 Text Spacing (Level AA) | Supports | No loss of content or functionality was observed in spot checks after applying WCAG's text-spacing override values (line height, paragraph spacing, letter/word spacing). |
| 1.4.13 Content on Hover or Focus (Level AA) | Supports | Tooltips and hover-revealed content (e.g., policy-details summaries) remain visible while hovered/focused, are dismissible via Escape, and do not obscure other content. |
| 2.4.5 Multiple Ways (Level AA) | Supports | The Owner Portal and Tenant Portal both provide persistent navigation plus contextual links between related pages; the public listings site is additionally reachable via direct URL and org-level listing index. |
| 2.4.6 Headings and Labels (Level AA) | Supports | Headings and form labels describe their topic or purpose; verified via axe-core's heading-order and label rules in CI on the auth views, with manual spot checks elsewhere. |
| 2.4.7 Focus Visible (Level AA) | Supports | A visible focus indicator (:focus-visible outline) is defined in the shared stylesheet (base.css/style.css/tenant.css/rent.css/admin.css) and applied to all interactive elements. |
| 3.1.2 Language of Parts (Level AA) | Not Applicable | All product content is authored in English; no page contains passages in a different human language that would require an inline lang attribute. |
| 3.2.3 Consistent Navigation (Level AA) | Supports | Primary navigation (Owner Portal top nav, Tenant Portal side nav) appears in the same relative order on every page within each portal. |
| 3.2.4 Consistent Identification (Level AA) | Supports | Repeated components (e.g., "Pay" buttons, status badges, export buttons) use consistent labels and icons across the product. |
| 3.3.3 Error Suggestion (Level AA) | Supports | Where the correction is known (e.g., invalid email format, past-due date, amount below minimum), validation messages suggest the fix rather than only flagging the error. |
| 3.3.4 Error Prevention (Legal, Financial, Data) (Level AA) | Supports | Financial and legally-binding actions (rent payments, lease e-signature, deposit disputes, screening/application submission) require an explicit confirm step and, where applicable, the ability to review before final submission. |
| 4.1.3 Status Messages (Level AA) | Partially Supports | Toast/inline confirmation messages (e.g., "Payment submitted", "Ticket created") are used across the product; not all of them are wired with role="status"/aria-live so they are reliably announced by screen readers without moving focus. Bringing every status message onto a consistent aria-live pattern is tracked as a near-term improvement. |
Additional accessibility measures
- Minimum 44×44px interactive touch targets across the Tenant Portal and public listings site, exceeding the WCAG 2.1 AA baseline (a target-size criterion was not introduced until WCAG 2.1 AAA / WCAG 2.2 AA).
prefers-reduced-motionis respected across every stylesheet in the product — users who request reduced motion at the OS level see no non-essential animation.- A visible, keyboard-focusable "Skip to content" link is present on every covered surface.
- Multi-factor authentication (SMS + TOTP) is available without relying on any single sensory modality to complete the challenge.
Feedback
We welcome feedback on the accessibility of Return Grid. If you encounter an accessibility barrier, please contact us at accessibility@returngrid.app with the page, the assistive technology and browser you were using, and a description of the issue. We aim to acknowledge accessibility reports within 3 business days.