
Web Platform Accessibility Guides: Complete Resource Hub
Every web platform has unique accessibility challenges. WordPress themes break accessibility. Shopify liquid templates need special handling. React apps require ARIA management. Each platform needs platform-specific solutions for WCAG 2.2 compliance.
This is your complete platform accessibility resource hub. Find implementation guides, code examples, plugin recommendations, and testing protocols for your specific platform.
π Platforms Covered
Content Management Systems (CMS)
- WordPress - 43% of all websites
- Drupal
- Joomla
- Wix
- Squarespace
E-commerce Platforms
- Shopify - 4.5M+ stores
- WooCommerce - WordPress e-commerce
- Magento - Enterprise e-commerce
- BigCommerce
JavaScript Frameworks
- React - Component accessibility
- Vue.js - Reactive accessibility
- Angular - Enterprise apps
- Next.js - Server-side React
- Svelte
Other Platforms
WordPress
Market Share: 43% of all websites Users: 455 million+ websites Key Challenge: Themes and plugins break accessibility
Overview
WordPress core is accessibility-ready, but themes and plugins often introduce violations. The ecosystem's flexibility creates accessibility challenges.
Common WordPress accessibility issues:
- β Themes with poor color contrast
- β Slider plugins without keyboard navigation
- β Page builders (Elementor, Divi) generating inaccessible code
- β Form plugins without proper labels
- β WooCommerce checkout issues
WordPress Accessibility Resources
π§ Essential Plugins:
- AllAccessible for WordPress - Real-time remediation (Starting at $10/month)
- WP Accessibility (Free) - Baseline fixes
- Accessibility Checker (Free/Pro) - Content scanning
π¨ Accessible Themes:
- Twenty Twenty-Five (default)
- Astra (accessibility mode)
- GeneratePress
- Neve
- Kadence
π Complete Guides:
- WordPress Accessibility Plugins: What Works (and What Doesn't)
- WordPress Forms Accessibility (Coming soon)
- WooCommerce Accessibility Guide
- Gutenberg Block Accessibility (Coming soon)
Quick WordPress Implementation
Step 1: Choose accessible theme
Install: Twenty Twenty-Five or accessibility-ready theme
Activate accessibility features in theme settings
Step 2: Install baseline plugins
1. WP Accessibility (free fixes)
2. Accessibility Checker (content scanning)
3. AllAccessible (automated remediation)
Step 3: Configure WordPress settings
Settings β Reading: Enable search engine visibility
Settings β Permalinks: Use "Post name" structure
Appearance β Menus: Add descriptive labels
Step 4: Test
axe DevTools scan
Keyboard navigation test
Screen reader test (NVDA/VoiceOver)
Shopify
Market Share: 4.5 million+ stores worldwide Users: 28% of e-commerce market Key Challenge: Liquid template accessibility
Overview
Shopify themes use Liquid templating which requires special accessibility considerations. Product grids, variant selectors, and checkout flows need careful implementation.
Common Shopify accessibility issues:
- β Image galleries without keyboard controls
- β Variant selectors (size, color) not accessible
- β "Quick view" modals trapping keyboard focus
- β Product filters without screen reader support
- β Cart updates not announced to screen readers
Shopify Accessibility Resources
π§ Essential Apps:
- AllAccessible for Shopify - Automated accessibility (Starting at $10/month)
- SEO Image Optimizer - Alt text management
- Accessibility Widget - User controls
π¨ Accessible Themes:
- Dawn (Shopify default, accessibility-ready)
- Impulse
- Streamline
- Refresh
π Complete Guides:
- Shopify Accessibility: Complete WCAG 2.2 Compliance Guide
- Shopify Liquid Accessibility Patterns (Coming soon)
- Shopify Checkout Accessibility (Coming soon)
Quick Shopify Implementation
Step 1: Audit product pages
{%- comment -%}
Accessible product grid
{%- endcomment -%}
<div class="product-grid">
{% for product in collection.products %}
<article class="product-card">
<a href="{{ product.url }}" aria-label="{{ product.title }}">
{% if product.featured_image %}
<img
src="{{ product.featured_image | image_url: width: 400 }}"
alt="{{ product.featured_image.alt | default: product.title }}"
loading="lazy">
{% endif %}
<h3>{{ product.title }}</h3>
</a>
</article>
{% endfor %}
</div>
Step 2: Accessible variant selectors
<fieldset>
<legend>{{ option.name }}</legend>
{% for value in option.values %}
<input
type="radio"
id="{{ option.name }}-{{ value | handle }}"
name="{{ option.name }}"
value="{{ value }}"
{% if option.selected_value == value %}checked{% endif %}>
<label for="{{ option.name }}-{{ value | handle }}">
{{ value }}
</label>
{% endfor %}
</fieldset>
WooCommerce
Market Share: 6.5 million+ stores Users: WordPress + WooCommerce = largest e-commerce platform Key Challenge: WordPress + WooCommerce plugin accessibility
Overview
WooCommerce inherits WordPress accessibility but adds e-commerce-specific challenges like product filters, cart management, and checkout flows.
Common WooCommerce issues:
- β Product filter forms without labels
- β Cart quantity updates not announced
- β Checkout error messages not associated with fields
- β "Add to cart" buttons without loading states
WooCommerce Accessibility Resources
π§ Essential Plugins:
- WooCommerce Accessibility (Free) - Core fixes
- AllAccessible for WordPress - Complete solution
- Checkout Field Editor - Accessible checkout customization
π Complete Guides:
- WooCommerce Accessibility WCAG Compliance Guide
- WooCommerce Checkout Accessibility (Coming soon)
- WooCommerce Product Filters Accessibility (Coming soon)
Quick WooCommerce Implementation
Step 1: Install WooCommerce Accessibility plugin
wp plugin install woocommerce-accessibility --activate
Step 2: Accessible product filters
<form role="search" aria-label="Filter products">
<fieldset>
<legend>Price Range</legend>
<label for="min-price">Minimum Price</label>
<input type="number" id="min-price" name="min_price">
<label for="max-price">Maximum Price</label>
<input type="number" id="max-price" name="max_price">
</fieldset>
<button type="submit">Apply Filters</button>
</form>
Step 3: Accessible cart updates
// Announce cart updates to screen readers
document.querySelector('.add-to-cart').addEventListener('click', function() {
const status = document.getElementById('cart-status');
status.textContent = 'Item added to cart';
status.setAttribute('role', 'status');
status.setAttribute('aria-live', 'polite');
});
React
Market Share: Most popular frontend framework Users: Millions of apps Key Challenge: Component lifecycle and dynamic content
Overview
React apps are single-page applications (SPAs) which create unique accessibility challenges:
- Client-side routing doesn't announce page changes
- Dynamic content updates not announced to screen readers
- Focus management on component mount/unmount
- ARIA attributes in JSX
Common React accessibility issues:
- β Route changes not announced
- β Modal dialogs without focus trapping
- β Custom components without keyboard support
- β Loading states not announced
React Accessibility Resources
π§ Essential Libraries:
- @reach/router - Accessible routing
- react-aria (Adobe) - Accessible component primitives
- @radix-ui/react - Accessible component library
- react-focus-lock - Focus management
π Complete Guides:
- React Accessibility Guide: WCAG 2.2 Implementation (Coming soon)
- React Router Accessibility (Coming soon)
- React Form Accessibility (Coming soon)
Quick React Implementation
Step 1: Accessible routing
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
function RouteAnnouncer() {
const location = useLocation();
useEffect(() => {
// Announce route changes
const message = `Navigated to ${document.title}`;
const announcer = document.getElementById('route-announcer');
announcer.textContent = message;
}, [location]);
return (
<div
id="route-announcer"
role="status"
aria-live="polite"
aria-atomic="true"
className="sr-only"
/>
);
}
Step 2: Accessible modal
import FocusLock from 'react-focus-lock';
function Modal({ isOpen, onClose, children }) {
useEffect(() => {
if (isOpen) {
document.body.style.overflow = 'hidden';
}
return () => {
document.body.style.overflow = '';
};
}, [isOpen]);
if (!isOpen) return null;
return (
<FocusLock>
<div
role="dialog"
aria-modal="true"
aria-labelledby="modal-title"
onKeyDown={(e) => {
if (e.key === 'Escape') onClose();
}}
>
<h2 id="modal-title">{/* Modal title */}</h2>
{children}
<button onClick={onClose}>Close</button>
</div>
</FocusLock>
);
}
Vue.js
Market Share: Second most popular frontend framework Key Challenge: Reactive data and component accessibility
Overview
Vue's reactive system requires careful ARIA state management. Similar to React, SPAs need route announcements and focus management.
π Complete Guides:
- Vue.js Accessibility Guide (Coming soon)
- Vue Router Accessibility (Coming soon)
Next.js
Market Share: Leading React meta-framework Key Challenge: Server-side rendering + client-side hydration
Overview
Next.js combines server-side rendering with client-side interactivity, creating unique accessibility considerations for hydration, routing, and image optimization.
π Complete Guides:
- Next.js Accessibility Guide (Coming soon)
- Next.js Image Accessibility (Coming soon)
Magento
Market Share: Enterprise e-commerce Key Challenge: Complex admin + catalog accessibility
Overview
Magento (Adobe Commerce) powers enterprise e-commerce with complex product catalogs, multi-store setups, and B2B features.
π Complete Guides:
- Magento Accessibility Compliance Guide (Coming soon)
- Magento Admin Accessibility (Coming soon)
Platform Comparison
Accessibility Readiness
| Platform | Core Accessibility | Common Issues | Difficulty | Time to Comply |
|---|---|---|---|---|
| WordPress | β Good | Themes/plugins | Medium | 2-4 weeks |
| Shopify | β οΈ Fair | Liquid templates | Medium | 3-6 weeks |
| WooCommerce | β οΈ Fair | Checkout flow | Medium | 3-6 weeks |
| React | β Manual | SPA routing | Hard | 4-8 weeks |
| Vue | β Manual | SPA routing | Hard | 4-8 weeks |
| Magento | β οΈ Fair | Complexity | Hard | 6-12 weeks |
| Drupal | β Excellent | Contrib modules | Easy | 1-3 weeks |
Universal Best Practices
Applies to All Platforms
1. Semantic HTML
<!-- Use proper HTML elements -->
<header>
<nav aria-label="Main navigation">
<ul>
<li><a href="/">Home</a></li>
</ul>
</nav>
</header>
<main>
<h1>Page Title</h1>
<article>
<h2>Section Title</h2>
<p>Content...</p>
</article>
</main>
<footer>
<!-- Footer content -->
</footer>
2. Keyboard Accessibility
/* Visible focus indicators */
*:focus {
outline: 3px solid #0066CC;
outline-offset: 2px;
}
/* Don't remove outlines */
button:focus {
outline: 3px solid #0066CC; /* Don't use outline: none */
}
3. Color Contrast
/* WCAG AA minimum */
body {
color: #1A1A1A; /* 16.6:1 vs white */
background: #FFFFFF;
}
.link {
color: #0066CC; /* 7.0:1 vs white */
text-decoration: underline; /* Don't rely on color alone */
}
4. Alt Text
<!-- Informative images -->
<img src="product.jpg" alt="Blue cotton t-shirt, crew neck">
<!-- Decorative images -->
<img src="decorative.jpg" alt="">
<!-- Functional images -->
<button>
<img src="search-icon.svg" alt="Search">
</button>
Testing Across Platforms
Automated Testing
All platforms can use:
- axe DevTools - Browser extension
- WAVE - WebAIM checker
- Lighthouse - Chrome DevTools
- Pa11y - Command line
Platform-specific:
- WordPress: Accessibility Checker plugin
- React: eslint-plugin-jsx-a11y
- Vue: vue-axe
Manual Testing
Keyboard Navigation (All Platforms):
- Disconnect mouse
- Tab through entire site
- Verify all functionality accessible
- Check focus visible
- Test Escape/Enter/Arrow keys
- Ensure no keyboard traps
Screen Reader Testing:
- Windows: NVDA (free)
- Mac: VoiceOver (built-in)
- Test: Navigation, forms, interactive elements
Get Expert Help
Platform-Specific Solutions
AllAccessible supports all major platforms:
- WordPress automated remediation
- Shopify liquid template fixes
- React/Vue component accessibility
- Custom platform integration
Starting at $10/month Start Free Trial β
Custom Implementation
Need help with:
- Platform-specific accessibility audit
- Custom theme/template development
- Component library accessibility
- Training for your platform
Resource Library
π₯ Platform-Specific Checklists
- WordPress Accessibility Checklist (Coming soon)
- Shopify Accessibility Checklist (Coming soon)
- React Accessibility Checklist (Coming soon)
- WooCommerce Accessibility Checklist (Coming soon)
π Complete Platform Guides
CMS Platforms:
- WordPress Complete Guide
- Drupal Accessibility Guide (Coming soon)
- Joomla Accessibility Guide (Coming soon)
E-commerce:
JavaScript Frameworks:
- React Accessibility Guide (Coming soon)
- Vue.js Accessibility Guide (Coming soon)
- Next.js Accessibility Guide (Coming soon)
π Related Resources
Standards & Compliance:
Implementation:
Frequently Asked Questions
Q: Which platform is most accessible by default? A: Drupal has the strongest accessibility by default. WordPress core is also good, but themes/plugins often break it.
Q: Is Shopify accessible out of the box? A: Shopify's Dawn theme is accessibility-ready, but custom themes and apps often have issues. Liquid templates require careful implementation.
Q: Can React apps be accessible? A: Yes, but requires manual implementation. Use libraries like react-aria or Radix UI, and manage focus/routing carefully.
Q: Do I need different accessibility strategies for different platforms? A: Somewhat. Core WCAG requirements are the same, but implementation techniques vary. WordPress uses plugins, React uses components, Shopify uses Liquid.
Q: Can I test accessibility the same way across platforms? A: Yes! axe DevTools, WAVE, and manual testing work on all platforms. Platform-specific tools (like WordPress plugins) provide additional checks.
Published: November 29, 2025 Last Updated: November 29, 2025 Reading Time: 20 minutes
About this guide: This platform accessibility hub is updated regularly with new platform guides, code examples, and best practices. Bookmark this page as your platform-specific accessibility resource.
About AllAccessible: We provide accessibility solutions for all major web platforms including WordPress, Shopify, React, Vue, and custom platforms. Learn more at allaccessible.org.