Documentation
Everything you need to install, configure, and get the most out of AccessLint for your iOS accessibility workflow.
Quickstart Guide
Get from zero to your first accessibility scan in under a minute.
Installation
Install AccessLint via Homebrew. One command, no dependencies required.
Verify the installation:
First Scan
Point AccessLint at your Swift source directory. It will discover .swift files automatically.
AccessLint scans all Swift files in the directory (including subdirectories), runs every enabled rule, and prints findings grouped by severity.
Output Formats
AccessLint supports four output formats. The default is human-readable terminal output.
| Format | Flag | Use Case |
|---|---|---|
| Terminal | default | Human-readable, colored output with severity indicators |
| JSON | --format json | Structured output for AI agents, MCP servers, and scripts |
| Markdown | --format md | Reports for PRs, wikis, and documentation |
| Xcode | --format xcode | Inline warnings and errors in Xcode build logs |
License Activation
The free tier includes 10 rules and runs without a license key. To unlock all 25 rules with a Team or Enterprise license, set the environment variable:
Configuration
Fine-tune which rules run, how strict the analysis is, and how it integrates with your workflow.
Presets
Presets control which WCAG rules are enabled. Choose the level that matches your compliance requirements.
| Preset | Rules | Description |
|---|---|---|
| minimal | 5 | Only the most critical rules: missing labels and broken accessibility trees |
| wcag-a | 10 | WCAG 2.1 Level A essentials. Same as the free tier rule set |
| wcag-aa | 20 | WCAG 2.1 Level AA. The most common compliance target. Default preset |
| wcag-aaa | 23 | WCAG 2.1 Level AAA. Maximum conformance for accessibility-first apps |
| strict | 25 | All rules enabled including best-practice and informational checks |
CI Integration
Use the --fail-on flag to control exit codes based on finding severity. This lets your CI pipeline fail builds when accessibility violations exceed your threshold.
| Exit Code | Meaning |
|---|---|
| 0 | No findings at or above the threshold |
| 1 | Findings detected, but below the fail-on threshold |
| 2 | Findings at or above the fail-on threshold |
Baseline Comparison
Use a baseline file to detect only new findings. This is useful when adopting AccessLint on an existing project -- you acknowledge current violations and only block on regressions.
GitHub Action
Add AccessLint to your CI pipeline with the official GitHub Action. It runs analysis on every pull request and posts findings as PR comments.
Team Features
Team and Enterprise plans unlock cloud-connected features for multi-developer workflows. All team features require a valid license key.
Cloud Baselines
Use the --team flag to submit findings to the AccessLint cloud dashboard. Cloud baselines track your project's accessibility state across branches and environments.
Project Management
If your team manages multiple projects, set the ACCESSLINT_PROJECT_ID environment variable to associate findings with a specific project.
Project IDs are available in your team dashboard after creating a project.
Slack Notifications
Get notified in Slack when new regressions are detected. Configure the Slack webhook URL via the AccessLint API.
Trends Dashboard
Track your project's accessibility posture over time. The trends dashboard shows historical finding counts, severity distribution, and regression/resolution velocity.
FAQ
The free tier includes 10 rules covering WCAG Level A essentials: MISSING_LABEL, IMAGE_DECORATIVE, MISSING_TRAITS, FIXED_FONT, SCREEN_TITLE, BUTTON_MISSING_LABEL, HIDDEN_BUT_ACCESSIBLE, FIXED_FONT_DYNAMIC_TYPE, UIKIT.MISSING_TRAITS, and UIKIT.IMAGE_DECORATIVE. These catch the most common accessibility violations in SwiftUI and UIKit.
Visit accesslint.app and click Start Team Plan. After completing checkout via Stripe, you will receive a license key by email. Set the ACCESSLINT_LICENSE_KEY environment variable to activate all 25 rules.
Yes. Use --fail-on major to make AccessLint exit with code 2 when major findings are detected. Use the official GitHub Action at SyncTek-LLC/accesslint-action@v1 for automated PR comments and status checks. See the CI Integration section for details.
AccessLint covers WCAG 2.1 and 2.2, Levels A through AAA. The free tier covers Level A essentials. Team and Enterprise plans cover the full spectrum through Level AAA. Use the --preset flag to target a specific conformance level.
Add an inline comment above the flagged line to suppress a specific rule:
File issues on our GitHub repository: SyncTek-LLC/AccessLint-Distribution. Please include the AccessLint version, a minimal code sample that reproduces the issue, and the expected vs. actual behavior.
Troubleshooting
Verify that the ACCESSLINT_LICENSE_KEY environment variable is set correctly. Check for extra whitespace or newline characters, especially when copying from email.
If the key still doesn't work, confirm your subscription is active at accesslint.app or contact [email protected].
If AccessLint reports zero findings, your code may already be accessible -- or you may need to enable more rules. Try running with the strict preset to activate all 25 rules:
Also verify that AccessLint is scanning the correct directory. It looks for .swift files recursively in the path you specify.
AccessLint uses three exit codes in CI mode:
| Code | Meaning |
|---|---|
| 0 | Clean -- no findings at or above the fail-on threshold |
| 1 | Findings detected, but all are below the fail-on threshold |
| 2 | Findings at or above the fail-on threshold (build should fail) |
If you're not using --fail-on, AccessLint exits 0 regardless of findings. Add --fail-on major or --fail-on minor to enable exit code enforcement.
Contact / Support
We are here to help. Choose the right channel for your question.
Bug Reports and Feature Requests
For bugs, unexpected behavior, false positives, and feature ideas.
github.com/.../issuesBilling, Security, and Enterprise
For billing questions, security inquiries, enterprise plans, and SAML/SSO setup.
[email protected]