For the complete documentation index, see llms.txt. This page is also available as Markdown.

Setup Privy (optional)

If you have your own Privy app, you can pass an additional prop with your settings.

import { VeChainKitProvider } from '@vechain/vechain-kit';

export default function App({ Component, pageProps }: AppProps) {
    return (
        <VeChainKitProvider
            privy={{
                appId: process.env.NEXT_PUBLIC_PRIVY_APP_ID!,
                clientId: process.env.NEXT_PUBLIC_PRIVY_CLIENT_ID!,
                loginMethods: ['google', 'twitter', 'sms', 'email'],
                appearance: {
                    walletList: ['metamask', 'rainbow'],
                    accentColor: '#696FFD',
                    loginMessage: 'Select a social media profile',
                    logo: 'https://i.ibb.co/ZHGmq3y/image-21.png',
                },
                embeddedWallets: {
                    createOnLogin: 'all-users',
                },
                allowPasskeyLinking: true,
            }}
            ...
            //other props
        >
            {children}
        </VeChainKitProvider>
    );
}

Go to privy.io and create an app. You will find the APP ID and the CLIENT ID in the App Settings tab.

For further information on how to implement Privy SDK please refer to their docs: https://docs.privy.io/

This project uses:

You can import privy from the kit as

Pros of self hosting Privy:

  • No UI confirmations on user transactions (no popup window per signature)

  • Allow your users to back up their keys and update security settings directly in your app

  • Email / passkey / SMS login (these can't run via the whitelabel popup)

  • Additional OAuth providers Privy supports but VeChain's whitelabel doesn't enable (LinkedIn, Spotify, …)

  • Your dApp's branding throughout the login modal

Cons:

  • Price (Privy pricing tiers)

  • Responsibility to correctly secure your Privy account, since it contains access to users' wallet settings

  • Users have their own wallet scoped to your dApp instead of a single VeChain-wide identity (cross-app linking still possible via ecosystem mode)

Last updated

Was this helpful?