docs
Get startedTroubleshootingPaymentsWebhooksAgent paymentsSwop MCPOviIdentity (swop.id)SwivyRPC (preview)API reference

Migrating from Privy

How Privy concepts map to Swivy, and how a migration runs without touching existing wallets.

Preview: Swivy is not generally available

Swivy runs in staging only. Swop itself has not migrated yet and still runs on Privy. Request early access.

In plain words: Swivy was built to do the job Privy does, with a similar SDK shape, so moving is mostly a matter of swapping the provider and the hooks. Existing users keep their old wallets until they choose to move.

Concept map

PrivySwivy
AppEnvironment (appId + publishableKey for clients, secretKey for servers)
PrivyProviderSwivyProvider from @swivy/react
Login with email / SMS / passkeyEmail code login today, with passkey, TOTP or SMS as a second factor. Passkey and SMS as the main login (loginWithPasskey, signupWithPasskey, requestSmsCode) are in review
Login with an external walletrequestWalletLogin + signInWithWallet (EVM wallets and Phantom)
Embedded wallets (EVM, Solana)Managed accounts, auto-created at login per policy
useWallets / create walletuseEmbeddedWallets() / ensureEmbeddedWallet(chain)
Sign / send transactionSigning and transaction intents (signMessageAndWait, createTransactionIntentAndWait)
Gas sponsorshipexecutionPolicy.sponsorship, per network with caps
Delegated signers for agentsAgent session grants (scoped, expiring, user-approved)
App-owned server wallets (treasury, fee payer)/v1/server/wallets, secret key plus a required authorization key. In review, not on staging yet
users().get / get user by email / deleteGET /v1/server/users/{id}, GET /v1/server/users?email=, DELETE /v1/server/users/{id} (wallets are kept). In review
verifyAccessTokenPOST /v1/server/sessions/verify (Swivy sessions are opaque, so a backend checks them with Swivy). In review
Key exportexportManagedAccount, off unless policy allows, step-up required
Webhooksswivy.intent.completed today. Retries on Privy's schedule plus identity, wallet and failed-intent events are in review
Bitcoin walletsSegwit wallets with raw-hash signing (the useSignRawHash pattern) are in review. Your app builds and broadcasts the transaction

How a migration runs

  1. Stage on testnets (base-sepolia, solana-devnet) with your own environment.
  2. Dual stack: new users get Swivy wallets; existing users stay on their current wallets.
  3. Move existing users when you're ready, by key export or by re-keying to a new Swivy wallet, with a reason to do it.
  4. Switch off the old provider once nobody depends on it.

Swop will follow the same steps: new users on Swivy first, existing users later, nobody's existing wallet touched without their action. See Status & roadmap.

Why teams move

  • Costs follow signing, not head count. Per-user pricing grows with every user; Swivy's cost grows with signing work and storage.
  • One login across your apps. Environments in the same project share users and wallets, and Sign in with Swop extends that to other apps.
  • Your graph stays yours. Users, wallets and audit logs live in your environments.

On this page