Skip to main content

PnP No Modal SDK - v5 to v6

General

web3auth.connected is introduced

Manage session using web3auth.connected instead of web3auth.provider

With V6, users can manage their session using web3auth.connected instead of web3auth.provider.

// With V6
if (web3auth.connected) {
setLoggedIn(true)
}

provider is now always available

In V5, we used to add a check for setting the provider only if the web3auth.provider was present. But now with V6 we always have a provider available even if the user is not logged in.

// With V5
if (web3auth.provider) {
setProvider(web3auth.provider)
}
// With V6
setProvider(web3auth.provider) // before the connect() or connectTo(), provider is available.

rpcTarget and chainId is now a mandatory parameter

Previously, the Web Modal SDK required chainConfig as a parameter which had rpcTarget & chainId as the optional parameter. But with V6, it's mandatory to add rpcTarget & chainId in the chainConfig object.

const web3auth = new Web3Auth({
clientId,
chainConfig: {
chainNamespace: CHAIN_NAMESPACES.EIP155,
chainId: '0x1',
rpcTarget: 'https://rpc.ethereum.org', // This is the public RPC we have added, please pass on your own custom endpoint while creating an app
},
web3AuthNetwork: 'sapphire_mainnet',
})

privateKeyProvider is introduced

privateKeyProvider is now a mandatory parameter to be passed into the OpenLoginAdapter

With V6, we have added a new parameter privateKeyProvider which is mandatory to be passed into the OpenLoginAdapter.

For EVM chains

For EVM chains use the EthereumPrivateKeyProvider from the @web3auth/ethereum-providerpackage. Please note thatEthereumPrivateKeyProviderrequireschainConfigas the config parameter at the time of initialization.

import { EthereumPrivateKeyProvider } from '@web3auth/ethereum-provider'

const chainConfig = {
chainNamespace: CHAIN_NAMESPACES.EIP155,
chainId: '0x1',
rpcTarget: 'https://rpc.ethereum.org',
displayName: 'Ethereum Mainnet',
blockExplorer: 'https://etherscan.io',
ticker: 'ETH',
tickerName: 'Ethereum',
}
const privateKeyProvider = new EthereumPrivateKeyProvider({ config: { chainConfig } })
const openloginAdapter = new OpenloginAdapter({
privateKeyProvider,
})
web3authInstance.configureAdapter(openloginAdapter)

For Solana

For Solana use the SolanaPrivateKeyProvider from the @web3auth/solana-providerpackage. Please note that SolanaPrivateKeyProvider requires chainConfig as the config parameter at the time of initialization.

import { SolanaPrivateKeyProvider } from '@web3auth/solana-provider'

const chainConfig = {
chainNamespace: CHAIN_NAMESPACES.SOLANA,
chainId: '0x1', // Please use 0x1 for Mainnet, 0x2 for Testnet, 0x3 for Devnet
rpcTarget: 'https://api.mainnet-beta.solana.com',
displayName: 'Solana Mainnet',
blockExplorer: 'https://explorer.solana.com',
ticker: 'SOL',
tickerName: 'Solana',
}
const privateKeyProvider = new SolanaPrivateKeyProvider({ config: { chainConfig } })
const openloginAdapter = new OpenloginAdapter({
privateKeyProvider,
})
web3auth.configureAdapter(openloginAdapter)

For all other chains

For all Non-EVM & Non-Solana chains use the CommonPrivateKeyProvider from the @web3auth/base-providerpackage. Please note that CommonPrivateKeyProvider requires chainConfig as the config parameter at the time of initialization.

import { CommonPrivateKeyProvider } from '@web3auth/base-provider'

const chainConfig = {
chainNamespace: CHAIN_NAMESPACES.SOLANA,
chainId: '0x1', // Please use 0x1 for Mainnet, 0x2 for Testnet, 0x3 for Devnet
rpcTarget: 'https://api.mainnet-beta.solana.com',
displayName: 'Solana Mainnet',
blockExplorer: 'https://explorer.solana.com',
ticker: 'SOL',
tickerName: 'Solana',
}
const privateKeyProvider = new CommonPrivateKeyProvider({ config: { chainConfig } })

const openloginAdapter = new OpenloginAdapter({
privateKeyProvider,
})
web3authInstance.configureAdapter(openloginAdapter)