diff --git a/apps/portal/src/app/Header.tsx b/apps/portal/src/app/Header.tsx
index a7ad861a7a1..6d751a2d46b 100644
--- a/apps/portal/src/app/Header.tsx
+++ b/apps/portal/src/app/Header.tsx
@@ -47,6 +47,10 @@ const links = [
href: "/tokens",
name: "Tokens",
},
+ {
+ href: "/insight",
+ name: "Insight",
+ },
];
const toolLinks = [
diff --git a/apps/portal/src/app/contracts/faqs/page.mdx b/apps/portal/src/app/contracts/faqs/page.mdx
new file mode 100644
index 00000000000..300dac41ec1
--- /dev/null
+++ b/apps/portal/src/app/contracts/faqs/page.mdx
@@ -0,0 +1,40 @@
+import { Details, createMetadata } from "@doc";
+
+export const metadata = createMetadata({
+ title: "Contracts FAQs | thirdweb Documentation",
+ description:
+ "Frequently asked questions about thirdweb's contracts, including deployment, compatibility, and security.",
+ image: {
+ title: "Contracts FAQs",
+ icon: "contracts",
+ },
+});
+
+# Contracts FAQs
+
+
+Yes, thirdweb’s contract dashboard, deployment tools, and SDKs / APIs are compatible with non-thirdweb contracts.
+
+You can use thirdweb's deploy tool to deploy any contract that has not been deployed to any compatible EVM chain.
+
+For any already deployed contracts, you can use the thirdweb dashboard to import them and manage
+
+
+
+
+Yes, thirdweb pre-built contracts are audited by third-party security firms. You can see the attached
+audit reports for each contract linked on the contract page on Explore.
+
+
+
+Pack contracts were officially deprecated after the Pectra release from Ethereum. The pack contract implementation is incompatible with the Pectra update, which introduced breaking changes to the Ethereum protocol. As a result, support for pack contracts has been removed from thirdweb's deployment tools to ensure compatibility and security.
+
+If you need similar functionality, consider using:
+- **Edition Drop contracts** for distributing multiple quantities of NFTs
+- **Marketplace contracts** for trading and bundle functionality
+- **Custom smart contracts** built with our modular contract framework
+
+For existing pack contracts, they will continue to function on-chain, but new deployments are no longer supported.
+
+
+
diff --git a/apps/portal/src/app/contracts/modular-contracts/page.mdx b/apps/portal/src/app/contracts/modular-contracts/page.mdx
new file mode 100644
index 00000000000..a5ef8d618cb
--- /dev/null
+++ b/apps/portal/src/app/contracts/modular-contracts/page.mdx
@@ -0,0 +1,42 @@
+import { OpenSourceCard, Details, createMetadata } from "@doc";
+
+export const metadata = createMetadata({
+ title: "Modular Contracts | thirdweb Documentation",
+ description:
+ "Build custom smart contracts with thirdweb Modular Contracts. Add features like royalties, permissions, and drops using prebuilt, audited modules.",
+ image: {
+ title: "Modular Contracts",
+ icon: "contracts",
+ },
+});
+
+# Modular Contracts
+
+Modular contracts is an open source framework that enables the creation of highly customizable and upgradeable smart contracts. Modular contracts is designed to encompass a broad number of use cases without compromising on the ease and security of creating smart contracts with thirdweb.
+
+Modular contracts are composed of two components:
+
+- Core Contract: smart contracts that serve as the foundation of the modular contract
+- Module Contract: smart contracts that are installed on top of the core contract
+
+You can think of Modular Contracts like building bricks. Pick a core, install modules, and swap them out to enable different functionality.
+
+
+
+### Modular Contracts FAQ
+
+
+Modular Contracts is no longer actively maintained with dedicated engineering resources from thirdweb. However, we are happy to answer questions about the framework and provide support to existing modular contract users.
+
+
+
+Modular contracts pattern is useful in the context of sharing core or modular contracts with other teams / developers while giving them control over the contract.
+It is useful for creating a contract where you need to upgrade the core contract by adding new functionality through modules.
+
+
+### Additional Resources
+
+- [Modular Contracts Repository](https://github.com/thirdweb-dev/modular-contracts).
+- [Modular Contracts Design Documentation](https://github.com/thirdweb-dev/modular-contracts/blob/dev/design-document.md)
+- [Modular Contracts 101 | Build Upgradeable Smart Contracts Like Lego Blocks](https://www.youtube.com/watch?v=4YE0WljSpiQ&t=9s)
+- [Modular Contracts SDK: Build Core & Modules from Scratch (Advanced Guide)](https://www.youtube.com/watch?v=ZoOk41y4f_k&t=29s)
diff --git a/apps/portal/src/app/contracts/sidebar.tsx b/apps/portal/src/app/contracts/sidebar.tsx
index 56444705ad1..26e7594e722 100644
--- a/apps/portal/src/app/contracts/sidebar.tsx
+++ b/apps/portal/src/app/contracts/sidebar.tsx
@@ -1,4 +1,4 @@
-import { ExternalLinkIcon, ZapIcon } from "lucide-react";
+import { CodeIcon, ZapIcon } from "lucide-react";
import type { SideBar } from "@/components/Layouts/DocLayout";
import {
DotNetIcon,
@@ -18,11 +18,6 @@ export const sidebar: SideBar = {
name: "Get Started",
icon: ,
},
- {
- href: "https://playground.thirdweb.com/",
- icon: ,
- name: "Playground",
- },
{ separator: true },
{
isCollapsible: false,
@@ -47,21 +42,6 @@ export const sidebar: SideBar = {
href: `${slug}/deploy`,
name: "Deploy Contracts",
},
- /**
- * TODO
- {
- href: `${slug}/encode`,
- name: "Encode Data",
- },
- {
- href: `${slug}/decode`,
- name: "Decode Data",
- },
- {
- href: `${slug}/fetch-abis`,
- name: "Fetch ABIs",
- },
- */
],
name: "Guides",
},
@@ -70,17 +50,22 @@ export const sidebar: SideBar = {
isCollapsible: false,
links: [
{
- href: "/references/typescript/v5/functions#transactions",
+ href: "https://api.thirdweb.com/reference#tag/contracts",
+ icon: ,
+ name: "HTTP API",
+ },
+ {
+ href: "/references/typescript/v5/functions#contract",
icon: ,
name: "TypeScript",
},
{
- href: "/references/typescript/v5/hooks#transactions",
+ href: "/references/typescript/v5/functions#contract",
icon: ,
name: "React",
},
{
- href: "/references/typescript/v5/hooks#transactions",
+ href: "/references/typescript/v5/functions#contract",
icon: ,
name: "React Native",
},
@@ -102,5 +87,35 @@ export const sidebar: SideBar = {
],
name: "API References",
},
+ { separator: true },
+ {
+ isCollapsible: false,
+ links: [
+ {
+ href: `${slug}/security`,
+ name: "Security",
+ },
+ {
+ href: `${slug}/troubleshoot`,
+ name: "Troubleshoot",
+ },
+ {
+ href: `${slug}/faqs`,
+ name: "FAQ",
+ },
+ ],
+ name: "Resources",
+ },
+ { separator: true },
+ {
+ isCollapsible: true,
+ links: [
+ {
+ href: `${slug}/modular-contracts`,
+ name: "Modular Contracts",
+ },
+ ],
+ name: "Archive",
+ },
],
};
diff --git a/apps/portal/src/app/contracts/troubleshoot/page.mdx b/apps/portal/src/app/contracts/troubleshoot/page.mdx
new file mode 100644
index 00000000000..4d1f6f0dc9e
--- /dev/null
+++ b/apps/portal/src/app/contracts/troubleshoot/page.mdx
@@ -0,0 +1,18 @@
+import { Details } from "@doc";
+
+export const metadata = {
+ title: "Troubleshooting Guides",
+ description: "Guides to help you troubleshoot common issues with thirdweb contracts.",
+};
+
+
+# Contracts Troubleshooting Guides
+
+
+Yes, thirdweb contract dashboard, deployment tools, and SDKs / APIs are compatible with non-thirdweb contracts.
+
+You can use thirdweb's deploy tool to deploy any contract that has not been deployed to any compatible EVM chain.
+
+For any already deployed contracts, you can use the thirdweb dashboard to import them and manage their functionality.
+
+
\ No newline at end of file
diff --git a/apps/portal/src/app/payments/faq/page.mdx b/apps/portal/src/app/payments/faq/page.mdx
index f648d93d6e1..349524ffc40 100644
--- a/apps/portal/src/app/payments/faq/page.mdx
+++ b/apps/portal/src/app/payments/faq/page.mdx
@@ -2,14 +2,28 @@ import { createMetadata, Details } from "@doc";
export const metadata = createMetadata({
image: {
- title: "thirdweb Payments - FAQs",
- icon: "thirdweb",
+ title: "Payments FAQs",
+ icon: "payments",
},
- title: "thirdweb Payments - FAQs - thirdweb",
- description: "thirdweb Payments - Frequently Asked Questions",
+ title: "Payments FAQs | thirdweb documentation",
+ description: "Explore FAQs around accepting crypto payments with thirdweb—covering payment links, checkout, webhooks, fiat onramps, and token compatibility.",
});
-# FAQs
+# Payments FAQs
+
+### General
+
+
+Payments is an asset router that combines thirdweb's own onchain infrastructure with existing bridging and swapping protocols to find the optimal route for any given transaction.
+This can include intents, native bridges, third party bridges, cross-chain messaging protocols, thirdweb's custom bridges, and more. All routes are monitored and planned continuously for
+health, price, and speed to guarantee the best path every time.
+
+
+
+Yes, Payments is designed to be agnostic to wallet infrastructure. You can use it with any wallet service.
+
+
+### Fees
thirdweb does not charge any fees for buy with fiat. Any fees on onramping are based on the onramp provider.
@@ -23,12 +37,12 @@ For buying with crypto or swap fees, thirdweb charges a 0.3% protocol fee. Devel
Network fees, also referred to as miner fees, are paid to the miner for processing crypto transactions and securing the respective network. These fees do not go to thirdweb.
-
-Payments is an asset router that combines thirdweb's own onchain infrastructure with existing bridging and swapping protocols to find the optimal route for any given transaction.
-This can include intents, native bridges, third party bridges, cross-chain messaging protocols, thirdweb's custom bridges, and more. All routes are monitored and planned continuously for
-health, price, and speed to guarantee the best path every time.
+
+Fiat payouts are not currently available.
+### Token & Region Support
+
Payments is able to support most token that meet the following criteria:
@@ -40,25 +54,6 @@ To request support for a token, please visit the Payments tab in your project da
Payments will automatically kick off the token route discovery process. Please check back the Payments modal after 20-40 minutes for the requested token.
-
-Yes, Payments is designed to be agnostic to wallet infrastructure. You can use it with any wallet service.
-
-
-
-Apple Pay and Google Pay are supported through the onramp providers depending on region. Coinbase, Stripe, and Transak currently support Apple Pay. Transak supports Google Pay.
-
-
-
-Onramp options all require minimal KYC. This is done to comply with local regulations and to ensure the safety of our users.
-Please note: onramping with Coinbase does not require KYC for a purchase below $500 with debit card.
-
-
-
-We currently require a $1 minimum purchase for both stablecoin and non-stablecoin purchases through Buy With Fiat.
-
-Our transaction maximum starts from $1500 per week for new users and can increase over time to $10,000 per week.
-
-
**Buy With Fiat** is available 160+ countries. The following countries are _UNSUPPORTED_:
@@ -87,6 +82,20 @@ Our transaction maximum starts from $1500 per week for new users and can increas
All United States are supported, excluding Hawaii.
+
+Payments can support any currency on our [supported chains](https://thirdweb.com/chainlist?service=pay).
+
+
+
+Apple Pay and Google Pay are supported through the onramp providers depending on region. Coinbase, Stripe, and Transak currently support Apple Pay. Transak supports Google Pay.
+
+
+
+We currently require a $1 minimum purchase for both stablecoin and non-stablecoin purchases through Buy With Fiat.
+
+Our transaction maximum starts from $1500 per week for new users and can increase over time to $10,000 per week.
+
+
We offer direct onramping **internationally** to the following tokens:
@@ -107,20 +116,20 @@ All other tokens will require an additional Buy With Crypto step.
\* Not available in New York or the EU.
-
-Users will be required to complete KYC verification for their first purchase using 'Buy with Fiat.' After that, no further KYC will be needed for future purchases on the same platform.
+
+Prices are set depending on the liquidity provider used to route your transaction.
-
-Payments can support any currency on our [supported chains](https://thirdweb.com/chainlist?service=pay).
-
+### KYC & Compliance
-
-Prices are set depending on the liquidity provider used to route your transaction.
+
+Onramp options all require minimal KYC. This is done to comply with local regulations and to ensure the safety of our users.
+Please note: onramping with Coinbase does not require KYC for a purchase below $500 with debit card.
-
-Fiat payouts are not currently available.
+
+Users will be required to complete KYC verification for their first purchase using 'Buy with Fiat.' After that, no further KYC will be needed for future purchases on the same platform.
+
diff --git a/apps/portal/src/app/tokens/assets/token_deployment.png b/apps/portal/src/app/tokens/assets/token_deployment.png
new file mode 100644
index 00000000000..1f4777f84d3
Binary files /dev/null and b/apps/portal/src/app/tokens/assets/token_deployment.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc1155/page.mdx b/apps/portal/src/app/tokens/deploy-erc1155/page.mdx
new file mode 100644
index 00000000000..91d7824558c
--- /dev/null
+++ b/apps/portal/src/app/tokens/deploy-erc1155/page.mdx
@@ -0,0 +1,16 @@
+import { Step, Steps, DocImage, createMetadata } from "@doc";
+import TokenDeployment from "../assets/token_deployment.png";
+
+export const metadata = createMetadata({
+ image: {
+ title: "Deploy an ERC-1155 token",
+ icon: "contracts",
+ },
+ title: "Deploy an ERC-1155 token | thirdweb Documentation",
+ description:
+ "Learn how to deploy an ERC-1155 token using thirdweb's dashboard or programmatically through the SDK.",
+});
+
+# Deploy an ERC-1155 token
+
+Ability to deploy ERC-1155 tokens is coming soon. If you are interested in this feature, please [reach out in our community Telegram](https://t.me/officialthirdweb) so we can notify you on release.
\ No newline at end of file
diff --git a/apps/portal/src/app/tokens/deploy-erc20/assets/configure_coin.png b/apps/portal/src/app/tokens/deploy-erc20/assets/configure_coin.png
new file mode 100644
index 00000000000..99a41f3aa62
Binary files /dev/null and b/apps/portal/src/app/tokens/deploy-erc20/assets/configure_coin.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc20/assets/distribute_coin.png b/apps/portal/src/app/tokens/deploy-erc20/assets/distribute_coin.png
new file mode 100644
index 00000000000..fe2d22e2764
Binary files /dev/null and b/apps/portal/src/app/tokens/deploy-erc20/assets/distribute_coin.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc20/page.mdx b/apps/portal/src/app/tokens/deploy-erc20/page.mdx
new file mode 100644
index 00000000000..93f1fc155c7
--- /dev/null
+++ b/apps/portal/src/app/tokens/deploy-erc20/page.mdx
@@ -0,0 +1,46 @@
+import { Step, Steps, DocImage, createMetadata } from "@doc";
+import TokenDeployment from "../assets/token_deployment.png";
+import ConfigureCoin from "./assets/configure_coin.png";
+import DistributeCoin from "./assets/distribute_coin.png";
+
+export const metadata = createMetadata({
+ image: {
+ title: "Deploy an ERC-20 token",
+ icon: "contracts",
+ },
+ title: "Deploy an ERC-20 token | thirdweb Documentation",
+ description:
+ "Learn how to deploy an ERC-20 token using thirdweb's dashboard or programmatically through the SDK.",
+});
+
+# Deploy an ERC-20 token
+
+Learn how to deploy an ERC-20 token using thirdweb's dashboard or programmatically through the SDK. This guide will walk you through the steps to create, configure, and deploy your own ERC-20 token.
+
+## Deploying through the dashboard
+
+
+
+ Go to the [thirdweb dashboard](https://thirdweb.com/) and create a new project or use an existing one.
+
+
+ Navigate to the Tokens section and select Create Coin
+
+
+
+ Determine a token name, symbol,and chain. You may also optionally set up an image or logo, social links, and a description for your token.
+
+
+
+ Determine the total supply of your token and how it will be distributed. Unless specified through the airdrop or sale options, the total supply will be minted on the deployer's wallet.
+
+
+
+ Confirm your configuration and select the "Launch" button to deploy your ERC-20 token to the blockchain.
+
+
+
+
+## Deploying programmatically
+
+Coming soon
\ No newline at end of file
diff --git a/apps/portal/src/app/tokens/deploy-erc721/assets/create_nft.png b/apps/portal/src/app/tokens/deploy-erc721/assets/create_nft.png
new file mode 100644
index 00000000000..b2b183d9457
Binary files /dev/null and b/apps/portal/src/app/tokens/deploy-erc721/assets/create_nft.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc721/assets/sale_recipients.png b/apps/portal/src/app/tokens/deploy-erc721/assets/sale_recipients.png
new file mode 100644
index 00000000000..37660fa1596
Binary files /dev/null and b/apps/portal/src/app/tokens/deploy-erc721/assets/sale_recipients.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc721/assets/upload_NFTs.png b/apps/portal/src/app/tokens/deploy-erc721/assets/upload_NFTs.png
new file mode 100644
index 00000000000..2c53c454984
Binary files /dev/null and b/apps/portal/src/app/tokens/deploy-erc721/assets/upload_NFTs.png differ
diff --git a/apps/portal/src/app/tokens/deploy-erc721/page.mdx b/apps/portal/src/app/tokens/deploy-erc721/page.mdx
new file mode 100644
index 00000000000..25ad56ff62c
--- /dev/null
+++ b/apps/portal/src/app/tokens/deploy-erc721/page.mdx
@@ -0,0 +1,57 @@
+import { Step, Steps, DocImage, createMetadata, Callout } from "@doc";
+import TokenDeployment from "../assets/token_deployment.png";
+import CreateNFT from "./assets/create_nft.png";
+import UploadNFTs from "./assets/upload_NFTs.png";
+import SaleRecipients from "./assets/sale_recipients.png";
+
+export const metadata = createMetadata({
+ image: {
+ title: "Deploy an ERC-721 token",
+ icon: "contracts",
+ },
+ title: "Deploy an ERC-721 token | thirdweb Documentation",
+ description:
+ "Learn how to deploy an ERC-721 token using thirdweb's dashboard or programmatically through the SDK.",
+});
+
+# Deploy an ERC-721 token
+
+Learn how to deploy an ERC-721 token using thirdweb's dashboard or programmatically through the SDK. This guide will walk you through the steps to create, configure, and deploy your own ERC-721 token.
+
+## Deploying through the dashboard
+
+
+
+ Navigate to the [thirdweb dashboard](https://thirdweb.com/) and create a new project or use an existing one.
+
+
+ Navigate to the Tokens section and select Create NFT Collection
+
+
+
+ Determine your NFT Collection's name, symbol, and chain. You may also optionally set up an image or logo, social links, and a description for your collection.
+
+ In this step, also determine the admin wallet address that will manage the collection. This address will have the ability to mint new NFTs, manage metadata, and perform other administrative tasks.
+
+
+
+ Upload your NFTs to the collection. You can upload images, videos, or other media files that represent your NFTs.
+ You can also set metadata for each NFT, including name, description, and attributes.
+
+
+
+ You can switch to "Create Multiple" to upload multiple NFTs at once. This is useful for bulk minting or creating a series of NFTs when you have a corresponding CSV or JSON file with metadata.
+
+
+
+ Input the wallet address that will receive the primary sale proceeds from the NFT collection. You can also set up secondary sale royalties, which will be paid to the specified address whenever the NFT is resold on marketplaces that support royalties.
+
+
+
+ Confirm your configuration and select the "Launch" button to deploy your ERC-721 token collection to the blockchain.
+
+
+
+## Deploying programmatically
+
+Coming soon
\ No newline at end of file
diff --git a/apps/portal/src/app/tokens/faq/page.mdx b/apps/portal/src/app/tokens/faq/page.mdx
index 6826ebfa152..a8299efd341 100644
--- a/apps/portal/src/app/tokens/faq/page.mdx
+++ b/apps/portal/src/app/tokens/faq/page.mdx
@@ -9,15 +9,14 @@ export const metadata = createMetadata({
},
});
-# Contracts FAQs
+# Tokens FAQs
-
-Pack contracts were officially deprecated after the Pectra release from Ethereum. The pack contract implementation is incompatible with the Pectra update, which introduced breaking changes to the Ethereum protocol. As a result, support for pack contracts has been removed from thirdweb's deployment tools to ensure compatibility and security.
+
+Tokens offers an improved experience to deploying tokens over previously deploying tokens through Explore.
-If you need similar functionality, consider using:
-- **Edition Drop contracts** for distributing multiple quantities of NFTs
-- **Marketplace contracts** for trading and bundle functionality
-- **Custom smart contracts** built with our modular contract framework
-
-For existing pack contracts, they will continue to function on-chain, but new deployments are no longer supported.
+Tokens has:
+- A more intuitive token creation UI
+- Ability to airdrop tokens directly through the token creation flow
+- Ability to create liquidity pools for your token (coming soon)
+- An included listing page to share your token to users for purchasing
\ No newline at end of file
diff --git a/apps/portal/src/app/tokens/list-tokens/page.mdx b/apps/portal/src/app/tokens/list-tokens/page.mdx
new file mode 100644
index 00000000000..e63f82a910f
--- /dev/null
+++ b/apps/portal/src/app/tokens/list-tokens/page.mdx
@@ -0,0 +1,3 @@
+# List Tokens
+
+Ability to list tokens is coming soon. If you are interested in this feature, please [reach out in our community Telegram](https://t.me/officialthirdweb) so we can notify you on release.
\ No newline at end of file
diff --git a/apps/portal/src/app/tokens/sidebar.tsx b/apps/portal/src/app/tokens/sidebar.tsx
index 44d45b17cfb..15df10750b1 100644
--- a/apps/portal/src/app/tokens/sidebar.tsx
+++ b/apps/portal/src/app/tokens/sidebar.tsx
@@ -18,7 +18,35 @@ export const sidebar: SideBar = {
icon: ,
},
{ separator: true },
- // explore
+ {
+ isCollapsible: false,
+ links: [
+ {
+ isCollapsible: true,
+ links: [
+ {
+ href: `${slug}/deploy-erc20`,
+ name: "Deploy ERC-20 Token",
+ },
+ {
+ href: `${slug}/deploy-erc721`,
+ name: "Deploy ERC-721 Token",
+ },
+ {
+ href: `${slug}/deploy-erc1155`,
+ name: "Deploy ERC-1155 Token",
+ },
+ ],
+ name: "Deploy Tokens",
+ },
+ {
+ href: `${slug}/list-tokens`,
+ name: "List Tokens",
+ },
+ ],
+ name: "Guides",
+ },
+
{
isCollapsible: false,
links: [
@@ -497,9 +525,15 @@ export const sidebar: SideBar = {
isCollapsible: false,
links: [
{
- href: "/contracts/faq",
- name: "FAQs",
+ href: `${slug}/faq`,
+ name: "FAQ",
},
+ ],
+ name: "Resources",
+ },
+ {
+ isCollapsible: true,
+ links: [
{
links: [
{
@@ -526,7 +560,7 @@ export const sidebar: SideBar = {
name: "Design Docs",
},
],
- name: "Resources",
+ name: "Archive",
},
],
name: "Tokens",
diff --git a/apps/portal/src/app/transactions/sidebar.tsx b/apps/portal/src/app/transactions/sidebar.tsx
index 333b4ecf9f6..2f240289ad1 100644
--- a/apps/portal/src/app/transactions/sidebar.tsx
+++ b/apps/portal/src/app/transactions/sidebar.tsx
@@ -13,7 +13,7 @@ export const sidebar: SideBar = {
icon: ,
},
{
- href: "https://playground.thirdweb.com/",
+ href: "https://playground.thirdweb.com/transactions/airdrop-tokens",
icon: ,
name: "Playground",
},
@@ -85,6 +85,29 @@ export const sidebar: SideBar = {
{
name: "Resources",
isCollapsible: false,
+ links: [
+ {
+ href: `/vault`,
+ name: "Vault",
+ },
+ {
+ href: `${transactionsSlug}/security`,
+ name: "Security",
+ },
+ {
+ href: `${transactionsSlug}/troubleshoot`,
+ name: "Troubleshoot",
+ },
+ {
+ href: `${transactionsSlug}/faqs`,
+ name: "FAQs",
+ },
+ ],
+ },
+ { separator: true },
+ {
+ name: "Archive",
+ isCollapsible: true,
links: [
{
href: `/engine/v3`,
@@ -94,10 +117,6 @@ export const sidebar: SideBar = {
href: `/engine/v2`,
name: "Engine v2",
},
- {
- href: `/vault`,
- name: "Vault",
- },
],
},
],
diff --git a/apps/portal/src/app/wallets/auth/page.mdx b/apps/portal/src/app/wallets/auth/page.mdx
index 715cbdd0337..7d80c1ea8df 100644
--- a/apps/portal/src/app/wallets/auth/page.mdx
+++ b/apps/portal/src/app/wallets/auth/page.mdx
@@ -20,9 +20,9 @@ export const metadata = createMetadata({
title: "Sign in with Ethereum",
icon: "wallets",
},
- title: "Sign in with Ethereum",
+ title: "Sign in with Ethereum | thirdweb Documentation",
description:
- "Sign in with Ethereum allows anyone to integrate passwordless web3-native authentication and authorization into their applications.",
+ "Add passwordless login with Sign in with Ethereum (SIWE). thirdweb makes it easy to integrate web3-native auth using any wallet, fully compatible with traditional backends.",
});
# Sign in with Ethereum
diff --git a/apps/portal/src/app/wallets/custom-auth/page.mdx b/apps/portal/src/app/wallets/custom-auth/page.mdx
index e2ab5f8c163..39a922e40c7 100644
--- a/apps/portal/src/app/wallets/custom-auth/page.mdx
+++ b/apps/portal/src/app/wallets/custom-auth/page.mdx
@@ -12,15 +12,15 @@ import EWCustomAuthdb2 from "./images/customauthdb2.png";
export const metadata = createMetadata({
image: {
- title: "Bring your own auth",
+ title: "Custom Authentication",
icon: "wallets",
},
- title: "Bring your own auth | thirdweb",
+ title: "Custom Authentication | thirdweb Documentation",
description:
- "Configure in-app wallets with OIDC standard, or a generic endpoint that lets you bring your own auth server",
+ "Bring your own auth with thirdweb to in-app, embedded, or ecosystem wallets. Connect wallets to users using OIDC JWTs or a custom auth endpoint for full flexibility and control.",
});
-# Bring your own auth
+# Custom Authentication
You can attach wallets to your existing users using the `jwt` and `auth_endpoint` strategies.
diff --git a/apps/portal/src/app/wallets/ecosystem/integrating-partners/page.mdx b/apps/portal/src/app/wallets/ecosystem/integrating-partners/page.mdx
index d31c68a35e9..a51cf8105fb 100644
--- a/apps/portal/src/app/wallets/ecosystem/integrating-partners/page.mdx
+++ b/apps/portal/src/app/wallets/ecosystem/integrating-partners/page.mdx
@@ -9,7 +9,7 @@ export const metadata = createMetadata({
title: "thirdweb Ecosystem Wallet",
icon: "wallets",
},
- title: "Integrating Partners - Ecosystem Wallet | thirdweb",
+ title: "Integrating Partners using Ecosystem Wallets | thirdweb Documentation",
description: "Ecosystem Wallet - Own your own web3 identity stack",
});
diff --git a/apps/portal/src/app/wallets/ecosystem/set-up/page.mdx b/apps/portal/src/app/wallets/ecosystem/set-up/page.mdx
index 73e6a6cd01d..617713d1ec5 100644
--- a/apps/portal/src/app/wallets/ecosystem/set-up/page.mdx
+++ b/apps/portal/src/app/wallets/ecosystem/set-up/page.mdx
@@ -12,8 +12,8 @@ export const metadata = createMetadata({
title: "thirdweb Ecosystem Wallet",
icon: "wallets",
},
- title: "Ecosystem Wallet",
- description: "Ecosystem Wallet - Own your own web3 identity stack",
+ title: "Ecosystem Wallet Setup | thirdweb Documentation",
+ description: "Build a connected wallet experience across apps and games. With thirdweb Ecosystem Wallets, you can manage partners, access controls, and gas sponsorship in one place.",
});
# Ecosystem Wallet
diff --git a/apps/portal/src/app/wallets/export-private-key/page.mdx b/apps/portal/src/app/wallets/export-private-key/page.mdx
index db5c687e1c3..3965f653dd1 100644
--- a/apps/portal/src/app/wallets/export-private-key/page.mdx
+++ b/apps/portal/src/app/wallets/export-private-key/page.mdx
@@ -11,7 +11,7 @@ export const metadata = createMetadata({
},
title: "Export private key | thirdweb",
description:
- "Learn how to export private keys for thirdweb wallets",
+ "Export the private keys of thirdweb wallets securely. Learn how to retrieve and manage wallet keys for backup, migration, or other use cases.",
});
# Export Private Key
@@ -21,7 +21,6 @@ Learn how to export the private key for a thirdweb wallet using the Connect moda
It's not possible to export a user's private key programmatically. Our system is designed to be non-custodial and only users can access their full keys.
-
diff --git a/apps/portal/src/app/wallets/external-wallets/page.mdx b/apps/portal/src/app/wallets/external-wallets/page.mdx
index 6fb5e1a7eeb..ddeb48c4cba 100644
--- a/apps/portal/src/app/wallets/external-wallets/page.mdx
+++ b/apps/portal/src/app/wallets/external-wallets/page.mdx
@@ -7,10 +7,10 @@ import { AllSupportedWallets } from "@/components/others/AllSupportedWallets";
export const metadata = createMetadata({
image: {
title: "External Wallets",
- icon: "typescript",
+ icon: "wallets",
},
- title: "External Wallets | thirdweb",
- description: "List of all the supported external wallets in thirdweb.",
+ title: "External Wallets | thirdweb Documentation",
+ description: "Connect 500+ wallets with thirdweb—including all EIP-6963 compatible wallets with native UI components and customizable APIs. Native support for top wallets with simple integration.",
});
# External Wallets
diff --git a/apps/portal/src/app/wallets/faq/page.mdx b/apps/portal/src/app/wallets/faq/page.mdx
index d7de9dc11f3..81a5f01f8b7 100644
--- a/apps/portal/src/app/wallets/faq/page.mdx
+++ b/apps/portal/src/app/wallets/faq/page.mdx
@@ -1,62 +1,66 @@
-import { createMetadata } from "@doc";
+import { createMetadata, Details } from "@doc";
export const metadata = createMetadata({
- title: "FAQ for thirdweb Wallet",
- description: "Frequently asked questions about thirdweb's Wallet",
+ title: "Wallets FAQs | thirdweb documentation",
+ description: "Get answers to common questions about thirdweb Wallets, including embedded wallets, smart account setup, MPC, passkeys, and multi-chain support.",
image: {
- title: "FAQs for thirdweb Wallet",
+ title: "Wallets FAQs",
icon: "wallets",
},
});
-# General FAQs
+# Wallets FAQ
-### Which blockchains are supported?
+## General
-Our thirdweb In-App Wallet is fully EVM compatible and supports all EVM chains.
+
+ View all the supported chains for wallets on [thirdweb chainlist](https://thirdweb.com/chainlist?service=connect-sdk).
+
-### Do I need to build separate flows for in-app wallets and external wallets (e.g. MetaMask)?
+
+ No, since our SDK provides the wallet signer, you can build a unified experience with the same code to handle how all your users' wallets interact with signatures and smart contracts.
-No! Since our SDK provides the wallet `signer`, you can build a unified experience with the same code to handle how all your users' wallets interact with signatures and smart contracts.
+ However, you will need to provide a separate flow to create in-app wallets as you would with any wallet provider (WalletConnect, Coinbase Wallet, etc.).
+
-However, you will need to provide a separate flow to create in-app wallets as you would with any wallet provider (WalletConnect, Coinbase Wallet, etc.).
+
+ Make sure that you are developing on a [secure origin](https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features/), which includes localhost and any site on https://. thirdweb uses cryptography libraries that are unsupported on http://.
-### How do I troubleshoot unexpected console error messages?
+ If you continue to run into a console error, please [contact us](https://thirdweb.com/support) with more details.
+
-Make sure that you are developing on a [secure origin](https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features/), which includes `localhost` and any site on `https://`. thirdweb uses cryptography libraries that are unsupported on `http://`.
+
+ For a full list of supported authenticated options, we recommending searching the [playground](https://playground.thirdweb.com/connect/sign-in/button). Wallets also supports custom authentication if you want to integrate thirdweb into your own auth system.
+
-If you continue to run into a console error, please contact us with more details.
+
+ Yes, you can easily use account abstraction with in-app wallets to enable sponsored (gasless) transactions. Learn more in our [sponsor gas guide](/transactions/sponsor).
+
-### What login options does thirdweb support?
+
+ Thirdweb wallets can be used as a signer to a smart contract account (account abstraction), but it can also be used as a standalone EOA.
+
-We support a lot of authentication options out of the box. For a full list, check out the [playground](https://playground.thirdweb.com/connect/sign-in/button). We also support custom authentication if you want to integrate thirdweb into your own auth system.
+
+ In the event that thirdweb ceases to exist, we have committed to keeping our in-app wallet service running for a period of at least 12 months after the shutdown announcement. During this time users will be able to access their wallet and transfer their assets out, or export their private key which they can then import into a different client.
+
-### Do you support gasless transactions?
+
+ Currently, users will rely on the built-in recovery of their auth method. Refer to the [How to recover your Google Account or Gmail](https://support.google.com/accounts/answer/7682439?hl=en) article as an example for social and email auths.
-Yes, you can easily use account abstraction with in-app wallets to enable sponsored (gasless) transactions.
+ Users can also link their account to a different auth method (e.g. email, phone, or social). All linked methods will be able to be used to access their accounts, providing an alternate recovery method in the case where one is lost.
+
-### Does thirdweb Wallets product use smart contract wallets?
+
+Yes, you can change your Ecosystem Wallet name and icon. However, you cannot change the Ecosystem Wallet slug.
+
-Thirdweb wallets can be used as a signer to a smart contract account (account abstraction), but it can also be used as a standalone EOA.
+## Security
-### What happens if thirdweb ceases to exist? Will my users be able to access their wallets?
-
-In the event that thirdweb ceases to exist, we have committed to keeping our in-app wallet service running for a period of at least 12 months after the shutdown announcement. During this time users will be able to access their wallet and transfer their assets out, or export their private key which they can then import into a different client.
-
-### How will my users recover their accounts in case they lose access to their auth?
-
-Currently, users will rely on the built-in recovery of their auth method. Refer to the [How to recover your Google Account or Gmail](https://support.google.com/accounts/answer/7682439?hl=en) article as an example for social and email auths.
-
-Users can also link their account to a different auth method (e.g. email, phone, or social). All linked methods will be able to be used to access their accounts, providing an alternate recovery method in the case where one is lost.
-
-
-# Security FAQs
-
-### How is the private key managed?
-
-You can learn more about the architecture of how thirdweb wallets are created and stored [here](/wallets/security).
-
-### What happens if thirdweb or my database gets breached?
-
-Using enclave, your customers' assets are safe even if thirdweb or you are compromised. This is because the attacker will only be able to access the encrypted keys, and that is not enough to reconstruct the private key.
+
+ Learn more about the architecture of how thirdweb wallets are created and stored [in the security docs.](/wallets/security).
+
+
+ Using enclave, your customers' assets are safe even if thirdweb or you are compromised. This is because the attacker will only be able to access the encrypted keys, and that is not enough to reconstruct the private key.
+
diff --git a/apps/portal/src/app/wallets/get-users/page.mdx b/apps/portal/src/app/wallets/get-users/page.mdx
index 4be4b012a7c..43106125e27 100644
--- a/apps/portal/src/app/wallets/get-users/page.mdx
+++ b/apps/portal/src/app/wallets/get-users/page.mdx
@@ -8,8 +8,8 @@ export const metadata = createMetadata({
title: "Get Users",
icon: "wallets",
},
- title: "Get Users",
- description: "Learn how to fetch in-app wallet users for your application.",
+ title: "Get Users | thirdweb Documentation",
+ description: "List and fetch users from your in-app or ecosystem wallet. thirdweb makes it easy to access wallet addresses, emails, phone numbers, and more—directly from your backend.",
});
# Fetch Users
diff --git a/apps/portal/src/app/wallets/link-profiles/page.mdx b/apps/portal/src/app/wallets/link-profiles/page.mdx
index ccd55d7a778..0599c9eccb0 100644
--- a/apps/portal/src/app/wallets/link-profiles/page.mdx
+++ b/apps/portal/src/app/wallets/link-profiles/page.mdx
@@ -13,9 +13,9 @@ export const metadata = createMetadata({
title: "Linking Multiple Identities",
icon: "wallets",
},
- title: "Linking Multiple Identities",
+ title: "Linking Multiple Identities | thirdweb Documentation",
description:
- "Learn how to associate multiple social profiles with a single wallet address.",
+ "Link multiple social identities—like email, phone, or social logins—to a single wallet address. With thirdweb, developers can programmatically connect identities at any point in the user journey.",
});
# Linking Profiles
diff --git a/apps/portal/src/app/wallets/pregenerate-wallets/page.mdx b/apps/portal/src/app/wallets/pregenerate-wallets/page.mdx
index 531d000b852..8e7be0acaaf 100644
--- a/apps/portal/src/app/wallets/pregenerate-wallets/page.mdx
+++ b/apps/portal/src/app/wallets/pregenerate-wallets/page.mdx
@@ -7,7 +7,7 @@ export const metadata = createMetadata({
icon: "wallets",
},
title: "Pregenerate Wallets | thirdweb",
- description: "Learn how to pregenerate wallets for improved user onboarding",
+ description: "Create wallets before users sign up with thirdweb’s wallet pregeneration. Pre-fund with tokens, NFTs, or game assets to enable smooth onboarding and asset claiming.",
});
# Pregenerate Wallets
diff --git a/apps/portal/src/app/wallets/security/page.mdx b/apps/portal/src/app/wallets/security/page.mdx
index 004b9e98f8c..96194a76b46 100644
--- a/apps/portal/src/app/wallets/security/page.mdx
+++ b/apps/portal/src/app/wallets/security/page.mdx
@@ -5,15 +5,15 @@ import EcosystemScoped from "./assets/ecosystem-scoped.svg";
export const metadata = createMetadata({
image: {
- title: "In App wallet and Ecosystem Security",
+ title: "Wallet Security",
icon: "wallets",
},
- title: "thirdweb Wallet Security",
+ title: "Wallet Security & Architecture | thirdweb Documentation",
description:
"Learn how thirdweb protects your user's private keys across applications using nitro Enclaves",
});
-# thirdweb Wallet Security
+# Wallet Security & Architecture
## Wallet Creation
@@ -32,8 +32,6 @@ When a user signs into an application using their email or social logins for the
- The wallet's private key never exists in an unencrypted form outside of the enclave.
- All sensitive operations, such as transaction signing, occur within the enclave, ensuring the wallet's security.
-## Wallet Usage
-
### General Usage
- When users interact with their wallet via the enclave, all communications are encrypted and only the legitimate user can access their wallet.
@@ -44,9 +42,6 @@ When a user signs into an application using their email or social logins for the
Ecosystem wallets are controlled by the ecosystem owner. Ecosystem owners are able to specify usage policies for their partners and developers which restricts what they can do with the wallet. Unlike the shamir secret sharing model, the enclave wallet model ensures that the private key is never reconstructed on the client. This ensures no-one can extract the private key from the client, including other developers in the ecosystem. Moreover, it also means that partners and developers must submit the request to the enclave which would be able to verify the request and block requests that are out of scope or denied by the ecosystem owner.
-## Scopes
-
-
### In App Wallets
In-App Wallets are scoped to applications per Client ID. If users use the same email to sign in to a different application using In-App Wallets, the application will manage an entirely different wallet.
diff --git a/apps/portal/src/app/wallets/server/page.mdx b/apps/portal/src/app/wallets/server/page.mdx
index edcd2a550ba..8d9a3a267d5 100644
--- a/apps/portal/src/app/wallets/server/page.mdx
+++ b/apps/portal/src/app/wallets/server/page.mdx
@@ -7,9 +7,8 @@ export const metadata = createMetadata({
title: "Server Wallets",
icon: "wallets",
},
- title: "Server Wallets",
- description:
- "Server wallets are wallets that are managed by your own application, like a treasury wallet or admin wallet. They are used to send transactions from the server.",
+ title: "Server Wallets | thirdweb Documentation",
+ description: "Create server wallets or developer wallets to let your application manage and sign transactions programmatically. Use them for admin actions, treasury management, or sending transactions directly from your backend.",
});
# Server Wallets
diff --git a/apps/portal/src/app/wallets/sidebar.tsx b/apps/portal/src/app/wallets/sidebar.tsx
index c092ca72bbb..65ae9bc1836 100644
--- a/apps/portal/src/app/wallets/sidebar.tsx
+++ b/apps/portal/src/app/wallets/sidebar.tsx
@@ -1,4 +1,4 @@
-import { ExternalLinkIcon, ZapIcon } from "lucide-react";
+import { CodeIcon, ExternalLinkIcon, ZapIcon } from "lucide-react";
import type { SideBar } from "@/components/Layouts/DocLayout";
import { DotNetIcon, ReactIcon, TypeScriptIcon, UnityIcon } from "@/icons";
import { UnrealEngineIcon } from "../../icons/sdks/UnrealEngineIcon";
@@ -72,6 +72,11 @@ export const sidebar: SideBar = {
{
isCollapsible: false,
links: [
+ {
+ href: "https://api.thirdweb.com/reference#tag/wallets",
+ icon: ,
+ name: "HTTP API",
+ },
{
href: "/references/typescript/v5",
icon: ,
diff --git a/apps/portal/src/app/wallets/sponsor-gas/page.mdx b/apps/portal/src/app/wallets/sponsor-gas/page.mdx
index ab607b6a670..35d89531e3f 100644
--- a/apps/portal/src/app/wallets/sponsor-gas/page.mdx
+++ b/apps/portal/src/app/wallets/sponsor-gas/page.mdx
@@ -13,12 +13,12 @@ import { TypeScriptIcon, DotNetIcon } from "@/icons";
export const metadata = createMetadata({
image: {
- title: "Sponsor gas",
+ title: "Sponsor Gas",
icon: "wallets",
},
- title: "Sponsor Gas | thirdweb",
+ title: "Sponsor Gas | thirdweb Documentation",
description:
- "Sponsor Gas for all users of your application.",
+ "Enable gasless transactions using EIP-7702 or ERC-4337. thirdweb lets you sponsor gas fees so users can sign and send transactions with zero friction.",
});
# Sponsor gas
diff --git a/apps/portal/src/app/wallets/users/page.mdx b/apps/portal/src/app/wallets/users/page.mdx
index e0c32494be4..36a303bf9fe 100644
--- a/apps/portal/src/app/wallets/users/page.mdx
+++ b/apps/portal/src/app/wallets/users/page.mdx
@@ -1,4 +1,4 @@
-import { ArticleIconCard, AuthList, Callout, DocImage, Grid, Stack } from "@doc";
+import { ArticleIconCard, AuthList, Callout, DocImage, Grid, Stack, createMetadata } from "@doc";
import { UserIcon } from 'lucide-react'
import {
ReactIcon,
@@ -13,6 +13,16 @@ import {
import EcosystemSocialConfig from './social-config.png'
import { AuthMethodsTabs } from "@/components/Document/AuthMethodsTabs"
+export const metadata = createMetadata({
+ title: "User Wallets | thirdweb Documentation",
+ description:
+ "Create secure, non-custodial embedded wallets with social login, email, SMS, passkeys, and more using thirdweb. Instantly onboard users with seamless authentication and automatically generate wallets behind the scenes—no seed phrases required.",
+ image: {
+ title: "User Wallets",
+ icon: "wallets",
+ },
+});
+
# User Wallets
thirdweb supports creating wallets with various authentication methods: social logins, email, SMS, passkeys, and more. For every user, thirdweb generates a [non-custodial wallet](/wallets/security) behind the scenes.