Fix the component once, and every page that uses it improves.

We repair accessibility barriers where they start: in your components, templates, and content models. Fixes arrive as reviewed pull requests or theme changes, and we retest every one against the finding that prompted it.

Starting at $6,500Part of Accessibility
A worker on a stepladder paints a stone staircase teal while a wheelchair user rolls up the ramp beside it.

Start with the components that repeat

An audit report can list hundreds of issues. Most of them trace back to a handful of shared components: an icon button with no accessible name, a modal that never moves focus, a product card whose whole surface is a click handler on a <div>. Fix those first and the count falls on every page that renders them.

So we begin with the component view from your audit. We rank each component by who it blocks and how many templates use it, then work down the list. A date picker that traps keyboard focus at checkout outranks a hundred decorative images with redundant alt text, even though the second number looks bigger in a spreadsheet.

Content follows the same logic. If editors keep uploading images without alt text, we make the field required in the CMS instead of fixing images one at a time forever.

We work in the stack you already have

The accessible patterns are the same everywhere. Where the fix lands depends on how your site is built.

Where remediation lands, by platform
PlatformWhere the fix landsTypical first fixes
React and Next.jsPull requests to your component library and app routesFocus management after client-side navigation, names for icon buttons, aria-live regions for cart and form updates
VueSingle-file components and router navigation hooksMoving focus to the new heading after route changes, labeled custom selects, disclosure buttons with aria-expanded
AngularComponents and directives, using Angular CDK utilities such as cdkTrapFocus and LiveAnnouncerDialog focus traps, announced validation errors, keyboard support on custom menus
Shopify LiquidA duplicate theme, previewed and reviewed before you publish itVariant pickers, the cart drawer, product media alt text, and collection filters
WordPressTheme templates, block patterns, and theme.json, or a replacement when a plugin can't be fixedNavigation menus, form plugins, and editor patterns that keep heading order intact
DrupalTwig templates, theme libraries, and module configurationViews exposed filters, menu toggles, and editor rules that keep content structured
Headless CMSFront-end components plus the content model itselfRequired alt text fields, constrained heading levels in rich text, link text validation

How a two-week sprint runs

Each sprint has a fixed scope, agreed on day one and drawn from your findings register.

  1. Pick the sprint scope

    We choose the findings that unblock the most people per hour of work, usually shared components and your critical journey. You approve the list before we start.

  2. Fix in a branch

    A developer on our team writes each fix in your repository or theme, following your conventions, linting, and tests. Every change references the finding it resolves.

  3. Review twice

    Your team reviews the code as usual. We review the behavior with a keyboard, zoom, and screen readers, and record it so reviewers can hear the before and after.

  4. Retest against the original finding

    After merge, an analyst retests each item exactly as the audit tested it and marks it resolved, partly resolved, or reopened in the register.

  5. Hand off

    You get a sprint report: what changed, what was retested, and what remains, with the evidence attached. The register stays yours.

Overlay widget vs source fix

An overlay widget

  • Injects a script that tries to repair the page in the browser after it loads
  • Leaves the broken component in your code, so every new page inherits the barrier
  • Guesses at names and roles it has no way to verify
  • Adds third-party JavaScript to every page view

A source fix

  • Changes the component, template, or content model where the barrier starts
  • Ships through your normal code review, tests, and deployment
  • Works the same for every visitor, with or without assistive technology
  • Leaves a pull request and a retest as evidence of what changed and when

We never install overlays

Overlays promise to fix a website with one line of JavaScript. The Federal Trade Commission's final order against one overlay vendor, accessiBe, requires the company to pay $1 million and bars it from claiming, without supporting evidence, that its automated product can make any website conform to WCAG. If you already run an overlay, we'll help you remove it as part of remediation, because it can interfere with the fixes we make.

Your developers keep the knowledge

Some teams want fixes delivered and nothing else. Others want to come out of the engagement able to build accessible components without us. We do both.

In pairing mode, a developer on our team works alongside yours: shared branches, short screen-reader demos during code review, and comments that explain the pattern, not just the patch. After a sprint or two, your developers write the fixes and we review them.

When something can't be fixed in your code, such as a third-party chat widget or a payment iframe, we contain what we can, document the rest with evidence, and draft the request your vendor manager can send.

Priced by the sprint

Remediation sprint

Starting at

$6,500per two-week sprint

Fixes delivered as reviewed pull requests or theme changes, then retested against the original findings.

Request a quote

The number of sprints depends mostly on how many shared components are involved. We estimate it from your findings register before you commit to anything.

What development teams ask us

Can you fix issues from an audit another firm did?

Yes. We retest a sample of the findings first, because reports vary in accuracy, then plan sprints from the confirmed list. If something important is missing, we tell you before we start.

Will you follow our code conventions and CI?

Yes. We work in your branches, pass your linting and tests, and submit through your normal pull request process. If you like, we add automated accessibility checks to your pipeline as we go; see Accessible Development & Training.

What about barriers inside third-party widgets?

We can't change a vendor's code, but we can often contain the problem: labeling an iframe, managing focus around an embed, or offering an accessible alternative path. For the rest, we document the barrier with evidence and draft the request for your vendor.

How do we stop fixed issues from coming back?

Retesting closes each finding, and Baclion Watch checks the same templates weekly afterward. Regressions arrive as tickets in your tracker, linked to the component and the original finding.

Can you fix performance problems in the same sprints?

Often, yes. Heavy components and unneeded scripts cause both barriers and slow interactions, so we flag the overlap and, if you've engaged us for Core Web Vitals, fix both in one pass.

Tell us what your website needs to do.

Send a link and a sentence about your deadline. You will hear back from a person within one business day, usually with a short list of questions and a proposed scope.