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.

$ brew install SyncTek-LLC/tap/accesslint

Verify the installation:

$ accesslint --version AccessLint v1.3.0

First Scan

Point AccessLint at your Swift source directory. It will discover .swift files automatically.

$ accesslint analyze --path ./Sources

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
Example: JSON output
$ accesslint analyze --path ./Sources --format json
Example: Xcode-compatible output
$ accesslint analyze --path ./Sources --format xcode

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:

$ export ACCESSLINT_LICENSE_KEY="your-key-here"
Tip: Add the export to your ~/.zshrc or ~/.bashrc so it persists across sessions. For CI, set it as a repository secret.

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
$ accesslint analyze --path ./Sources --preset wcag-aa

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.

$ accesslint analyze --path ./Sources --fail-on major # Exit code 2 when any MAJOR findings are detected
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.

Generate a baseline
$ accesslint analyze --path ./Sources --format json > baseline.json
Run analysis against the baseline
$ accesslint analyze --path ./Sources --baseline baseline.json # Only new findings since the baseline are reported

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.

# .github/workflows/accesslint.yml name: AccessLint on: [pull_request] jobs: lint: runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: SyncTek-LLC/accesslint-action@v1 with: path: ./Sources format: github fail-on: major env: ACCESSLINT_LICENSE_KEY: ${{ secrets.ACCESSLINT_LICENSE_KEY }}

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.

$ accesslint analyze --path ./Sources --team # Findings are uploaded and tracked in your dashboard

Project Management

If your team manages multiple projects, set the ACCESSLINT_PROJECT_ID environment variable to associate findings with a specific project.

$ export ACCESSLINT_PROJECT_ID="proj_abc123" $ accesslint analyze --path ./Sources --team

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.

# Configure via the API $ curl -X POST https://api.accesslint.app/api/v1/integrations/slack \ -H "Authorization: Bearer $ACCESSLINT_LICENSE_KEY" \ -H "Content-Type: application/json" \ -d '{"webhook_url": "https://hooks.slack.com/services/your/webhook/url"}'

Track your project's accessibility posture over time. The trends dashboard shows historical finding counts, severity distribution, and regression/resolution velocity.

# Fetch trend data via the API $ curl -s https://api.accesslint.app/api/v1/projects/proj_abc123/trends \ -H "Authorization: Bearer $ACCESSLINT_LICENSE_KEY" | jq .

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:

// accesslint:disable MISSING_LABEL Button(action: checkout) { Image(systemName: "cart") }

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

License key not working

Verify that the ACCESSLINT_LICENSE_KEY environment variable is set correctly. Check for extra whitespace or newline characters, especially when copying from email.

$ echo "$ACCESSLINT_LICENSE_KEY" | cat -A # Should show your key with no trailing ^M or spaces $ export ACCESSLINT_LICENSE_KEY="$(echo -n 'your-key-here')"

If the key still doesn't work, confirm your subscription is active at accesslint.app or contact [email protected].

No findings on my project

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:

$ accesslint analyze --path ./Sources --preset strict

Also verify that AccessLint is scanning the correct directory. It looks for .swift files recursively in the path you specify.

CI exit codes not matching expectations

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/.../issues

Billing, Security, and Enterprise

For billing questions, security inquiries, enterprise plans, and SAML/SSO setup.

[email protected]

Back to AccessLint

Return to the main site for pricing, demos, and installation.

accesslint.app