Changelog

Firekeeper

What's Changed

  • Added AuthProvider.Steam as a login option for In-App or Ecosystem Wallets.
// Using .NET SDK
var steamWallet = await InAppWallet.Create(client: client, authProvider: AuthProvider.Steam);
if (!await steamWallet.IsConnected())
{
_ = await steamWallet.LoginWithOauth(...);
}
var steamWalletAddy = await steamWallet.GetAddress();
// Using Unity SDK
var steamWalletOptions = new WalletOptions(
provider: WalletProvider.InAppWallet,
chainId: 1,
inAppWalletOptions: new InAppWalletOptions(authprovider: AuthProvider.Steam);
);
var steamWallet = await ThirdwebManager.Instance.ConnectWallet(options);
var steamWalletAddy = await steamWallet.GetAddress();
  • Added the ability to pay for gas with ERC20 tokens when using Smart Wallet.
    • Currently supports Base USDC, Celo CUSD, and Lisk LSK tokens.
    • Simply select a TokenPaymaster when creating a SmartWallet and all transactions will be paid for with the corresponding ERC20 from the user's Smart Wallet.
    • Useful on L2s where the native token is ETH and you want to enshrine another coin or onramp your users directly to that coin.
    • These TokenPaymasters entirely operate onchain, leveraging popular DEXes and decentralized price feeds from Uniswap & Chainlink.
    • This product is in beta, and only compatible with EntryPoint v0.7.0, which we auto select for you if not overriden when configurin your wallet.
// Example of paying for a transaction ERC20 stablecoins instead of native ETH
// Using .NET SDK (Lisk LSK)
var chainId = 1135; // lisk
var erc20SmartWallet = await SmartWallet.Create(
personalWallet: privateKeyWallet,
chainId: chainId,
tokenPaymaster: TokenPaymaster.LISK_LSK
);
// Using Unity SDK (Base USDC)
var chainId = 8453; // base
var erc20SmartWallet = await ConnectWallet(
new WalletOptions(
WalletProvider.InAppWallet,
chainId,
inAppWalletOptions: new InAppWalletOptions(authprovider: AuthProvider.Steam),
smartWalletOptions: new SmartWalletOptions(sponsorGas: true, tokenPaymaster: TokenPaymaster.BASE_USDC)
)
);
// Then just trigger any transaction!
var erc20SmartWalletAddress = await erc20SmartWallet.GetAddress();
Debug.Log($"ERC20 Smart Wallet address: {erc20SmartWalletAddress}");
var receipt = await erc20SmartWallet.Transfer(chainId: chainId, toAddress: erc20SmartWalletAddress, weiAmount: 0);
Debug.Log($"Receipt: {JsonConvert.SerializeObject(receipt, Formatting.Indented)}");

Links

.NET Release | NuGet Release | Unity Release

Docs | Support

Winston Yeo

We supported pregeneration for enclave wallets a while back.

Today, wallet pregeneration is available for in-app wallets too!

What does this mean?

This means that you can now know the in-app wallet address of a user before they register on your platform!

This allows you to perform airdrop, pre-load certain assets, and more!

The API is the same as ecosystem wallets except we don't have to include the ecosystem details:

curl -X POST 'https://embedded-wallet.thirdweb.com/api/v1/pregenerate' \
-H 'x-secret-key: YOUR_SECRET_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"strategy": "email",
"email": "user@example.com"
}'

On top of that, we also now support pregeneration via custom IDs. This means that you can know your user's address ahead of time even if you use a custom authentication methods like JWT or an auth endpoint.

Here's what that would look like:

curl -X POST 'https://embedded-wallet.thirdweb.com/api/v1/pregenerate' \
-H 'x-secret-key: YOUR_SECRET_KEY_HERE' \
-H 'Content-Type: application/json' \
-d '{
"strategy": "userId",
"userId": "YOUR_CUSTOM_USER_ID_HRE"
}'

For more information and background on what pregeneration is all about, check out the newly updated documentation here.

Amine Afia

We're excited to announce that thirdweb Insight has expanded its blockchain data querying capabilities with support for six new chains:

  • Donatuz
  • Avalanche
  • Soneium Minato
  • Fhenix- Helium
  • Ape Chain

What This Means For Developers
With these additions, you can now use all of Insight's powerful features across these new chains:

  • Query on-chain events with the Events Blueprint
  • Track transactions with the Transactions Blueprint
  • Monitor token balances (ERC-20, ERC-721, ERC-1155) with the Tokens Blueprint
https://<chain-id>.insight.thirdweb.com

Replace `<chain-id>` with the specific chain ID you want to query.

For example, to query Avalanche data:

const getAvaxTransfers = async () => {
try {
const response = await fetch(
"https://43114.insight.thirdweb.com/v1/<client-id>/transactions/<wallet-address>",
);
const walletTransactionsInfo = await response.json();
return walletTransactionsInfo;
} catch (error) {
console.error("Error:", error);
}
};


Use Cases
These new chain additions enable various use cases across different sectors:

  • DeFi
    • Track token movements and trading volume across new DeFi ecosystems
    • Monitor liquidity pools and DEX activity
    • Analyze cross-chain token economics
  • Gaming
    • Track in-game assets and NFTs on gaming-focused chains
    • Monitor player rewards and achievements
    • Analyze gaming economy metrics
  • NFTs
    • Track NFT collections and transfers across new marketplaces
    • Monitor NFT trading activity and ownership
    • Analyze collection performance metrics

View All Supported Chains
For a complete list of supported chains and their respective chain IDs, check the [thirdweb chainlist](https://thirdweb.com/chainlist?service=insight).

Greg

As of v5.69.0, we've added Steam as an authentication option in our TypeScript SDK for all the games and game enjoyooors out there. You can setup Steam auth just like any other authentication method.

import { inAppWallet } from "thirdweb/wallets";
const wallet = inAppWallet();
const account = await wallet.connect({
client,
chain,
strategy: "steam",
});
0:00
/0:13
Firekeeper

What's Changed

  • Fixed an issue with typed data signing using In-App/Ecosystem Wallets when one of the fields was larger than Uint32.
  • Improved NFT Metadata Population & Added Filters
    • The ERC1155_GetOwnedNFTs extension now returns the QuantityOwned metadata field correctly for each NFT.
    • The ERC721_GetNFT and ERC721_GetAllNFTs extensions can now take in a new fillOwner parameter that defaults to true and decides whether to make additional requests to populate the Owner field of the metadata, otherwise defaulting to Constants.ADDRESS_ZERO.
    • The ERC1155_GetNFT and ERC1155_GetAllNFTs extensions can now take in a new fillSupply parameter that defaults to true and decides whether to make additional requests to populate the Supply field of the metadata, otherwise defaulting to BigInteger.MinusOne.

Links

.NET Release | NuGet Release | Unity Release

Docs | Support

Samina Kabir
Stanley Szeto

With the introduction of modular contracts, we are improving the contract management experience on our dashboard to accompany this new development paradigm.

A modular contract has a core contract and module contracts that compose the entire modular contract. With this development in mind, we want to encourage users to add and remove modules with direct support on dashboard.

The following pre-built modules now have special component support on dashboard to enable users to interact with these modules without depending on the Contract Explorer or SDK.

  • Transferable
  • Royalty
  • OpenEdition
  • BatchMetadata

To check out these changes, deploy a modular contract on dashboard or view your existing contracts with the aforementioned modules installed.

More module UIs will be released in the coming weeks for the remaining modules- stay tuned. We'd love to hear your feedback on these new changes!

Greg

We've made yet another improvement to our dashboard analytics, adding both a project and team-based analytics overview page. Now, you can browse analytics for:

  • Weekly and daily active Users
  • All-time users
  • New users by week or day
  • Returning users by week or day
  • Distribution of wallets connected
  • Total wallets connected
  • Distribution of in-app wallet sign-in methods
  • Total in-app wallet logins
  • Total gas sponsored for your users over time
  • ...and more

But there's a catch! You can't see these analytics until you've connected the thirdweb SDK to your app. So start building and your charts can look as amazing as these. 🫡

0:00
/0:16
Firekeeper

We've added new chains to the platform this week!

Metis Sepolia Testnet: RPC and Chain Settings
Use the best Metis Sepolia Testnet RPC and add to your wallet. Discover the chain ID, native token, explorers, and faucet options.
Metis Andromeda: RPC and Chain Settings
Use the best Metis Andromeda RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
Donatuz Testnet: RPC and Chain Settings
Use the best Donatuz Testnet RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
ZERO Testnet (Sepolia): RPC and Chain Settings
Use the best ZERO Testnet (Sepolia) RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
Blast: RPC and Chain Settings
Use the best Blast RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
Pivotal Sepolia: RPC and Chain Settings
Use the best Pivotal Sepolia RPC and add to your wallet. Discover the chain ID, native token, explorers, and faucet options.
Skopje Testnet: RPC and Chain Settings
Use the best Skopje Testnet RPC and add to your wallet. Discover the chain ID, native token, explorers, and faucet options.
GPT: RPC and Chain Settings
Use the best GPT RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
Superseed: RPC and Chain Settings
Use the best Superseed RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.
Geist: RPC and Chain Settings
Use the best Geist RPC and add to your wallet. Discover the chain ID, native token, explorers, and more.

Every chain comes out of the box with SDK support RPC, Engine and Account Abstraction capabilities. All you need is the chain id to get going.

const wallet = smartWallet({
chain: defineChain(59902), // just need the chainId!
sponsorGas: true,
});

For testnets, you'll also find a faucet in each chain page.

Happy building! 🛠️

Winston Yeo

Faster In-App Wallet initialization

We've previously sped up in app wallet authentication.

Today, we've dramatically improved our in-app wallet generation speeds. It's now around 40% faster!

Enclave In App Wallet

In app wallets now get to benefit from the updated security model that ecosystem wallets enjoy.

In particular, we've moved to an enclave model allowing for verifiable code execution. This way, you'll know exactly what the private keys are being used for at all times.

This sets us up to use in app wallets in places where we couldn't before. Think CLIs, backend float wallets, etc.

Migration for existing users on the sharded model happens automatically and requires no work on your end.

We've written a more in depth security overview of the new model here.


To enjoy all the latest goodies, simply update to the latest thirdweb SDK version 5.67.0!

Manan Tank

We are introducing a massive change to thirdweb dashboard with a focus on Teams and Projects

API Keys are now Projects

By default all your API keys are converted to projects under a single team as shown below

New Project Dashboard

You can click on your project to view analytics, configure thirdweb services and manage settings.

Easily switch between Teams and Projects

You can quickly switch between teams and projects directly from dashboard header

Team Settings Dashboard

Manage your team's general settings, team members, billing, gas credits and notification alerts in team settings dashboard

Account Management dashboard

We now have an entire dashboard dedicated to Account management. You can manage your teams, view all your contracts and manage authorized devices.

More features coming soon in Q4

  • Create multiple teams
  • Invite and manage team members
  • Account settings
  • Link Engines and Contracts with Projects
  • Link Projects to Ecosystems
Firekeeper

What's Changed

  • Having an incorrect or slightly off system time would produce errors when logging in with In-App Wallets in some cases, we have added a fallback in this scenario that will work around this issue.
  • IThirdwebWallet.Transfer now has an optional tokenAddress override to transfer ERC20 tokens using said function; this is an alternative to ThirdwebContract.ERC20_Transfer.
  • ERC1155 transfer-related functions' data bytes parameter has now been made optional.
  • The inability to fetch NFTMetadata when calling an NFT-related method no longer throws, and instead returns NFTMetadata with a description containing the error message.
  • Enables custom implementation for OTP Verification Modal by @Vingator in https://github.com/thirdweb-dev/unity-sdk/pull/218
    • Introduces abstract OTP verification modal so you can customize it more easily.
    • Shared by In-App and Ecosystem Wallets.

Links

.NET Release | NuGet Release | Unity Release

Docs | Support

Nicholas St. Germain

Exciting new tools and refinements are here with the latest release! Track transactions effortlessly with new nodes for status and receipts, and take advantage of the Blueprint Screenshot Debug feature added directly to your Editor Toolbar. We’ve enhanced security by masking sensitive logs and streamlined configuration with a global PartnerID setting. Plus, enjoy smoother Android authentication and cleaner session key creation. These updates make for a more secure and streamlined experience, so dive in and explore what's new!

What's Changed

Additions

  • Get Transaction Status node
  • Get Transaction Receipt nodes
  • Add Blueprint Screenshot Debug Functionality to Editor Toolbar as Button

Enhancements

  • Mask sensitive strings in logging
  • Migrate PartnerID to global configuration, removing from all nodes

Fixes

  • Use JSI-bound custom tabs to fix android external auth
  • Formatting string on Read Contract

Removals

  • Reduce inputs on CreateSessionKey
  • Per node PartnerID

Marketplace | Documentation | Github Release

Firekeeper

What's Changed

  • In-App Wallets now use the same infrastructure as Ecosystem Wallets.
    • Up to 90% performance increase, specially on lower end devices or web platforms.
    • Much less cryptography done client side, using secure enclaves over shamir's secret sharing.
    • If you were using In-App Wallets previously, they will be automatically migrated to the new infrastructure upon first login.
      • If you were using custom auth with In-App Wallets before this release, you may pass your legacy encryption key during the creation of your wallet - it will be used to migrate your wallets to the new infrastructure upon first login.
      • Encryption keys are no longer required for In-App Wallets when logging in with JWT (OIDC Compatible Custom Auth) or AuthEndpoint (Generic Custom Auth).
  • Added GetUserDetails method to In-App/Ecosystem Wallets that returns more information about your logged in user.
    • GetEmail and GetPhoneNumber have been deprecated in favor of GetUserDetails
  • Added GetEcosystemDetails method to return general information about your Ecosystem Wallet, can be used for dynamic branding, etc.
  • Fixes TokenERC721_MintTo functions failing with invalid signature; the token id parameter has also been removed.

Links

.NET Release | NuGet Release | Unity Release

Docs | Support

Prithvish Baidya

Engine v2.1.0 introduces Smart Backend Wallets, powered by account abstraction. Key benefits include:

  • No more gas management
  • No need to hold crypto
  • Fewer stuck transactions
  • Backward-compatible interface
  • One-step setup

Why does it matter?

No more gas management

Smart backend wallets send all transactions as user operations from a smart wallet using thirdweb's paymaster. Your wallets no longer need to hold or top-up gas funds, and thirdweb sends you a bill for your gas used.

No need to hold crypto

No more top-ups also means your business no longer needs to hold crypto. This is great news for any business that must avoid holding cryptocurrency tokens for regulatory or financial reasons.

Use a smart backend wallet with an AWS KMS or GCP KMS wallet for enterprise-grade security for the signer.

Fewer stuck transactions

While Engine v2 processes transactions very fast, some chains or nodes may throttle transactions submitted from a single backend wallet. Smart backend wallets circumvent this limitation because transactions (or "user operations") are sent from a large fleet of bundler wallet addresses.

Backward-compatible interface

Smart backend wallets behave like existing (EOA) backend wallets. Simply update your app's x-backend-wallet-address header with the smart backend wallet address. All of Engine's endpoints are supported.

One-step setup

Engine creates an EOA signer wallet and deploys a smart account using thirdweb's battle-tested account factory, or your own.

The EOA signer wallet may be a local wallet, AWS KMS, or GCP KMS. You don't need to keep track of this wallet, Engine manages it behind the scenes.

The thirdweb account that deployed Engine (cloud-hosted) or tied to the thirdweb secret key (self-hosted) will be billed for gas usage. A valid payment method must be on file to send transactions on mainnet chains.

What does it cost?

Smart backend wallets are enabled on all Engine tiers (Standard, Premium, Enterprise, and self-hosted) for no added cost.

User operations on testnet are free, and thirdweb charges a 10% fee for gas used on mainnet chains. See Pricing for more details.

Which chains are supported?

See the list of chains that support account abstraction on thirdweb. Don't see your chain? Reach out to us!

How do I create a smart backend wallet?

The existing Create Backend Wallet endpoint now supports new types: smart:local, smart:aws-kms, and smart:gcp-kms:

POST /backend-wallet/create
{
"type": "smart:local" // or smart:aws-kms, smart:gcp-kms
}

Note: AWS KMS and Google Cloud KMS smart wallets require credentials like with existing backend wallets.

(Dashboard support coming soon.)

Now provide the backend wallet address to any Engine API that accepts a backend wallet to start using it. We can't wait to see what you build with these new capabilities!

Background: Why we built this in Engine

This update represents a major step forward in making web3 infrastructure more accessible and manageable for teams. Whether you're building a game, marketplace, or DeFi app, smart backend wallets provide the foundation for scalable, secure, and efficient blockchain operations.

The benefits mentioned above address the top pain points we heard from customers, and we believe account abstraction-based wallets are the ideal solution.

Account abstraction is complex, but thirdweb (Engine, SDK, infrastructure, contracts) handles the full stack:

  • Manage smart accounts
    • Deploy and manage smart account factory contracts
    • Initialize EntryPoint contract connections
    • Handle complex account deployment logic
    • Manage deterministic address computation
  • Send user operations
    • Build UserOperation
    • Calculate gas parameters (verification gas, pre-verification gas)
    • Handle signature schemes and validation
    • Manage nonces across operations
  • Bundler infrastructure
    • Run or connect to ERC-4337 bundlers
    • Handle bundler connections and failovers
    • Monitor bundle status and handle failures
    • Manage complex retry mechanisms
  • Gas management
    • Maintain gas balance
    • Alert and top-up wallets
    • Handle gas price fluctuations
    • Manage paymaster integrations

thirdweb is hiring!

The small team at thirdweb is on a mission to build the most intuitive and complete web3 platform. Our products empower over 70,000 developers each month including Shopify, AWS, Coinbase, Rarible, Animoca Brands, and InfiniGods.

See our open roles. We’d love to work with you!

Arsenii

We are excited to announce the release of Insight v0.0.6-beta! This version brings significant improvements to enhance your blockchain data analysis experience.

🚀 New Features

Enable Aggregates and GROUP BY

You can now perform aggregate functions and use GROUP BY clauses in your queries. This enhancement allows for more sophisticated data analysis, enabling you to summarise and categorise blockchain data effectively.

Transactions Lookup by Signatures

We've added the ability to look up transactions based on their function signatures. This feature simplifies filtering and analysing transactions that invoke specific smart contract functions.

🐛 Bug Fixes

  • Fixed an issue where bytes were incorrectly truncated from non-address topics and ensured proper handling of empty topics.

🛠 Other Improvements

  • Strip and normalise Solidity function and event signatures for consistent querying.
  • Added options for Clickhouse TLS and API basic authentication to enhance security.
  • Implemented a whitelist for allowed Clickhouse functions to control query executions.
  • Updated Docker image tagging in the release workflow for streamlined deployments.

🔄 Also in v0.0.5-beta

Minor Insight v0.0.5-beta has been released previously without receiving its own changelog, and here are the main takes from it:

  • Added Clickhouse and poller settings for better configuration management.
  • Implemented skipping of unmerged blocks in the reorg handler to enhance stability.
  • Skipped duplicate blocks in the committer to prevent redundant data processing.
  • Introduced missing block polling in the gap handler and committer to ensure data completeness.

If you encounter any issues or have suggestions, please feel free to open an issue in our GitHub repository.

Joaquim Verges

Your project's dashboard just became more useful with a new set of metrics to track the growth of your apps!

Login to your account, select your project and head over to the Connect tab to see an overview of your aggregated metrics for connections, in-app wallets, account abstraction and pay. You can also dive deeper into each individual section for more detailed metrics.

This is just scratching the surface of all the insights Connect can give you about how your app is performing. Keep an eye out on your dashboards for more stats and metrics.

Happy Building! 🛠️

Nicholas St. Germain

Our latest release introduces even more control and functionality to your workflow! With new raw contract read/write capabilities, enhanced mobile URL redirects, and automated deeplink registration on Android, you’re set up for seamless integration. Improved organization and logging, situationally-enforced external OAuth for added compatibility, and optimized async task handling all work together to keep your development smooth and efficient. Dive in to experience these enhancements and fine-tune your projects like never before!

What's Changed

Additions

  • Generic Raw Read/Write Contract via Engine
  • Mobile AppURL redirect override
  • Engine Base URL + Access Token added to settings
  • Automatic Deeplink registration on android devices

Enhancements

  • GetLinkedAccounts automatically converted to data struct
  • Rust Core updated
  • Async Tasks grouped into folder structure
  • Imports cleaned up
  • Logging cleaned up to Verbose/VeryVerbose
  • Enforced external auth for some OAuth providers
  • .h/.cpp split out for some files
  • Async Tasks now check for game thread and use weakThis refs

Marketplace | Documentation | Github Release

Joaquim Verges

We just released a new version of the thirdweb Connect SDK which comes with a refreshed prebuilt UI components for executing transactions, onramping, bridging and swapping any token.

The new UI brings a simpler onramping flow showing you all your available balances up front, easy way to pay with another wallet and with a credit card.

We also upgraded the transaction flow to make it clearer for when your users don't hold enough funds in their wallets to complete a transaction.

Try it out live on the playground: https://playground.thirdweb.com/connect/pay

Happy building! 🛠️

Firekeeper

What's Changed

  • Upgraded base project/examples to Unity 6 and Playground from In-App to Ecosystem Wallet.
    • Much faster on platforms like WebGL and lower end devices.
    • Ecosystem Wallets are shareable with third parties.
  • Added a link.xml to cover Thirdweb's .NET Core assemblies. Minimal stripping is no longer a hard requirement unless using WalletConnect as one of your wallet provider options.
  • Updated base project Android settings to target Min API 34 to match latest store policies.
  • Upgraded EDM4U (External Dependency Manager) - contains various improvements.

Links

Unity Release | Docs