Screen reader simulator plugin
/
/
Echo is a proactive Figma plugin that closes the 'semantic gap' between design and code. It enables designers to simulate the screen reader experiences during the design phase. Shifting accessibility upstream eliminates the guesswork and prevents costly technical rework.
Problem
Accessibility is a reactive 'check-the-box' task at the end of the development cycle
Solution
Objectives
Align design intent with developer implementation.
Automate accessibility compliance by leveraging design tokens.
Reduce costs by fixing accessibility issues before development.
Discovery
Potential impact
IBM Cost of Quality model projects that we could save 80+ hours of engineering rework per feature by moving the semantic audit into the design phase.
Design
I created a Figma plug-in called Echo, which acts as the semantic layer between the Figma canvas and Dev mode. Echo allows designers to listen to their designs by simulating a screen reader, by automatically proposing a focus order, which the designer can then refine and generate hand off documentation with.
To ensure this effort translated into engineering efficiency, I utilised the Figma Plugin API to attach this metadata into the layers. This means the accessibility layer isn't just a separate document, it’s an embedded instruction manual. When a developer selects a component in Dev Mode, Echo serves up production-ready ARIA snippets, effectively automating the most error-prone part of the handoff (Fig. 1).
Fig.1 The Echo plugin acts as a bridge between the design and the final build, transforming intent into documentation and production-ready code snippets.
Challenge. The primary hurdle in automating this process is that Figma perceives layouts as a flat collection of shapes and text, lacking any inherent understanding of functional hierarchy. While I successfully piloted a hard-coded version using Figma Make (Fig. 2), scaling this into a dynamic tool revealed two critical architectural barriers:
Token → ARIA mapping. Connecting the plugin to live Design System tokens to automatically infer ARIA roles (e.g., identifying a "Primary Button" component as a role="button").
DOM syncing. Issues with rendering a real-time preview of the Figma frame within the plugin’s sandbox environment.
Fig.2 I used Figma Make to create the interface and the interactions, allowing a reading order preview on the side.
Next steps



