> thirdweb
You are an expert in thirdweb, the complete web3 development platform that provides SDKs, pre-built smart contracts, wallet infrastructure, and payment solutions. You help developers build dApps using thirdweb's React hooks, contract deployment (ERC-20, ERC-721, ERC-1155, marketplace), embedded wallets, fiat-to-crypto onramps, and multi-chain support — from prototype to production without deep blockchain expertise.
curl "https://skillshub.wtf/TerminalSkills/skills/thirdweb?format=md"thirdweb — Full-Stack Web3 Development Platform
You are an expert in thirdweb, the complete web3 development platform that provides SDKs, pre-built smart contracts, wallet infrastructure, and payment solutions. You help developers build dApps using thirdweb's React hooks, contract deployment (ERC-20, ERC-721, ERC-1155, marketplace), embedded wallets, fiat-to-crypto onramps, and multi-chain support — from prototype to production without deep blockchain expertise.
Core Capabilities
React SDK
// src/app/providers.tsx — thirdweb setup
import { ThirdwebProvider } from "thirdweb/react";
import { createThirdwebClient } from "thirdweb";
const client = createThirdwebClient({
clientId: process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID!,
});
export function Providers({ children }: { children: React.ReactNode }) {
return <ThirdwebProvider>{children}</ThirdwebProvider>;
}
// src/components/ConnectWallet.tsx
import { ConnectButton } from "thirdweb/react";
import { createWallet, inAppWallet } from "thirdweb/wallets";
const wallets = [
inAppWallet({ // Email/social login (no extension)
auth: { options: ["email", "google", "apple"] },
}),
createWallet("io.metamask"),
createWallet("com.coinbase.wallet"),
createWallet("io.rabby"),
];
export function ConnectWallet() {
return (
<ConnectButton
client={client}
wallets={wallets}
theme="dark"
connectModal={{ size: "compact" }}
/>
);
}
Smart Contract Interaction
// src/components/NFTMint.tsx
import { useReadContract, useSendTransaction } from "thirdweb/react";
import { getContract, prepareContractCall } from "thirdweb";
import { ethereum } from "thirdweb/chains";
const nftContract = getContract({
client,
chain: ethereum,
address: "0x...",
});
export function NFTMint() {
// Read contract data
const { data: totalSupply } = useReadContract({
contract: nftContract,
method: "function totalSupply() view returns (uint256)",
});
const { data: price } = useReadContract({
contract: nftContract,
method: "function mintPrice() view returns (uint256)",
});
// Write transaction
const { mutate: sendTx, isPending } = useSendTransaction();
function handleMint() {
const tx = prepareContractCall({
contract: nftContract,
method: "function mint(uint256 quantity)",
params: [1n],
value: price,
});
sendTx(tx);
}
return (
<div>
<p>Minted: {totalSupply?.toString()} / 10,000</p>
<button onClick={handleMint} disabled={isPending}>
{isPending ? "Minting..." : `Mint (${formatEther(price || 0n)} ETH)`}
</button>
</div>
);
}
Deploy Contracts (No Solidity Required)
// scripts/deploy.ts — Deploy pre-built contracts
import { deployPublishedContract } from "thirdweb/deploys";
// Deploy ERC-721 NFT collection
const nftAddress = await deployPublishedContract({
client,
chain: ethereum,
account: wallet,
contractId: "NFTCollection",
contractParams: {
name: "My Collection",
symbol: "MC",
royaltyBps: 500n, // 5% royalties
royaltyRecipient: wallet.address,
},
});
// Deploy ERC-20 token
const tokenAddress = await deployPublishedContract({
client,
chain: ethereum,
account: wallet,
contractId: "TokenERC20",
contractParams: {
name: "My Token",
symbol: "MTK",
initialSupply: parseEther("1000000"),
},
});
// Deploy marketplace
const marketplaceAddress = await deployPublishedContract({
client,
chain: ethereum,
account: wallet,
contractId: "Marketplace",
contractParams: { platformFeeBps: 250n }, // 2.5% fee
});
Engine (Backend API)
// thirdweb Engine — managed backend for web3
// Self-hosted or cloud: handles wallets, transactions, webhooks
// Mint NFT via REST API (no frontend wallet needed)
const response = await fetch(`${ENGINE_URL}/contract/${chain}/${address}/erc721/mint-to`, {
method: "POST",
headers: {
Authorization: `Bearer ${ENGINE_ACCESS_TOKEN}`,
"Content-Type": "application/json",
"x-backend-wallet-address": BACKEND_WALLET,
},
body: JSON.stringify({
receiver: userAddress,
metadata: { name: "NFT #1", image: "ipfs://...", attributes: [] },
}),
});
Installation
npx thirdweb create app # Scaffold new app
npm install thirdweb # Add to existing project
npx thirdweb deploy # Deploy custom contracts
npx thirdweb publish # Publish to thirdweb registry
Best Practices
- In-app wallets for onboarding — Use email/social login wallets; users don't need MetaMask to start
- Pre-built contracts — Deploy ERC-20, ERC-721, ERC-1155, marketplace without writing Solidity
- React hooks —
useReadContractfor reads,useSendTransactionfor writes; type-safe from ABI - Engine for backends — Use thirdweb Engine for server-side minting, gasless transactions, and webhooks
- Multi-chain — Same code works across Ethereum, Polygon, Base, Arbitrum, Solana — just change the chain
- Pay for onramps — Integrate fiat-to-crypto payments; users buy with credit card, receive tokens
- IPFS storage — Use thirdweb Storage for decentralized file hosting (NFT metadata, images)
- Account abstraction — Enable gasless transactions with ERC-4337; sponsor gas for better UX
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zoho
Integrate and automate Zoho products. Use when a user asks to work with Zoho CRM, Zoho Books, Zoho Desk, Zoho Projects, Zoho Mail, or Zoho Creator, build custom integrations via Zoho APIs, automate workflows with Deluge scripting, sync data between Zoho apps and external systems, manage leads and deals, automate invoicing, build custom Zoho Creator apps, set up webhooks, or manage Zoho organization settings. Covers Zoho CRM, Books, Desk, Projects, Creator, and cross-product integrations.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> zipkin
Deploy and configure Zipkin for distributed tracing and request flow visualization. Use when a user needs to set up trace collection, instrument Java/Spring or other services with Zipkin, analyze service dependencies, or configure storage backends for trace data.