From 499dd361364697848f92b086941c2bd2d09f095e Mon Sep 17 00:00:00 2001 From: Noam Date: Fri, 17 Jul 2026 16:07:44 -0700 Subject: [PATCH 1/3] docs(world-id): add Selfie Check Sandbox testing guide Add a testing guide covering coverage (entry surface x user state), critical user journeys, and known limitations for testing Selfie Check end-to-end in Sandbox. Cross-link it from the Selfie Check credential page and the IDKit credentials integration guide. Co-Authored-By: Claude Sonnet 5 --- docs.json | 3 +- world-id/credentials/11.mdx | 3 + world-id/idkit/credentials.mdx | 2 +- world-id/sandbox/testing-selfie-check.mdx | 68 +++++++++++++++++++++++ 4 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 world-id/sandbox/testing-selfie-check.mdx diff --git a/docs.json b/docs.json index 430ebf3..a4aa0cd 100644 --- a/docs.json +++ b/docs.json @@ -87,7 +87,8 @@ "group": "Sandbox", "pages": [ "world-id/sandbox/what-is-sandbox", - "world-id/sandbox/sandbox-access" + "world-id/sandbox/sandbox-access", + "world-id/sandbox/testing-selfie-check" ] }, { diff --git a/world-id/credentials/11.mdx b/world-id/credentials/11.mdx index 44f0a86..1d6b58f 100644 --- a/world-id/credentials/11.mdx +++ b/world-id/credentials/11.mdx @@ -56,3 +56,6 @@ You will need to use IDKit to integrate Selfie Check (Beta) into your applicatio ## Next steps See [Web Integration Guide](/world-id/credentials#legacy-presets). + +Testing your integration? See [Testing Selfie Check in Sandbox](/world-id/sandbox/testing-selfie-check) +for coverage, critical user journeys, and known limitations. diff --git a/world-id/idkit/credentials.mdx b/world-id/idkit/credentials.mdx index bca3249..8b33c43 100644 --- a/world-id/idkit/credentials.mdx +++ b/world-id/idkit/credentials.mdx @@ -107,7 +107,7 @@ const preset = passport({ signal: "user-123" }); Selfie Check is available through the legacy preset today and returns a World ID 3.0 Face proof. World ID 4.0 support is rolling out soon. -Learn more in [Selfie Check](/world-id/credentials/11). +Learn more in [Selfie Check](/world-id/credentials/11). To test your integration end-to-end, see [Testing Selfie Check in Sandbox](/world-id/sandbox/testing-selfie-check). ```typescript title="JavaScript" diff --git a/world-id/sandbox/testing-selfie-check.mdx b/world-id/sandbox/testing-selfie-check.mdx new file mode 100644 index 0000000..8979460 --- /dev/null +++ b/world-id/sandbox/testing-selfie-check.mdx @@ -0,0 +1,68 @@ +--- +title: "Testing Selfie Check in Sandbox" +description: "Coverage, critical user journeys, and known limitations for testing your Selfie Check integration in Sandbox." +"og:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/docs-meta.png" +"twitter:image": "https://raw.githubusercontent.com/worldcoin/developer-docs/main/images/docs/docs-meta.png" +--- + +{/* cspell:ignore idkit DoB reinstalls */} + +Sandbox lets you run the full [Selfie Check](/world-id/credentials/11) relying-party +journey end-to-end — from your surface, through IDKit, into the sandbox World ID app, +and back — without touching production identities or real proofs. + +New to Sandbox? Start with [What is Sandbox?](/world-id/sandbox/what-is-sandbox) and +[How to get access](/world-id/sandbox/sandbox-access) before working through this +guide. + + + In scope: the full relying-party journey — request handoff, consent, capture, + enrollment and matching, proof generation, and delivery of the proof. Out of scope: + production identity data and real-world uniqueness at scale. Sandbox accounts and + proofs are for integration testing only, not load testing, security certification, + or production sign-off. + + +## Coverage + +Testing is organized by entry surface and user state, using the same [Hot, Cold, and +Semi-cold states](/world-id/idkit/verification-flows) as the rest of World ID: + +- **Hot** — the user already has World ID installed. If they're already Selfie Check + enrolled, they go straight to face match; if not, World ID walks them through + enrollment first, then match. (Selfie Check has no distinct Warm flow — enrollment + happens inline within Hot, same as [Verification Flows](/world-id/idkit/verification-flows) + describes.) +- **Cold** — a new user with no World ID app: the full funnel, including install, + account creation, date of birth, invite code (iOS), enrollment, and Selfie Check. +- **Semi-cold** — an existing user without World ID on this device: reinstall and + account recovery, then Selfie Check. + +| Entry surface | State | What it exercises | +| --- | --- | --- | +| Native app | Hot | Same-device: validated user presents a face credential; deep link into World ID and back. | +| Native app | Cold | Install → create account → add date of birth → redeem invite code → enroll → complete Selfie Check. | +| Native app | Semi-cold | Existing user reinstalls and recovers their account on a fresh device, then completes Selfie Check. | +| Web app | Hot | Cross-device: start on web, complete on phone via QR scan, proof returns to the web session. | +| Web app | Cold | Same cold funnel, cross-device via QR; proof returns to the originating web session. | +| Web app | Semi-cold | Same semi-cold recovery, cross-device via QR. | + +## Known limitations + +- **Sandbox apps aren't published to the app stores.** As with other Sandbox testing, + install deep links won't route to a store listing the way they do in production — + see [How to get access](/world-id/sandbox/sandbox-access#things-to-know). This means + the Cold and Semi-cold journeys above can't be exercised exactly as they will be once + the app is on the App Store or Play Store. +- **iOS Semi-cold is currently limited.** The reinstall/login journey reliably works on + Android today. On iOS, if the user taps "Sign in" instead of "Sign up" mid-flow, + there's no path to add the invite code — they have to restart from a fresh QR or deep + link. Expect iOS Semi-cold to behave differently from Android until this is closed. +- **Invite-code handling in the Cold flow differs by platform.** Confirm how invite + codes are presented and redeemed on the platform you're targeting — see + [invite-code mode](/world-id/idkit/verification-flows#with-invite-code-mode). + +## Next step + +Questions, or found a journey these scenarios don't cover? Reach out to your World +point of contact. From 40dd882ef2d32da67b53d2b4d1ccd7f40978c3c0 Mon Sep 17 00:00:00 2001 From: Noam Date: Fri, 17 Jul 2026 16:23:52 -0700 Subject: [PATCH 2/3] chore: trigger preview build From bb869c543944eeb435dd085483a7de4c2ab953db Mon Sep 17 00:00:00 2001 From: Noam Date: Tue, 21 Jul 2026 13:07:28 -0700 Subject: [PATCH 3/3] docs(world-id): note Sandbox builds share Production's release process Co-Authored-By: Claude Sonnet 5 --- world-id/sandbox/what-is-sandbox.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/world-id/sandbox/what-is-sandbox.mdx b/world-id/sandbox/what-is-sandbox.mdx index 40f4ef8..e00540f 100644 --- a/world-id/sandbox/what-is-sandbox.mdx +++ b/world-id/sandbox/what-is-sandbox.mdx @@ -9,7 +9,9 @@ description: "An isolated, production-like environment for testing your World ID Sandbox is a dedicated, production-like environment for building and testing your World ID integration. It runs alongside Production as its own environment, with its -own backend and its own builds of the World ID app for iOS and Android. +own backend and its own builds of the World ID app for iOS and Android, built from +the same codebase and release process as Production — so Sandbox is just as stable +and reliable. It lets you run a complete integration — from your app or website, through IDKit, into the World ID app, and back — without touching production identities or issuing real