SoroPass

Compatibility

A living, machine-probed WebAuthn/passkey support matrix rendered from the real, dated SoroPass matrix-pipeline snapshot — never hand-written.

Sourced, machine-probed, dated, and diffable — re-verified automatically, never hand-waved. This page renders the real exported snapshot from the matrix pipeline; nothing on it is typed by hand.

The matrix is generated by apps/matrix from MDN BCD ingest merged with a virtual-authenticator CI run, then exported to dated JSON snapshots. Every cell carries its real source, tier, and last-verified date, and unknowns render as ? instead of a fabricated green. Open the raw JSON to verify that nothing here is invented.

Freshness

Each published snapshot is stamped with provenance so you can see exactly how current it is:

  • Built — the date the snapshot was generated.
  • Relative age — how long ago that was (e.g. "today", "3 days ago").
  • BCD — the MDN browser-compat-data version that was ingested.
  • CI run — the date of the virtual-authenticator CI run that fed the snapshot.
  • Cells — the total number of feature × platform cells.
  • Coverage — the count of features times the number of platforms.

The eight platforms tracked in each snapshot are:

PlatformBrowserOS
ChromeChromedesktop
Chrome AndroidChromeAndroid
EdgeEdgeWindows
Safari macOSSafarimacOS
Safari iOSSafariiOS
FirefoxFirefoxdesktop
Firefox AndroidFirefoxAndroid
SamsungSamsung InternetAndroid

Provenance

Every cell is tagged with where it came from. A snapshot's cells break down by source, and the source mix is shown as live counts. The three source-badge styles are:

  • ci — probed by the virtual-authenticator CI (also covers live feature-detection probes).
  • bcd — MDN browser-compat-data.
  • curated — cross-referenced from sources such as passkeys.dev and caniuse.

The page links the actual snapshot file produced by apps/matrix from MDN BCD merged with the virtual-authenticator CI run. Open it — every glyph in the grid comes straight from the snapshot's cells[] array, and unknowns render ? instead of a fake green.

How to read a cell

GlyphMeaning
supported
partial
unsupported
?unknown

Each cell also carries a source badge:

BadgeSource
civirtual-authenticator CI
bcdMDN BCD
curatedcross-referenced

Clicking a cell reveals its detail: the feature and platform, the status, the source, the version it has been supported since, its tier, the last-verified date, any notes, and a link to the upstream source.

Support grid

The support grid is a table of every tracked feature (rows) against the eight platforms (columns). Each intersection renders a status glyph plus its source badge, drawn directly from the snapshot's cells[]. Key features — including es256_alg (the ES256 algorithm SoroPass requires) and hybrid_transport — are highlighted.

Interactive matrix preview

The real component runs in mock mode on the demo. Open the demo →

CI grid — combinatorial proof

The CI grid is the combinatorial proof behind the support grid. It records the result of sweeping {transport × residentKey × UV} combinations on the CI runner, reporting for each combination whether the credential was created, asserted, verified, and which alg was negotiated. Each row is a real create → get round-trip checked with p256.verify.

ColumnMeaning
transport × residentKey × UVthe combination under test
createdcredential creation succeeded
assertedassertion (get) succeeded
verifiedsignature verified with p256.verify
algthe COSE algorithm negotiated

Limitations (a trust signal, not a footnote): platforms that are not available on the CI runner are cross-referenced from BCD rather than machine-verified for that run. Firefox / WebKit virtual authenticators remain out of scope; the CI sweep covers internal + usb transports with a deterministic low-S signer, so it does not reproduce Apple's ~50% high-S distribution.

No CI snapshot in an export yet? Run pnpm matrix:ci.

Rebuilding the snapshot

If the page cannot load /matrix/index.json, regenerate and re-export the snapshot:

pnpm --filter @soropass/matrix matrix:build
DOCS_PUBLIC_DIR=apps/site/public pnpm --filter @soropass/matrix docs:export

On this page