diff --git a/apps/portal/src/app/connect/pay/get-started/page.mdx b/apps/portal/src/app/connect/pay/get-started/page.mdx
index c631050fb09..8d597f85ff8 100644
--- a/apps/portal/src/app/connect/pay/get-started/page.mdx
+++ b/apps/portal/src/app/connect/pay/get-started/page.mdx
@@ -46,7 +46,7 @@ Log in to [the thirdweb dashboard](https://thirdweb.com/team). Navigate to the *
## Option 1: ConnectButton
-Pay is available by default with our `ConnectButton` component. When users log in with Connect, they'll be able to onramp and purchase crypto directly from the logged in Connect interface. You can read more about `ConnectButton` [in this guide](/connect/sign-in/ConnectButton).
+Universal Bridge is available by default with our `ConnectButton` component. When users log in with Connect, they'll be able to onramp and purchase crypto directly from the logged in Connect interface. You can read more about `ConnectButton` [in this guide](/connect/sign-in/ConnectButton).
```tsx
import { ThirdwebProvider, ConnectButton } from "thirdweb/react";
diff --git a/apps/portal/src/app/connect/pay/testing-pay/page.mdx b/apps/portal/src/app/connect/pay/testing-pay/page.mdx
index 1d9dede41b3..1d88ab73481 100644
--- a/apps/portal/src/app/connect/pay/testing-pay/page.mdx
+++ b/apps/portal/src/app/connect/pay/testing-pay/page.mdx
@@ -3,7 +3,7 @@ import { createMetadata, Callout } from "@doc";
export const metadata = createMetadata({
image: {
- title: "thirdweb Pay - Test Mode",
+ title: "thirdweb Universal Bridge - Test Mode",
icon: "thirdweb",
},
title: "Enable Test Mode for Universal bridge — thirdweb docs",
diff --git a/apps/portal/src/app/connect/sidebar.tsx b/apps/portal/src/app/connect/sidebar.tsx
index ad6bacd3ef7..d15262cc5c1 100644
--- a/apps/portal/src/app/connect/sidebar.tsx
+++ b/apps/portal/src/app/connect/sidebar.tsx
@@ -75,6 +75,10 @@ export const sidebar: SideBar = {
name: "Guest Mode",
href: `${walletSlug}/sign-in-methods/guest`,
},
+ {
+ name: "FAQ",
+ href: `${walletSlug}/in-app-wallet/faq`,
+ },
{
name: "Custom Authentication",
links: [
@@ -130,6 +134,10 @@ export const sidebar: SideBar = {
name: "Register with WalletConnect",
href: `${walletSlug}/ecosystem/register-walletconnect`,
},
+ {
+ name: "FAQ",
+ href: `${walletSlug}/ecosystem/faq`,
+ },
],
},
//Account abstraction
diff --git a/apps/portal/src/app/connect/wallet/ecosystem/faq/page.mdx b/apps/portal/src/app/connect/wallet/ecosystem/faq/page.mdx
new file mode 100644
index 00000000000..c94bd9c47db
--- /dev/null
+++ b/apps/portal/src/app/connect/wallet/ecosystem/faq/page.mdx
@@ -0,0 +1,58 @@
+import { createMetadata } from "@doc";
+
+export const metadata = createMetadata({
+ title: "Ecosystem Wallet FAQs",
+ description: "Frequently asked questions about thirdweb's Ecosystem Wallet",
+ image: {
+ title: "FAQs for thirdweb Ecosystem Wallet",
+ icon: "wallets",
+ },
+});
+
+# Ecosystem Wallet FAQs
+
+### What is an Ecosystem Wallet?
+
+An ecosystem wallet is a managed in-app wallet service that allows platforms to create a branded wallet and login system, manage their partners, and allow any number of partners to spin up in-app wallets. End users that create in-app wallets through your partner applications (either with email, phone number, passkey, or socials) will receive **one account and wallet address** that they can access across the entire ecosystem.
+
+### How do Ecosystem Wallets work?
+
+Ecosystem Wallets are a fully managed and containerized in-app wallet backend service that is white labeled to your application. By giving you access to this backend service, you can power any application with in-app wallets just like thirdweb does for over 70,000 developers.
+
+### What is an Ecosystem Partner?
+
+Ecosystem partners are games or applications that you have permissioned to spin up in-app wallets underneath your brand. They will have access to the same account (funds, assets, etc.) for any end users that 1) use your branded login system or 2) log in with your wallet.
+
+You can manage ecosystem partners in the Permissions tab of your Ecosystem Wallet dashboard.
+
+### Which login providers can display my Ecosystem Wallet?
+
+thirdweb Connect, with WalletConnect and any wagmi- or viem-based login providers coming soon.
+
+### How can Partners integrate my Ecosystem Wallet?
+
+Partners can integrate your Ecosystem Wallet in three different ways:
+
+**Login System**
+
+Partners can install thirdweb SDK and use the Partner ID you created for them to display your branded sign in flow. All login options in this sign in flow will create an in-app wallet.
+
+**Branded Wallet Connector**
+
+Partners can add your wallet as a wallet connector option in their existing sign in flow on any domains they've whitelisted by calling the follow endpoint from their application.
+
+**WalletConnect (Coming Soon)**
+
+Partners using WalletConnect will automatically display your wallet as a WalletConnect option on any domains they've whitelisted.
+
+### What is the difference between Anyone and Allowlist scopes for Ecosystem Wallet?
+
+The **Anyone** scope allows any developer to integrate your ecosystem wallet, even if you have not given them permission. Any developer with thirdweb Connect, for example, would now display your wallet as a login option.
+
+The **Allowlist** scope allows developers that you have explicitly added to your list of Partners to display your wallet as a login option.
+
+You can manage scope in the Permissions tab of your Ecosystem Wallet dashboard.
+
+### How does billing work for Ecosystem Wallets?
+
+As the ecosystem admin, you will be billed $250 monthly for your Ecosystem Wallet. This allows any application or game in your ecosystem generate in-app wallets. Each month, we allow you and your ecosystem partners to generate 30,000 wallets for free. Once you've generated 30,000 wallets, you will be charged $0.02 per in-app wallet. At the end of each month, we will provide you with an invoice with a usage breakdown across all partners.
\ No newline at end of file
diff --git a/apps/portal/src/app/connect/wallet/faq/page.mdx b/apps/portal/src/app/connect/wallet/faq/page.mdx
index 7a8b865c34b..45ffecbac4b 100644
--- a/apps/portal/src/app/connect/wallet/faq/page.mdx
+++ b/apps/portal/src/app/connect/wallet/faq/page.mdx
@@ -57,63 +57,6 @@ Currently, users will rely on the built-in recovery of their auth method. Refer
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.
-# In App Wallet FAQs
-
-### How do users connect to their in-app wallet in a third-party app?
-
-Users can access it by doing a manual connection via wallet connect. They will then have to use the connect button or embed and select manage wallet -> connect an App.
-
-### How is pricing calculated for in-app wallets?
-
-In-app wallets are billed based on "monthly active wallets". An active wallet is defined as a wallet where a user logs in during the billing period. In-app wallets are completely free up to 1,000 monthly active wallets, and $0.02 per wallet after that.
-
-# Ecosystem Wallet FAQs
-
-### What is an Ecosystem Wallet?
-
-An ecosystem wallet is a managed in-app wallet service that allows you to create a branded wallet and login system, manage your partners, and allow any number of partners to spin up in-app wallets. End users that create in-app wallets through your partner applications (either with email, phone number, passkey, or socials) will receive **one account and wallet address** that they can access across the entire ecosystem.
-
-### How do Ecosystem Wallets work?
-
-Ecosystem Wallets are a fully managed and containerized in-app wallet backend service that is white labeled to your application. By giving you access to this backend service, you can power any application with in-app wallets just like thirdweb does for over 70,000 developers.
-
-### What is an Ecosystem Partner?
-
-Ecosystem partners are games or applications that you have permissioned to spin up in-app wallets underneath your brand. They will have access to the same account (funds, assets, etc.) for any end users that 1) use your branded login system or 2) log in with your wallet.
-
-You can manage ecosystem partners in the Permissions tab of your Ecosystem Wallet dashboard.
-
-### Which login providers can display my Ecosystem Wallet?
-
-thirdweb Connect, with WalletConnect and any wagmi- or viem-based login providers coming soon.
-
-### How can Partners integrate my Ecosystem Wallet?
-
-Partners can integrate your Ecosystem Wallet in three different ways:
-
-**Login System**
-
-Partners can install thirdweb SDK and use the Partner ID you created for them to display your branded sign in flow. All login options in this sign in flow will create an in-app wallet.
-
-**Branded Wallet Connector**
-
-Partners can add your wallet as a wallet connector option in their existing sign in flow on any domains they've whitelisted by calling the follow endpoint from their application.
-
-**WalletConnect (Coming Soon)**
-
-Partners using WalletConnect will automatically display your wallet as a WalletConnect option on any domains they've whitelisted.
-
-### What is the difference between Anyone and Allowlist scopes for Ecosystem Wallet?
-
-The **Anyone** scope allows any developer to integrate your ecosystem wallet, even if you have not given them permission. Any developer with thirdweb Connect, for example, would now display your wallet as a login option.
-
-The **Allowlist** scope allows developers that you have explicitly added to your list of Partners to display your wallet as a login option.
-
-You can manage scope in the Permissions tab of your Ecosystem Wallet dashboard.
-
-### How does billing work for Ecosystem Wallets?
-
-As the ecosystem admin, you will be billed $250 monthly for your Ecosystem Wallet. This allows any application or game in your ecosystem generate in-app wallets. Each month, we allow you and your ecosystem partners to generate 30,000 wallets for free. Once you’ve generated 30,000 wallets, you will be charged $0.02 per in-app wallet. At the end of each month, we will provide you with an invoice with a usage breakdown across all partners.
# Security FAQs
diff --git a/apps/portal/src/app/connect/wallet/get-started/page.mdx b/apps/portal/src/app/connect/wallet/get-started/page.mdx
index 762456e59ec..6a2ef9a5205 100644
--- a/apps/portal/src/app/connect/wallet/get-started/page.mdx
+++ b/apps/portal/src/app/connect/wallet/get-started/page.mdx
@@ -1,4 +1,4 @@
-import { Callout, OpenSourceCard, createMetadata, InstallTabs, SDKCard, Grid, ArticleIconCard } from "@doc";
+import { Callout, OpenSourceCard, createMetadata, InstallTabs, SDKCard, Grid, ArticleIconCard, Tabs, TabsList, TabsTrigger, TabsContent } from "@doc";
import {
ReactIcon,
TypeScriptIcon,
@@ -10,26 +10,36 @@ import { ExternalLink } from "lucide-react";
export const metadata = createMetadata({
image: {
- title: "Get started with thirdweb Wallets",
+ title: "Get started with Connect",
icon: "wallets",
},
- title: "Get started with thirdweb Wallet",
- description: "Get started with thirdweb Wallet",
+ title: "Get started with Connect",
+ description: "Get started with Connect",
});
-# Get Started
+# Get Started with Connect
-thirdweb offers multiple ways to add wallets to your application. Choose the method that best suits your needs:
+Connect offers multiple ways to integrate wallet functionality in your application:
1. **External Wallets** - Connect to existing wallets like MetaMask, Coinbase Wallet, etc.
2. **In-App Wallets** - Create wallets with social/email login.
-3. **Ecosystem Wallets** - Create wallets with social/email login that is shareable across various aplications.
+3. **Ecosystem Wallets** - Create wallets with social/email login that is shareable across various applications.
These methods can be used independently or together in the same application to provide the best experience for your users.
+## Get your Client ID
+
+To use wallet features in your applications, you will need a client ID. Generate one for free at [your thirdweb dashboard](https://thirdweb.com/create-api-key).
+
+
+ Keep your client ID safe. You can generate different client IDs for development and production environments.
+
+
+Your client ID authenticates your application with thirdweb's services and provides access to infrastructure like RPC endpoints, IPFS gateways, and wallet services.
+
## Live Playground
-Check out the playground that lets you see all the various capabilities of Connect.
+Before diving into the implementation, check out our playground to see all the various capabilities of Connect:
-## Get your client ID
+## Choose Your Framework/Language
+
+
+
+ TypeScript
+ React
+ React Native
+ Unity
+ .NET
+ Unreal Engine
+
+
+
+ ### Installation
+
+ Install the thirdweb SDK in your TypeScript project:
+
+ ```bash
+ npm install thirdweb
+ # or
+ yarn add thirdweb
+ # or
+ pnpm add thirdweb
+ ```
+
+ ### Set up the Client
+
+ First, create a client instance to connect with thirdweb services:
+
+ ```typescript
+ import { createThirdwebClient } from "thirdweb";
+
+ // For client-side applications:
+ const client = createThirdwebClient({
+ clientId: "YOUR_CLIENT_ID", // Get from your thirdweb dashboard
+ });
+
+ // For server-side scripts (Never expose secret keys in client code):
+ // const client = createThirdwebClient({
+ // secretKey: process.env.THIRDWEB_SECRET_KEY,
+ // });
+ ```
+
+ ### Connect External Wallets
+
+ Enable users to connect their existing wallets:
+
+ ```typescript
+ import { createThirdwebClient, walletConnect } from "thirdweb";
+
+ // Create the client (do this once and reuse it)
+ const client = createThirdwebClient({
+ clientId: "YOUR_CLIENT_ID",
+ });
+
+ // Connect WalletConnect
+ const wallet = walletConnect({
+ projectId: "YOUR_WALLETCONNECT_PROJECT_ID", // Get from WalletConnect dashboard
+ });
+
+ // Connect the wallet
+ const walletInstance = await wallet.connect();
+ const address = await walletInstance.getAddress();
+ console.log("Connected to:", address);
+
+ // Read wallet balance
+ import { getWalletBalance, ethereum } from "thirdweb";
+
+ const balance = await getWalletBalance({
+ client,
+ chain: ethereum,
+ address: walletInstance.getAddress(),
+ });
+ console.log(`Balance: ${balance.displayValue} ${balance.symbol}`);
+ ```
+
+ ### Setup In-App Wallet
+
+ Create wallets with email or social login:
+
+ ```typescript
+ import { createThirdwebClient, embeddedWallet } from "thirdweb";
+
+ // Create the client (do this once and reuse it)
+ const client = createThirdwebClient({
+ clientId: "YOUR_CLIENT_ID",
+ });
+
+ // Initialize embedded wallet
+ const wallet = embeddedWallet({
+ client,
+ });
+
+ // Connect with email
+ const emailWallet = await wallet.connect({
+ strategy: "email",
+ email: "user@example.com",
+ });
+
+ // Connect with social login
+ const googleWallet = await wallet.connect({
+ strategy: "google",
+ });
+ ```
+
+ ### Setup Ecosystem Wallet
+
+ Create shareable wallets across multiple applications:
+
+ ```typescript
+ import { createThirdwebClient, ecosystemWallet } from "thirdweb";
+
+ // Create the client (do this once and reuse it)
+ const client = createThirdwebClient({
+ clientId: "YOUR_CLIENT_ID",
+ });
+
+ // Initialize ecosystem wallet
+ const wallet = ecosystemWallet({
+ client,
+ ecosystemId: "YOUR_ECOSYSTEM_ID", // Get from your ecosystem dashboard
+ });
+
+ // Connect with email
+ const emailWallet = await wallet.connect({
+ strategy: "email",
+ email: "user@example.com",
+ });
+ ```
+
+
+
+ ### Installation
+
+ Install the thirdweb SDK in your React project:
+
+ ```bash
+ npm install thirdweb
+ # or
+ yarn add thirdweb
+ # or
+ pnpm add thirdweb
+ ```
+
+ ### Create a Client
+
+ First, create a client file (e.g., `thirdwebClient.ts`) for reuse throughout your app:
+
+ ```typescript
+ // thirdwebClient.ts
+ import { createThirdwebClient } from "thirdweb";
+
+ export const client = createThirdwebClient({
+ clientId: process.env.NEXT_PUBLIC_THIRDWEB_CLIENT_ID,
+ });
+ ```
+
+ ### Setup the Provider
+
+ Wrap your application with the ThirdwebProvider:
+
+ ```tsx
+ // app.tsx / _app.tsx
+ import { ThirdwebProvider } from "thirdweb/react";
+ import { client } from "./thirdwebClient";
+
+ function App() {
+ return (
+
+
+
+ );
+ }
+ ```
+
+ ### Connect Button Component
+
+ Use the pre-built ConnectButton for a complete wallet connection UI:
+
+ ```tsx
+ import { ConnectButton } from "thirdweb/react";
+ import { client } from "./thirdwebClient";
+
+ function YourApp() {
+ return (
+
+
My dApp
+
+
+ );
+ }
+ ```
+
+ The ConnectButton automatically handles 500+ wallets, including MetaMask, WalletConnect, Coinbase Wallet, and all supported in-app wallets.
+
+ ### Connection Hooks
+
+ For more customized implementations, use the connection hooks:
+
+ ```tsx
+ import { useConnect, useDisconnect, useActiveAccount, useWalletBalance } from "thirdweb/react";
+ import { client } from "./thirdwebClient";
+ import { ethereum } from "thirdweb/chains";
+
+ function CustomWalletUI() {
+ const { connect } = useConnect();
+ const { disconnect } = useDisconnect();
+ const activeAccount = useActiveAccount();
+
+ // Get wallet balance (only when connected)
+ const { data: balance, isLoading } = useWalletBalance({
+ client,
+ chain: ethereum,
+ address: activeAccount?.address,
+ });
+
+ return (
+
+ setEmail(e.target.value)}
+ placeholder="Enter your email"
+ />
+
+
+ );
+ }
+ ```
+
+
+
+ ### Installation
+
+ Install the thirdweb SDK in your React Native project:
+
+ ```bash
+ npm install thirdweb
+ # or
+ yarn add thirdweb
+ # or
+ pnpm add thirdweb
+ ```
+
+
+ You cannot use Expo Go with thirdweb because native modules are required.
+ Use an Expo development build (`npx expo prebuild`) or React Native CLI app.
+
+
+ ### Create a Client
+
+ Create a client file for reuse throughout your app:
+
+ ```typescript
+ // thirdwebClient.ts
+ import { createThirdwebClient } from "thirdweb";
+
+ export const client = createThirdwebClient({
+ clientId: "YOUR_CLIENT_ID", // Configure in your app's env or constants
+ });
+ ```
+
+
+ When creating your client ID on the thirdweb dashboard, allowlist your mobile app's bundle ID (e.g., com.yourcompany.app) for security.
+
+
+ ### Setup the Provider
+
+ Wrap your application with the ThirdwebProvider:
+
+ ```tsx
+ import { ThirdwebProvider } from "thirdweb/react";
+ import { client } from "./thirdwebClient";
+
+ function App() {
+ return (
+
+
+
+ );
+ }
+ ```
+
+ ### Connect Button Component
+
+ Use the pre-built ConnectButton for a complete wallet connection UI:
+
+ ```tsx
+ import { ConnectButton } from "thirdweb/react";
+ import { client } from "./thirdwebClient";
+ import { View, Text } from "react-native";
+
+ function YourApp() {
+ return (
+
+ My Mobile dApp
+
+
+ );
+ }
+ ```
+
+ ### Using In-App Wallets
+
+ Enable email or social login for mobile:
+
+ ```tsx
+ import { useEmbeddedWallet } from "thirdweb/react";
+ import { useState } from "react";
+ import { View, TextInput, Button, Alert } from "react-native";
+ import { client } from "./thirdwebClient";
+
+ function EmailLoginButton() {
+ const embeddedWallet = useEmbeddedWallet({
+ client,
+ });
+ const [email, setEmail] = useState("");
+
+ const handleLogin = async () => {
+ try {
+ await embeddedWallet.connect({
+ strategy: "email",
+ email,
+ });
+ } catch (error) {
+ Alert.alert("Login Failed", error.message);
+ }
+ };
+
+ return (
+
+
+
+
+ );
+ }
+ ```
+
+
+
+ ### Installation
+
+ 1. Download the latest [thirdweb Unity SDK](https://github.com/thirdweb-dev/unity-sdk/releases) (.unitypackage file)
+ 2. Import the package into your Unity project via Assets > Import Package > Custom Package
+
+ ### Configure Client ID
+
+ After importing the SDK:
+
+ 1. Go to Project Settings > Thirdweb
+ 2. Enter your Client ID from the thirdweb dashboard
+ 3. Allowlist your game's Bundle ID on the thirdweb dashboard for security
+
+ ### Initialize the SDK
+
+ Create a new script to manage wallet connections:
+
+ ```csharp
+ using Thirdweb;
+ using UnityEngine;
+ using UnityEngine.UI;
+
+ public class WalletManager : MonoBehaviour
+ {
+ private ThirdwebSDK sdk;
+ public Text walletAddressText;
+ public Button connectButton;
+
+ void Start()
+ {
+ // Client ID is set in Project Settings > Thirdweb
+ sdk = new ThirdwebSDK("ethereum"); // Or any supported chain
+ connectButton.onClick.AddListener(ConnectWallet);
+ }
+
+ public async void ConnectWallet()
+ {
+ try {
+ // Connect with an external wallet like Coinbase Wallet
+ string address = await sdk.wallet.Connect(new WalletConnection() {
+ provider = WalletProvider.CoinbaseWallet,
+ chainId = 1 // Ethereum Mainnet
+ });
+
+ walletAddressText.text = "Connected: " + address;
+ }
+ catch (System.Exception e) {
+ Debug.LogError("Error connecting wallet: " + e.Message);
+ }
+ }
+ }
+ ```
+
+ ### Using the Connect Wallet Prefab
+
+ For a quicker implementation, use the provided prefab:
+
+ 1. Add the `ThirdwebManager` prefab to your scene
+ 2. Configure your Client ID in the inspector
+ 3. Add the `ConnectWallet` prefab to your UI Canvas
+ 4. Connect the prefab to your ThirdwebManager
+
+ ### Implementing In-App Wallets
+
+ Enable email login in Unity:
+
+ ```csharp
+ public async void ConnectWithEmail(string email)
+ {
+ try {
+ string address = await sdk.wallet.Connect(new WalletConnection() {
+ provider = WalletProvider.EmbeddedWallet,
+ email = email,
+ chainId = 1 // Ethereum Mainnet
+ });
+
+ walletAddressText.text = "Connected: " + address;
+
+ // Read wallet balance
+ var balance = await sdk.wallet.GetBalance();
+ Debug.Log($"Balance: {balance.DisplayValue} {balance.Symbol}");
+ }
+ catch (System.Exception e) {
+ Debug.LogError("Error connecting wallet: " + e.Message);
+ }
+ }
+ ```
+
+
+
+ ### Installation
+
+ Install the thirdweb .NET SDK using NuGet:
+
+ ```bash
+ dotnet add package Thirdweb
+ ```
+
+ ### Initialize the SDK
+
+ Create a client instance to connect with thirdweb services:
+
+ ```csharp
+ using Thirdweb;
+
+ // For client-side applications:
+ var sdk = new ThirdwebSDK("ethereum", new ThirdwebSDK.Options
+ {
+ ClientId = "YOUR_CLIENT_ID" // From thirdweb dashboard
+ });
+
+ // For server-side applications:
+ // var sdk = new ThirdwebSDK("ethereum", new ThirdwebSDK.Options
+ // {
+ // SecretKey = Environment.GetEnvironmentVariable("THIRDWEB_SECRET_KEY")
+ // });
+ ```
+
+ ### Connect External Wallets
+
+ For .NET applications that need to interact with external wallets:
+
+ ```csharp
+ // For server-side applications or wallet management
+ var privateKey = Environment.GetEnvironmentVariable("WALLET_PRIVATE_KEY"); // Never hardcode
+ var wallet = new PrivateKeyWallet(privateKey);
+
+ await sdk.SetWallet(wallet);
+ var address = await sdk.Wallet.GetAddress();
+ Console.WriteLine($"Connected wallet address: {address}");
+
+ // Read wallet balance
+ var balance = await sdk.Wallet.GetBalance();
+ Console.WriteLine($"Balance: {balance.DisplayValue} {balance.Symbol}");
+ ```
+
+ ### Using In-App Wallets
+
+ Create wallets with email authentication:
+
+ ```csharp
+ // Create an embedded wallet with email
+ var walletOptions = new EmbeddedWalletOptions
+ {
+ Email = "user@example.com",
+ AuthProvider = AuthProvider.Email
+ };
+
+ var wallet = new EmbeddedWallet(walletOptions);
+ await sdk.SetWallet(wallet);
+
+ // Authenticate and get the wallet address
+ await wallet.Authenticate();
+ var address = await sdk.Wallet.GetAddress();
+ Console.WriteLine($"Connected with embedded wallet: {address}");
+ ```
+
+ ### Reading Contract Data
+
+ Interact with smart contracts:
+
+ ```csharp
+ // Get a contract instance
+ var contract = await ThirdwebContract.Create(
+ client: sdk.Client,
+ address: "0x...",
+ chain: Chain.Ethereum
+ );
+
+ // Read a value from the contract
+ var name = await contract.Read("name");
+ Console.WriteLine($"Contract name: {name}");
+ ```
+
+
+
+ ### Installation
+
+ 1. Download the thirdweb Unreal Engine plugin from the [Unreal Engine Marketplace](https://www.unrealengine.com/marketplace/en-US/product/thirdweb)
+ 2. Add the plugin to your Unreal project
+ 3. Enable the plugin in your project settings
+
+ ### Configure Client ID
+
+ 1. Go to Edit > Project Settings > Thirdweb
+ 2. Enter your Client ID from the thirdweb dashboard
+ 3. Enter your Bundle ID (must match what was allowlisted on the thirdweb dashboard)
+
+ ### Initialize the SDK (C++)
+
+ Create a new class to manage wallet connections:
+
+ ```cpp
+ #include "ThirdwebManager.h"
+ #include "WalletConnection.h"
+
+ // In your game class or controller
+ void AMyGameController::InitializeThirdweb()
+ {
+ // Get the Thirdweb subsystem
+ UThirdwebSubsystem* ThirdwebSubsystem = GEngine->GetEngineSubsystem();
+
+ // Initialize with your client ID (configured in project settings)
+ ThirdwebSubsystem->Initialize("ethereum");
+ }
+
+ void AMyGameController::ConnectWallet()
+ {
+ UThirdwebSubsystem* ThirdwebSubsystem = GEngine->GetEngineSubsystem();
+
+ // Configure wallet connection
+ FWalletConnection WalletOptions;
+ WalletOptions.Provider = EWalletProvider::EmbeddedWallet;
+ WalletOptions.Email = "user@example.com";
+ WalletOptions.ChainId = 1; // Ethereum Mainnet
+
+ // Connect wallet asynchronously
+ ThirdwebSubsystem->ConnectWallet(WalletOptions, FOnWalletConnected::CreateUObject(this, &AMyGameController::OnWalletConnected));
+ }
+
+ void AMyGameController::OnWalletConnected(const FString& Address, const FString& Error)
+ {
+ if (Error.IsEmpty())
+ {
+ UE_LOG(LogTemp, Display, TEXT("Wallet connected: %s"), *Address);
+
+ // Get balance
+ UThirdwebSubsystem* ThirdwebSubsystem = GEngine->GetEngineSubsystem();
+ ThirdwebSubsystem->GetWalletBalance(FOnWalletBalanceReceived::CreateUObject(this, &AMyGameController::OnBalanceReceived));
+ }
+ else
+ {
+ UE_LOG(LogTemp, Error, TEXT("Failed to connect wallet: %s"), *Error);
+ }
+ }
+
+ void AMyGameController::OnBalanceReceived(const FString& Balance, const FString& Symbol)
+ {
+ UE_LOG(LogTemp, Display, TEXT("Balance: %s %s"), *Balance, *Symbol);
+ }
+ ```
+
+ ### Using Blueprints
+
+ Alternatively, use Blueprint nodes provided by the Thirdweb plugin:
+
+ 1. Create a new Blueprint class
+ 2. Add a component for user interface (like widget blueprint)
+ 3. Use the Thirdweb nodes found in the node palette
+ 4. Connect nodes for wallet login, balance checking, etc.
+
+
+
+## Performance Considerations
+
+Optimize your wallet implementation:
+
+1. **Create Client Once**
+ - Initialize the thirdweb client once and reuse it
+ - Avoid recreating the client for each operation
+
+2. **Caching**
+ - Use built-in React query capabilities
+ - Avoid polling or constant refetching
+ - Implement proper state management
+
+3. **Lazy Loading**
+ - The SDK loads wallet connectors on demand
+ - Modularity reduces bundle size
+ - Only import what you need
+
+## Next Steps
+
+After setting up wallet functionality, explore these advanced topics:
-To use in-app wallets in your applications, you will need a client ID. You can get one for free on [your thirdweb dashboard](https://thirdweb.com/create-api-key).
+- [Enable Account Abstraction](/connect/account-abstraction/overview)
+- [Implement Sign In with Ethereum](/connect/auth)
+- [Configure Gas Sponsorship](/connect/account-abstraction/sponsorship-rules)
+- [Explore Payment Options](/connect/pay/overview)
-## Pick your language
+## Explore Full SDK Documentation
-Start with Connect in your preferred language.
+For comprehensive guides on implementing the full thirdweb SDK, explore our language-specific documentation:
connect an App.
+
+### How is pricing calculated for in-app wallets?
+
+In-app wallets are billed based on "monthly active wallets". An active wallet is defined as a wallet where a user logs in during the billing period. In-app wallets are completely free up to 1,000 monthly active wallets, and $0.02 per wallet after that.
+
+### What security measures should users take when connecting their in-app wallet?
+
+Users should always verify they are connecting to legitimate websites by checking the URL carefully. Never connect to unverified or suspicious websites. The connection process should only be initiated through the official WalletConnect interface or trusted dApp integrations.
+
+### Can developers integrate both in-app wallets and external wallets in the same application?
+
+Yes, developers can build a unified experience that supports both in-app wallets and external wallets (like MetaMask) using the same code base. The SDK provides a wallet signer that handles how all wallet types interact with signatures and smart contracts consistently, though the initial connection flow will differ by wallet type.
+
+### What blockchain networks are supported for in-app wallet connections?
+
+In-app wallets are fully EVM (Ethereum Virtual Machine) compatible and support all EVM chains. This includes major networks like Ethereum Mainnet, Polygon, Optimism, Base, and other EVM-compatible blockchains.
\ No newline at end of file
diff --git a/apps/portal/src/app/dotnet/pay/quickstart/page.mdx b/apps/portal/src/app/dotnet/pay/quickstart/page.mdx
index a834b4b82b6..8cfadfed4cb 100644
--- a/apps/portal/src/app/dotnet/pay/quickstart/page.mdx
+++ b/apps/portal/src/app/dotnet/pay/quickstart/page.mdx
@@ -1,17 +1,17 @@
import { Details, createMetadata } from "@doc";
export const metadata = createMetadata({
- title: "Thirdweb Pay Quickstart | thirdweb .NET SDK",
- description: "End to end examples for using the Thirdweb Pay SDK.",
+ title: "Thirdweb Universal Bridge Quickstart | thirdweb .NET SDK",
+ description: "End to end examples for using the Thirdweb Universal Bridge SDK.",
});
# Quickstart
-Thirdweb Pay is a powerful service that allows you to easily integrate fiat onramps and cross-chain crypto purchases.
+Thirdweb Universal Bridge is a powerful service that allows you to easily integrate fiat onramps and cross-chain crypto purchases.
## Cross-Chain Swaps
-This example demonstrates how to perform a cross-chain swap using the Thirdweb Pay SDK.
+This example demonstrates how to perform a cross-chain swap using the Thirdweb Universal Bridge SDK.
```csharp
using Thirdweb.Pay;
@@ -45,7 +45,7 @@ while (currentSwapStatus is not SwapStatus.COMPLETED and not SwapStatus.FAILED)
## Fiat Onramps
-This example demonstrates how to use the Thirdweb Pay SDK to initiate a fiat onramp.
+This example demonstrates how to use the Thirdweb Universal Bridge SDK to initiate a fiat onramp.
```csharp
// Get a Buy with Fiat quote
@@ -80,4 +80,4 @@ while (currentOnRampStatus is not OnRampStatus.ON_RAMP_TRANSFER_COMPLETED and no
## Learn More
-Please refer to our official [Thirdweb Pay](/connect/pay/overview) documentation for more general information.
+Please refer to our official [Thirdweb Universal Bridge](/connect/pay/overview) documentation for more general information.
diff --git a/apps/portal/src/app/insight/use-cases/page.mdx b/apps/portal/src/app/insight/use-cases/page.mdx
index 686dfa05e3c..d07d095a5f1 100644
--- a/apps/portal/src/app/insight/use-cases/page.mdx
+++ b/apps/portal/src/app/insight/use-cases/page.mdx
@@ -27,3 +27,4 @@ making it a powerful tool for building dynamic blockchain applications.
| Fetch all transactions emitted by a single wallet across multiple chains. | Use Transactions Blueprint to filter transactions by wallet address across different chain_ids to provide a historical view of cross-chain transactions. |
| Fetch all tokens owned by a specific wallet address. | Use Events Blueprint to find transfer events where the wallet address is the recipient, providing a list of token balances. |
| Detect wallet staking activity on platforms such as AAVE or other DeFi protocols. | Use Events Blueprint to filter for staking-related events such as deposits, and monitor which wallets are actively staking. |
+