Building Frontend Applications
You can build front-end applications by using our React and TypeScript SDKs!
Front-end applications are best-suited when you want users to connect their wallets to your application and interact with your contracts using their wallet.
Automatic Set Up
The easiest way to get started is by using the thirdweb CLI.
This interactive tool creates a new project with thirdweb pre-configured with a framework and language of your choice.
npx thirdweb create app --evm
That's it! You're project is ready to start interacting with your contract!
You can start with one of our template projects by passing the --template
flag and the name of the example repo.
Manual Installation
If you have an existing project you want to integrate thirdweb into, install the thirdweb SDKs:
- npm
- Yarn
npm install @thirdweb-dev/react @thirdweb-dev/sdk ethers@5
yarn add @thirdweb-dev/react @thirdweb-dev/sdk ethers@5
Then wrap your application in the ThirdwebProvider
to get started!
import { ThirdwebProvider } from "@thirdweb-dev/react";
export const MyApp = () => {
return (
<ThirdwebProvider activeChain="ethereum">
<YourApp />
</ThirdwebProvider>
);
};
Configure Chain
If you are using one of our default chains
, provide the activeChain
prop to the ThirdwebProvider
component.
This prop determines which chain you want your app to be operating on.
View all pre-defined chains
- Ethereum:
"ethereum"
- Goerli:
"goerli"
- Polygon:
"polygon"
- Mumbai:
"mumbai"
- Arbitrum One:
"arbitrum"
- Arbitrum Goerli:
"arbitrum-goerli"
- Optimism:
"optimism"
- Optimism Goerli Testnet:
"optimism-goerli"
- Binance SmartChain:
"binance"
- Binance SmartChain Testnet:
"binance-testnet"
- Fantom Opera:
"fantom"
- Fantom Testnet:
"fantom-testnet"
- Avalanche C Chain:
"avalanche-fuji"
- Avalanche Fuji Testnet:
"avalanche-fuji-testnet"
- Localhost:
"localhost"
import { ThirdwebProvider } from "@thirdweb-dev/react";
function App() {
return (
<ThirdwebProvider activeChain="polygon">
<YourApp />
</ThirdwebProvider>
);
}
For non-default chains, import one of the 700+ chains available in the
@thirdweb-dev/chains
package and pass it to the activeChain
prop. You can install this package with:
- npm
- Yarn
npm install @thirdweb-dev/chains
yarn add @thirdweb-dev/chains
Import the chain you want to use and pass it to the activeChain
prop:
import { ThirdwebProvider } from "@thirdweb-dev/react";
import { Gnosis } from "@thirdweb-dev/chains";
function MyApp() {
return (
<ThirdwebProvider
activeChain={Gnosis}
>
<YourApp />
</ThirdwebProvider>
);
}
Custom Chains
If your chain is not included in the @thirdweb-dev/chains
package,
you can provide the chain information yourself to the activeChain
prop.
import { ThirdwebProvider } from "@thirdweb-dev/react";
const App = () => {
return (
<ThirdwebProvider
activeChain={{
// === Required information for connecting to the network === \\
chainId: 59140, // Chain ID of the network
// Array of RPC URLs to use
rpc: ["<your-rpc-url-here>"],
// === Information for adding the network to your wallet (how it will appear for first time users) === \\
// Information about the chains native currency (i.e. the currency that is used to pay for gas)
nativeCurrency: {
decimals: 18,
name: "Consensys ETH",
symbol: "crETH",
},
shortName: "czkevm", // Display value shown in the wallet UI
slug: "consensys", // Display value shown in the wallet UI
testnet: true, // Boolean indicating whether the chain is a testnet or mainnet
chain: "ConsenSys", // Name of the network
name: "ConsenSys zkEVM Testnet", // Name of the network
}}
>
<YourApp />
</ThirdwebProvider>
);
};
Local Nodes
If you are running a local node using a tool such as
Hardhat or
Anvil, provide "localhost"
as the activeChain
prop,
(or Localhost
imported from @thirdweb-dev/chains
).
You can then deploy or import your contracts to the dashboard to interact with them in your app.
function MyApp({ Component, pageProps }: AppProps) {
return (
<ThirdwebProvider activeChain="localhost">
{/* Your App Here */}
</ThirdwebProvider>
);
}