Web3Auth is where passwordless auth meets non-custodial key infrastructure for Web3 apps and wallets. By aggregating OAuth (Google, Twitter, Discord) logins, different wallets and innovative Multi Party Computation (MPC) - Web3Auth provides a seamless login experience to every user on your application.
Checkout the official Web3Auth Documentation and SDK Reference to get started!
farcaster value of AUTH_CONNECTION has been deprecated and is no longer offered by either @web3auth/modal or @web3auth/no-modal. The modal will reject any project configuration that enables loginMethods.farcaster, and noModal.connectTo(WALLET_CONNECTORS.AUTH, { authConnection: "farcaster" }) will throw a deprecation error. If you previously relied on Farcaster login, please migrate to one of the other supported AUTH_CONNECTION values....and a lot more
Web3Auth Plug and Play Modal SDK @web3auth/modal provides a simple and easy to use SDK that will give you a simple modular way of implementing Web3Auth directly within your application. You can use the pre-configured Web3Auth Modal UI and whitelabel it according to your needs.
npm install --save @web3auth/modal
Before you start, make sure you have registered on the Web3Auth Dashboard and have set up your project. Use the Client ID of the project to start your integration.
Web3Auth provides React Hooks for seamless integration with React applications.
// web3authContext.tsx
import { type Web3AuthContextConfig } from "@web3auth/modal/react";
import { WEB3AUTH_NETWORK, type Web3AuthOptions } from "@web3auth/modal";
const web3AuthOptions: Web3AuthOptions = {
clientId: "YOUR_CLIENT_ID", // Get your Client ID from Web3Auth Dashboard
web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET, // or WEB3AUTH_NETWORK.SAPPHIRE_DEVNET
};
const web3AuthContextConfig: Web3AuthContextConfig = {
web3AuthOptions,
};
export default web3AuthContextConfig;
// main.tsx or index.tsx
import ReactDOM from "react-dom/client";
import { Web3AuthProvider } from "@web3auth/modal/react";
import web3AuthContextConfig from "./web3authContext";
import App from "./App";
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<Web3AuthProvider config={web3AuthContextConfig}>
<App />
</Web3AuthProvider>
);
// App.tsx
import { useWeb3AuthConnect } from "@web3auth/modal/react";
function ConnectButton() {
const { connect, loading, isConnected, error } = useWeb3AuthConnect();
return (
<button onClick={() => connect()} disabled={loading || isConnected}>
{loading ? "Connecting..." : isConnected ? "Connected" : "Connect"}
</button>
{error &&
{error.message}
}
);
}
Web3Auth provides Vue Composables for seamless integration with Vue applications.
// web3authContext.ts
import { type Web3AuthContextConfig } from "@web3auth/modal/vue";
import { WEB3AUTH_NETWORK, type Web3AuthOptions } from "@web3auth/modal";
const web3AuthOptions: Web3AuthOptions = {
clientId: "YOUR_CLIENT_ID", // Get your Client ID from Web3Auth Dashboard
web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET, // or WEB3AUTH_NETWORK.SAPPHIRE_DEVNET
};
const web3AuthContextConfig: Web3AuthContextConfig = {
web3AuthOptions,
};
export default web3AuthContextConfig;
<script setup lang="ts">
import Home from "./Home.vue";
import { Web3AuthProvider } from "@web3auth/modal/vue";
import web3AuthContextConfig from "./web3authContext";
</script>
<template>
<Web3AuthProvider :config="web3AuthContextConfig">
<Home />
</Web3AuthProvider>
</template>
<script setup lang="ts">
import { useWeb3AuthConnect } from "@web3auth/modal/vue";
const { connect, loading, isConnected, error } = useWeb3AuthConnect();
</script>
<template>
<button @click="connect" :disabled="loading || isConnected">
<span v-if="loading">Connecting...</span>
<span v-else-if="isConnected">Connected</span>
<span v-else>Connect</span>
</button>
{{ error.message }}
</template>
For vanilla JavaScript or other frameworks, use the standard Web3Auth Modal SDK.
import { Web3Auth, WEB3AUTH_NETWORK } from "@web3auth/modal";
const web3auth = new Web3Auth({
clientId: "YOUR_CLIENT_ID", // Get your Client ID from Web3Auth Dashboard
web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET, // or WEB3AUTH_NETWORK.SAPPHIRE_DEVNET
});
// Initialize the SDK
await web3auth.init();
// Login
await web3auth.connect();
// Get user info
const user = await web3auth.getUserInfo();
// Logout
await web3auth.logout();
The Web3Auth Modal SDK offers a rich set of advanced configuration options:
@babel/runtimeThis module is distributed in 4 formats
esm build dist/package.esm.js in es6 formatcommonjs build dist/package.cjs.js in es5 formatumd build dist/package.umd.min.js in es5 format without polyfilling corejs minifiedBy default, the appropriate format is used for your specified usecase You can use a different format (if you know what you're doing) by referencing the correct file
The cjs build is not polyfilled with core-js. It is upto the user to polyfill based on the browserlist they target
CDN's serve the non-core-js polyfilled version by default. You can use a different
Please replace package and version with the appropriate package name
jsdeliver<script src="https://cdn.jsdelivr.net/npm/@web3auth/PACKAGE@VERSION"></script>
unpkg<script src="https://unpkg.com/@web3auth/PACKAGE@VERSION"></script>
Check out the examples for your preferred blockchain and platform on our examples page.
Checkout the Web3Auth Demo to see how Web3Auth can be used in your application.
For more detailed examples, visit our Web3Auth Examples repository. This repository contains a comprehensive collection of sample projects to help you get started with your Web3Auth integration.
$ claude mcp add web3auth-web \
-- python -m otcore.mcp_server <graph>