SoroPass

Examples

SoroPass create, sign, and recover components across desktop web, mobile-web, and cross-device passkey surfaces.

The same create / sign / recover components across desktop, mobile-web, and the desktop-initiates-on-phone case — shown live where we can, and as honest guidance where the platform takes over.

Live today: desktop web + mobile-web (real vanilla-DOM mount, mock mode, zero network). Guidance + roadmap: native bottom-sheet container + cross-device caBLE/QR. Real ceremonies and on-chain proof live on the Security & How-it-works pages — embeds run in mock mode because browsers restrict WebAuthn inside cross-origin iframes.

Surfaces

SurfaceStatus
Web (desktop)LIVE
Mobile-webLIVE
Cross-deviceGUIDANCE

Web (desktop)

Interactive sign preview

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

mountSignScreen(root, { flow, tx });
await kit.signTransaction(xdr);
useEffect(() => {
  const h = mountSignScreen(ref.current, { flow, tx });
  return () => h.unmount();
}, []);

Mobile-web

Interactive create preview

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

Works from 360px; ≥44–48px touch targets; calm opaque OS-sheet waiting (no spinner); bottom-edge OS-sheet hint bar; safe-area aware.

Scan to open the live mobile-web demo on your device (mock mode, no wallet needed).

On a real phone, the passkey sheet (Face ID / Touch ID) is the OS — our card stays calm behind it.

Cross-device (hybrid / caBLE / QR)

A recorded desktop → phone hybrid flow (captioned device/OS/date) demonstrates the intended experience.

ROADMAP — Intended UX; component on roadmap:

1 · Offer

2 · QR

3 · Approve

4 · Success

  • 1 · Offer — Connect modal: "Use a passkey on another device."
  • 2 · QR — CrossDeviceConnect QR + calm hybrid-transport waiting (no spinner).
  • 3 · Approve — "Approve on the phone that has your passkey."
  • 4 · Success — Account chip.

hybrid_transport is sourced from MDN BCD + getClientCapabilities(), not yet machine-probed in CI (which covers internal + usb). It's a documented, sourced surface — the dedicated component is the next build. See the matrix row →

How the OS sheet behaves on each surface

SurfaceBehavior
DesktopCalm opaque panel + pulsing glyph behind the native sheet.
PhoneSame + bottom-edge OS-sheet hint bar, ≥48px targets.
Cross-deviceLonger wait → leans on calm + "approve on your phone," still no spinner.

Two busy looks: WaitOverlay (OS sheet up) vs WorkBlock (spinner + progress) — never both at once.

On this page