Skip to main content
Privy’s frontend SDKs let you fully customize embedded wallet experiences. Match wallet flows to your app’s look and feel.
  • Use your own components and branding to customize wallet creation, signing, and transaction flows.
  • Create seamless, one-click signature and transaction experiences by disabling modals entirely.
  • React
  • React Native
  • Swift
  • Android
  • Flutter
  • Unity
Privy enables developers to whitelabel embedded wallet functionality. You can abstract away wallet UIs entirely or selectively use Privy’s default UI for specific flows.To whitelabel embedded wallets, you can configure this globally across your app in the PrivyProvider config, or selectively for specific flows at runtime.
In your PrivyProvider config you can control the default wallet UI for all flows in your app.
<PrivyProvider
  appId={process.env.NEXT_PUBLIC_PRIVY_APP_ID || ''}
  config={{
    embeddedWallets: {
      showWalletUIs: false,
      priceDisplay: {primary: 'native-token', secondary: null}
    }
  }}
>
  <YourApp />
</PrivyProvider>
For more granular control, you can also control wallet UIs for specific flows in the sections below.

Create a wallet

Privy supports whitelabeling wallet creation for Ethereum, Solana, and other chains.
  • Ethereum
  • Solana
  • Other chains
import {useCreateWallet} from '@privy-io/react-auth';
const {createWallet} = useCreateWallet();
createWallet();
To whitelabel Privy’s message signing functionality, use the useSignMessage hook and call signMessage with your desired message.
  • Ethereum
  • Solana
  • Other chains
import {useSignMessage} from '@privy-io/react-auth';
const {signMessage} = useSignMessage();
const signature = await signMessage(
  {message: 'Hello, world!'},
  {uiOptions: {showWalletUIs: false}}
);
To whitelabel Privy’s transaction sending functionality, use the useSendTransaction hook and call sendTransaction with your desired transaction.
  • Ethereum
  • Solana
import {useSendTransaction} from '@privy-io/react-auth';
const {sendTransaction} = useSendTransaction();
sendTransaction(
  {
    to: '0xE3070d3e4309afA3bC9a6b057685743CF42da77C',
    value: 100000
  },
  {
    uiOptions: {showWalletUIs: false}
  }
);