Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 18 additions & 27 deletions world-id/4-0-migration.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
---
title: "World ID 4.0"
description: "Migration guide for moving your app to World ID 4.0"
tag: "Coming Soon"
"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"
---


## Start Here

World ID 4.0 is available for new and existing integrations. New apps should
start with IDKit 4.x; existing apps should choose the migration path that
matches how they use World ID.

- Register or upgrade your app in the [Developer Portal](https://developer.worldcoin.org).
- Upgrade to IDKit 4.x (see below).
- Choose a migration path below based on your app's behavior.
Expand Down Expand Up @@ -40,21 +43,7 @@ Adopting World ID 4.0 requires upgrading to IDKit 4.x, which introduces major br

For details and example code, see the [IDKit 4.0 integration guide](/world-id/idkit/integrate).

## Migration Timeline (Phase Dates)

Use these dates as the default migration timeline:

- **Phase 1 (Migration):** through **June 1, 2026**
- Upgrade SDKs/contracts, register your RP, and create v4 actions.
- New World ID users will have v3 and v4 credentials
- **Phase 2 (Transition):** **June 1, 2026** to **March 31, 2027**
- New users from this date will only be able to create 4.0 proofs.
- All users migrated to 4.0
- **Phase 3 (v3 Cut-off):** from **April 1, 2027** onward
- v3 Proofs will no longer be generated by World ID

If your rollout needs more time, extend Phase 2 and move `CD` later.

See [Configure Credentials](/world-id/idkit/credentials) to choose a World ID 4.0 credential, or [Other legacy presets](/world-id/idkit/credentials#other-legacy-presets) to maintain an existing World ID 3.0 integration.

## Migration Path

Expand All @@ -75,7 +64,8 @@ These apps have a single long-running action.

#### Migration Flow Diagram

This diagram shows the three-phase migration process: preparation, gradual transition, and v3 cut-off.
This diagram shows an app-controlled migration: preparation, a compatibility
period, and the point when your app stops accepting World ID 3.0 proofs.

```mermaid
sequenceDiagram
Expand All @@ -88,7 +78,7 @@ sequenceDiagram
RP->>Portal: Register for v4 Protocol
RP->>Portal: Create v4 actions

Note over RP,User: Phase 2: Transition Date (TD = Migration Start Date)
Note over RP,User: Phase 2: Compatibility period (TD = migration start date)
rect rgb(240, 248, 255)
Note right of RP: Temporary compatibility mode (allow_legacy_proofs: true)
RP->>User: Request proof (genesis_issued_at=TD, allow_legacy_proofs: true)
Expand All @@ -102,7 +92,7 @@ sequenceDiagram
RP->>RP: Store nullifier
end

Note over RP,User: Phase 3: Cut-off of V3
Note over RP,User: Phase 3: App cutover to v4
RP->>User: Request proof (allow_legacy_proofs: false, v4 only)
alt User has v4 credential issued AFTER TD
User->>RP: v4 proof + nullifier
Expand All @@ -111,12 +101,13 @@ sequenceDiagram
end
```

**Summary:** During Phase 2, both v3 and v4 proofs are accepted. Phase 3 enforces v4-only.
**Summary:** During the compatibility period, the app accepts both v3 and v4
proofs. At the app's cutover, it begins accepting only v4 proofs.

<Warning>
Users who have an old World ID will not be able to claim after Phase 3 as
their credential will be &lt; TD. Because of this, Phase 2 should be
sufficiently long, up to one year.
Before switching your app to v4-only, confirm that the users you support can
produce the required v4 credentials. Choose the transition and cutover dates
for your own rollout rather than relying on a fixed global schedule.
</Warning>

#### Step-by-step Migration Details
Expand Down Expand Up @@ -179,7 +170,7 @@ These apps create multiple one-time actions. These actions are short lived.
**Migration approach:** Migrate your SDK and Developer Portal account. Pick a new future action to start accepting only v4 proofs.
#### Migration Flow Diagram

This diagram shows a simpler two-phase migration with a hard cutover.
This diagram shows a simpler two-step migration with an app-controlled cutover.

```mermaid
sequenceDiagram
Expand All @@ -192,7 +183,7 @@ sequenceDiagram
RP->>Portal: Register for v4 Protocol
RP->>Portal: Create v4 actions

Note over RP,User: Phase 2: Transition Date (TD)
Note over RP,User: Phase 2: App cutover (TD)
rect rgb(255, 240, 245)
Note right of RP: Hard Migration (allow_legacy_proofs: false)
RP->>User: Request proof (genesis_issued_at=TD, allow_legacy_proofs: false)
Expand All @@ -206,7 +197,7 @@ sequenceDiagram
end
```

**Summary:** During Phase 2, only accept v4 proofs for new actions.
**Summary:** At the app's cutover, new actions accept only v4 proofs.

### Recurring Verifications and New Credential Checks

Expand Down Expand Up @@ -309,7 +300,7 @@ export async function proveSession(sessionId) {

### New Apps

Apps launched after v4 is fully released will not need to migrate.
New apps should start with IDKit 4.x and do not need a protocol migration path.

## Further Migration Details

Expand Down
13 changes: 8 additions & 5 deletions world-id/credentials/11.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ import { CredentialHero } from "/snippets/credential-hero.jsx";
issuerVerified={true}
status="beta"
id={11}
sybilResistance="some"
sybilResistanceDescription="Facial similarity checks provide some sybil resistance, but not as strong as Orb or NFC verification."
validityPeriod="90 days"
/>

Expand All @@ -30,13 +28,18 @@ Selfie Check (Beta) uses the user's mobile device camera for liveness and facial
similarity checks. It adds friction against automated and repeated account
creation without requiring a Proof of Human. Unlike high-assurance Orb verification,
Selfie Check does not provide a strict one-person-one-account guarantee.
It returns a proof of the completed check, not a numeric Sybil or uniqueness
score.

Use Selfie Check (Beta) for:

* **Liveness detection:** Confirm the user is a real person, not a spoof or injection attack.
* **Sybil resistance:** Make mass account creation harder through facial similarity checks.
* **Abuse resistance:** Add friction to automated and repeated account creation.
* **Continuity:** Confirm a returning user is the same person who originally enrolled.

Selfie Check has a 90-day inactivity window. After 90 days without use, the
user completes the camera flow again before returning another proof.

<Warning>
Selfie Check (Beta) is access-gated. To use it, [request access](mailto:developers@toolsforhumanity.com)
so the feature flag can be enabled for your app.
Expand All @@ -57,8 +60,8 @@ Use IDKit to integrate Selfie Check into your application.
1. **Challenge:** The user initiates the flow on your app (Relying Party).
2. **Hand-off:** The user is redirected to World App. If they don't have World App installed, they are guided to download it and go straight into the Selfie Check experience.
3. **Enrollment/Auth:**
* **New User:** Prompts to "Take a selfie", then runs a liveness check and a uniqueness check against other faces.
* **Returning User:** Runs a quick Face Auth to verify continuity.
* **New User:** Enrolls with a selfie and liveness check.
* **Returning User:** Completes a short camera check to verify continuity.
4. **Success:** The user returns to your application with a verified credential.

## Next steps
Expand Down
3 changes: 3 additions & 0 deletions world-id/idkit/build-with-llms.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ Create an app in the [Developer Portal](https://developer.world.org). You will n

Prefer to integrate manually? Follow the [IDKit integration guide](/world-id/idkit/integrate) for the complete client, signing, verification, and testing flow.

If your coding assistant accepts a documentation index, give it the complete
[World documentation index](https://docs.world.org/llms.txt).

Copy this prompt and paste it into Codex, Claude, Cursor, or your preferred AI coding assistant:

```text title="Copy this prompt"
Expand Down
2 changes: 1 addition & 1 deletion world-id/idkit/credentials.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ These presets only return World ID 3.0 proofs. Use them for existing integration
</tr>
<tr>
<td className="p-2 align-middle whitespace-nowrap"><code>deviceLegacy</code></td>
<td className="p-2 align-middle">At least a Device verification. Returns the user's highest legacy credential: Device, Document, Secure Document, or Orb.</td>
<td className="p-2 align-middle"><strong>Deprecated.</strong> Keep <code>deviceLegacy</code> only for existing Device integrations. For new integrations, use <a href="#selfie-check-beta">Selfie Check (Beta)</a>.</td>
</tr>
</tbody>
</table>
Expand Down
Loading