165 KiB
thirdweb
5.55.0
Minor Changes
-
#4571
5058fdbThanks @gregfromstl! - Adds X authentication -
#4565
c0778cbThanks @gregfromstl! - Adds parseAvatarRecord and parseNftUri utilitiesimport { parseAvatarRecord } from "thirdweb/extensions/ens"; import { parseNftUri } from "thirdweb/extensions/common"; const avatarUrl = await parseAvatarRecord({ client, uri: "...", }); const nftUri = await parseNftUri({ client, uri: "...", });
Patch Changes
-
#4582
5d3b395Thanks @gregfromstl! - Adds the ability to hide certain wallets in the wallet switcher<ConnectButton client={client} detailsModal={{ // We hide the in-app wallet so they can't switch to it hiddenWallets: ["inApp"], }} accountAbstraction={{ chain: baseSepolia, sponsorGas: true, }} /> -
#4546
3901805Thanks @edwardysun! - Add preferredProvider to buyWithFiat
5.54.0
Minor Changes
-
#4527
b76a82cThanks @joaquim-verges! - Update React Native dependencies and add support for React Native 0.75 -
#4499
fe1ff63Thanks @joaquim-verges! - Breaking Change indeployPublishedContractContract constructor/ initializer params are now passed as a single object instead of an array. The object should have the same shape as the params defined in the contract's ABI.
Example of old way (using
constructorParamsorinitializeParams):const address = await deployPublishedContract({ account, chain, client, contractId: "Airdrop", contractParams: [TEST_ACCOUNT_A.address, ""], });New way (using
contractParams):const address = await deployPublishedContract({ account, chain, client, contractId: "Airdrop", contractParams: { defaultAdmin: TEST_ACCOUNT_A.address, contractURI: "", }, }); -
#4528
c96e2d9Thanks @joaquim-verges! - Handle salt parameter for deterministic deploys of published contractsYou can now pass a salt parameter to the
deployPublishedContractfunction to deploy a contract deterministically.const address = await deployPublishedContract({ client, chain, account, contractId: "Airdrop", contractParams: { defaultAdmin: "0x...", contractURI: "ipfs://...", }, salt: "test", // <--- deterministic deploy });This also works for unpublished contracts, via the
deployContractfunction.const address = await deployContract({ client, chain, account, bytecode: "0x...", abi: contractAbi, constructorParams: { param1: "value1", param2: 123, }, salt: "test", // <--- deterministic deploy }); -
#4541
0596fa2Thanks @gregfromstl! - Adds getUsers function to query users on the serverimport { getUser } from "thirdweb/wallets"; const user = await getUser({ client, walletAddress: "0x123...", });
Patch Changes
-
#4503
8636c28Thanks @jnsdls! - fix erc721 delayed reveal detection -
#4544
40f01e5Thanks @joaquim-verges! - Allow smart wallet transactions to be sent in parallel -
#4543
b4e1491Thanks @gregfromstl! - Display social profiles for linked accounts -
#4507
6353cb7Thanks @joaquim-verges! - Fix erc721 delayed reveal simulation error
5.53.0
Minor Changes
-
#4094
f1d087eThanks @joaquim-verges! - Support for Coinbase Smart Wallet in React NativeYou can now use the Coinbase Smart Wallet in your React Native apps.
const wallet = createWallet("com.coinbase.wallet", { appMetadata: { name: "My app name", }, mobileConfig: { callbackURL: "https://example.com", }, walletConfig: { options: "smartWalletOnly", }, }); await wallet.connect({ client, }); -
#4454
c546b65Thanks @joaquim-verges! - ExposecreateAndSignUserOputility function
Patch Changes
-
#4466
763e439Thanks @joaquim-verges! - Export thirdweb/social functions and types -
#4477
42feff3Thanks @kumaryash90! - More storage slots for proxy resolution -
#4462
f3a6179Thanks @joaquim-verges! - Fix common icons theme in React Native -
#4473
baf1a21Thanks @gregfromstl! - Updated SocialProfiles type to be SocialProfile[] -
#4478
80e0bfeThanks @gregfromstl! - Fix ERC20 balance read when showing pay modal
5.52.0
Minor Changes
-
#4349
a2d2291Thanks @gregfromstl! - Adds social profile retrieval for Farcaster, Lens, and ENS.import { getSocialProfiles } from "thirdweb/social"; const profiles = await getSocialProfiles({ address: "0x...", client, });[ { "type": "ens", "name": "joenrv.eth", "avatar": "ipfs://bafybeic2wvtpv5hpdyeuy6o77yd5fp2ndfygppd6drdxvtfd2jouijn72m", "metadata": { "name": "joenrv.eth" } }, { "type": "farcaster", "name": "joaquim", "bio": "Eng Lead @ thirdweb", "avatar": "https://lh3.googleusercontent.com/EUELPFJzdDNcc3qSaEMekh0_W16acnS8MSvWizt-7HPaQhfJsNFC5HA0W4NKcy6CN9zmV7d4Crqg2B8qM9BpiveqVTl2GPBQ16Ax2IQ", "metadata": { "fid": 2735, "bio": "Eng Lead @ thirdweb", "pfp": "https://lh3.googleusercontent.com/EUELPFJzdDNcc3qSaEMekh0_W16acnS8MSvWizt-7HPaQhfJsNFC5HA0W4NKcy6CN9zmV7d4Crqg2B8qM9BpiveqVTl2GPBQ16Ax2IQ", "username": "joaquim", "addresses": [ "0x2247d5d238d0f9d37184d8332ae0289d1ad9991b", "0xf7970369310b541b8a84086c8c1c81d3beb85e0e" ] } }, { "type": "lens", "name": "joaquim", "bio": "Lead engineer @thirdweb", "avatar": "https://ik.imagekit.io/lens/media-snapshot/557708cc7581172234133c10d473058ace362c5f547fa86cee5be2abe1478e5b.png", "metadata": { "name": "joaquim", "bio": "Lead engineer @thirdweb", "picture": "https://ik.imagekit.io/lens/media-snapshot/557708cc7581172234133c10d473058ace362c5f547fa86cee5be2abe1478e5b.png" } } ]import { useSocialProfiles } from "thirdweb/react"; const { data: profiles } = useSocialProfiles({ client, address: "0x...", }); -
#3413
87d6b6aThanks @joaquim-verges! - Support for modular contractsDeploy and Interact with modular contracts programmatically
Deploy a modular contract
import { ClaimableERC721, BatchMetadataERC721, deployModularContract, } from "thirdweb/modules"; const deployed = deployModularContract({ client, chain, account, core: "ERC721", params: { name: "My Modular NFT Contract", }, modules: [ ClaimableERC721.module({ primarySaleRecipient: ..., }), BatchMetadataERC721.module(), ], });Interact with a modular contract
import { ClaimableERC721 } from "thirdweb/modules"; const contract = getContract({ client, chain, address, }); const transaction = ClaimableERC721.mint({ contract, to: account.address, quantity: 1, }); await sendTransaction({ transaction, account, });
Patch Changes
-
#4444
9cefe5fThanks @edwardysun! - Add buyWithCrypto testMode in useSendTransaction -
#4447
f0d0f37Thanks @jnsdls! - fix baseURI extraction logic -
#4435
e7bf498Thanks @edwardysun! - Add testMode to buyWithCrypto pay options -
#4345
fa6809dThanks @kien-ngo! - Add ERC1155 getOwnedTokenIds + more tests -
#4450
775ab6dThanks @MananTank! - Add options for hiding buttons on details modal on useWalletDetailsModal -
#4443
498d543Thanks @MananTank! - Fix getFunctionId -
#4446
f39e1baThanks @gregfromstl! - Improve React Query caching performance
5.51.0
Minor Changes
-
#4392
c5b9d1cThanks @jnsdls! - [Extensions] Erc20 Drop ClaimCondition enhancements -
#4391
f9c351cThanks @jnsdls! - [Extensions] Erc721 Drop ClaimCondition enhancements -
54f0294Thanks @jnsdls! - [Extensions] Erc1155 Drop ClaimCondition enhancements
Patch Changes
-
#4393
f383fc7Thanks @kumaryash90! - resolve implementation for matic proxy implementation slot -
a098224Thanks @jnsdls! - remove unusable singlephase claim condition extension
5.50.1
Patch Changes
-
#4388
82a30afThanks @edwardysun! - Update setting default source chain and token -
#4375
edb95d0Thanks @jnsdls! - [Extensions] expose permission detection logic -
#4390
d74e61bThanks @MananTank! - Fix Swap Fees layout in fees drawer in pay UI -
#4319
73e5dc7Thanks @joaquim-verges! - Fix direct payments to the same wallet -
#4382
9e8d3e6Thanks @MananTank! - Add props for hiding "Send", "Receive" and "Send" buttons in Connect Details Modal UI forConnectButtoncomponent. By default, all buttons are visible in the modal.<ConnectButton detailsModal={{ hideSendFunds: false, hideReceiveFunds: true, hideBuyFunds: false, }} /> -
#4363
066aedeThanks @kien-ngo! - Allow to specify "from" and "to" props for the ClaimButton
5.50.0
Minor Changes
- #4334
6432e8dThanks @gregfromstl! - Adds L2 ENS name resolution
Patch Changes
-
#4270
5475551Thanks @gregfromstl! - Allow accepting a string for signature mint UIDs -
#4336
8b137f0Thanks @gregfromstl! - Hide in-app wallet connection in Pay Embed -
#4344
915e7fbThanks @kien-ngo! - Fix merkletree proof for Drop contracts -
#4343
a2f2c7eThanks @joaquim-verges! - Better error message when smart wallet connection fails due to rpc error -
#4327
bdb814dThanks @kien-ngo! - Fix nft approval for CreateDirectListingButton
5.49.0
Minor Changes
-
#4179
42d5c65Thanks @kien-ngo! - Add NFT prebuilt componentsimport { getContract } from "thirdweb"; import { NFT } from "thirdweb/react"; const contract = getContract({ address: "0x...", chain: ethereum, client: yourThirdwebClient, }); <NFT contract={contract} tokenId={0n}> <Suspense fallback={"Loading media..."}> <NFT.Media /> </Suspense> </NFT>;
Patch Changes
-
#4316
a65bb88Thanks @gregfromstl! - Include from address in in-app wallet transactions -
#4322
3e425ecThanks @gregfromstl! - Fix accessibility warnings -
#4317
1e70bbfThanks @gregfromstl! - Automatic retries for React Native in-app wallet logins -
#4306
9d6eb27Thanks @gregfromstl! - Fix programmatic deployments with smart accounts -
#4328
c97b1a5Thanks @edwardysun! - Update default source chain selection in PayEmbed
5.48.3
Patch Changes
-
#4264
b661ce7Thanks @kien-ngo! - Add extension for deploying VoteERC20 contract -
#4291
f346bb8Thanks @joaquim-verges! - ZkSync gasPubPerData increase for faster inclusion -
#4271
fcf8f89Thanks @alecananian! - Added overrides for connected wallet name and avatar in details button and modal -
#4295
db2ee85Thanks @gregfromstl! - Adds prop to require TOS or Privacy Policy acceptance before connecting to an in-app wallet -
#4106
c116597Thanks @joaquim-verges! - Support Entrypoint v0.7 for smart accounts -
#4307
dc79abdThanks @MananTank! - FixNFTMetadatatype - removeidproperty -
#4294
09bb251Thanks @ElasticBottle! - fix: ecosystem wallet signing modal should be clickable even when there's a pop up beneath -
#4286
dda57eaThanks @edwardysun! - No retries on permanent failures on Pay quotes
5.48.2
Patch Changes
-
#4250
41fbdafThanks @gregfromstl! - Add overload tosignMessageto pass an account rather than a private keyimport { signMessage } from "thirdweb/utils"; await signMessage({ message: "Hello, world!", account, }); -
#4267
7a2de70Thanks @alecananian! - AddedhideSwitchWalletparam to wallet details modal -
#4224
1405598Thanks @IDubuque! - Added support for direct transfers in Pay -
#4269
120d61fThanks @MananTank! - Show wallet balance with upto 5 decimal places in UI components -
#4274
a0aea23Thanks @gregfromstl! - Fix popup and window auth modes conflicting on firefox -
#4244
44e8e7bThanks @MananTank! - - Pay UI now selects the fiat currency based on the user's location / timezone- Add Japanese Yen (JPY) as a supported fiat currency for thirdweb Pay
- Added option to configure the default fiat currency for the Pay UI
Examples
<PayEmbed client={client} payOptions={{ buyWithFiat: { prefillSource: { currency: "CAD", }, }, }} /><ConnectButton client={client} detailsModal={{ payOptions: { buyWithFiat: { prefillSource: { currency: "JPY", }, }, }, }} />const sendTransaction = useSendTransaction({ payModal: { buyWithFiat: { prefillSource: { currency: "CAD", }, }, }, });<TransactionButton transaction={() => someTx} payModal={{ buyWithFiat: { prefillSource: { currency: "CAD", }, }, }} > some tx </TransactionButton>
5.48.1
Patch Changes
-
#4237
b38308dThanks @gregfromstl! - Enable external redirects for electron supportimport { authenticate } from "thirdweb/wallets/in-app"; const result = await authenticate({ client, strategy: "google", redirectUrl: "https://example.org", mode: "window", }); -
#4213
6c87d7bThanks @MananTank! - Fix "conditionally rendereed hooks error" in various components inthirdweb/reactandthirdweb/react-native -
#4214
0a1bce8Thanks @gregfromstl! - Fix custom image metadata on in-app wallets -
#4239
d93ec63Thanks @joaquim-verges! - Fix passkey domain not being respected on login
5.48.0
Minor Changes
-
#4191
42cdc3aThanks @gregfromstl! - Updates connect modal styles -
#4124
246701dThanks @gregfromstl! - Adds the ability to link a wallet in the Connect UI
Patch Changes
-
#4128
ef9cc55Thanks @kien-ngo! - Expose max() & min() util methods for bigints -
#4172
cb591aaThanks @joaquim-verges! - Only show pay modal if active wallet does not have enough funds for a paid transaction -
#4177
bd46699Thanks @kien-ngo! - Expsose GaslessConfigs typeconst gaslessOptions: GaslessOptions = { provider: "engine", relayerUrl: "https://thirdweb.engine-***.thirdweb.com/relayer/***", relayerForwarderAddress: "0x...", }; -
#4211
4abf7a7Thanks @MananTank! - Fix Conditionally rendered hook error when Buying funds using fiat
5.47.1
Patch Changes
-
#4173
7778063Thanks @gregfromstl! - Update Blobbie appearance -
#4154
9133b45Thanks @kien-ngo! - Update tsdocs for Vote extensions -
#4150
a43907eThanks @kien-ngo! - Lens's resolveAddress for sending crypto with lens handles -
#4163
fc8daaaThanks @kien-ngo! - Export util method: isBytes -
#4165
43f9319Thanks @kien-ngo! - Add GaslessOptions to useSendAndConfirmTransaction
5.47.0
Minor Changes
Patch Changes
-
#4120
8253524Thanks @gregfromstl! - Throw error when no encryption key is provided to custom auth -
#4159
cf4443aThanks @gregfromstl! - Improves the Blobbie algorithm -
#4126
13764f1Thanks @gregfromstl! - Connect UI cosmetic improvements -
#4157
355795aThanks @gregfromstl! - Fix text wrapping on Connect Button -
#4160
e0dcc64Thanks @gregfromstl! - Fix connect button border on firefox browser -
#4156
f0d6e34Thanks @gregfromstl! - Fix smart contract wallet signature validation on older chains
5.46.1
Patch Changes
- #4099
79260c8Thanks @WyattMufson! - Add new auth fields to support redirect in web and electron applications
5.46.0
Minor Changes
-
#4045
3c32b99Thanks @gregfromstl! - Update SIWE interfaceimport { inAppWallet, createWallet } from "thirdweb/wallets"; import { mainnet } from "thirdweb/chains"; const rabby = createWallet("io.rabby"); const wallet = inAppWallet(); const account = await wallet.connect({ client: MY_CLIENT, strategy: "wallet", wallet: rabby, chain: mainnet, }); -
#4077
ef9c7dfThanks @joaquim-verges! - Passkey login support in React Native
Patch Changes
-
#4033
141fd53Thanks @kien-ngo! - Add more Split contract extensions -
#3998
db8695dThanks @kien-ngo! - Add NFT extension: updateTokenURI -
#4101
03a809aThanks @MananTank! - AddonPurchaseSuccesscallback toPayEmbed,ConnectButton,TransactionButtonanduseSendTransactionand gets called when user completes the purchase using thirdweb pay.<PayEmbed client={client} payOptions={{ onPurchaseSuccess(info) { console.log("purchase success", info); }, }} /><ConnectButton client={client} detailsModal={{ payOptions: { onPurchaseSuccess(info) { console.log("purchase success", info); }, }, }} /><TransactionButton transaction={...} payModal={{ onPurchaseSuccess(info) { console.log("purchase success", info); }, }} > Some Transaction </TransactionButton>const sendTransaction = useSendTransaction({ payModal: { onPurchaseSuccess(info) { console.log("purchase success", info); }, }, }); -
#4047
7a68e3bThanks @gregfromstl! - Switch to the proper chain prior to signing SIWE payloads -
#4092
0ca1a79Thanks @gregfromstl! - UI cosmetic improvements -
#4091
b9ed753Thanks @MananTank! - Fix connection with Safe using WalletConnect link -
#4070
e5a046eThanks @kien-ngo! - Add contract util method:getCompilerMetadata()
5.45.1
Patch Changes
5.45.0
Minor Changes
-
#3870
bbb4f1cThanks @gregfromstl! - Adds useProfiles hook to fetch linked profiles for the current wallet.import { useProfiles } from "thirdweb/react"; const { data: profiles } = useProfiles(); console.log("Type:", profiles[0].type); // "discord" console.log("Email:", profiles[0].email); // "[email protected]" -
#3870
bbb4f1cThanks @gregfromstl! - Adds SIWE authentication on in-app walletsimport { inAppWallet } from "thirdweb/wallets"; const wallet = inAppWallet(); const account = await wallet.connect({ client, walletId: "io.metamask", chainId: 1, // can be anything unless using smart accounts });This will give you a new in-app wallet, not the injected provider wallet.
-
#3797
f74d523Thanks @gregfromstl! - Wallets can now add additional profiles to an account. Once added, any connected profile can be used to access the same wallet.const wallet = inAppWallet(); await wallet.connect({ strategy: "google" }); const profiles = await linkProfile(wallet, { strategy: "discord" });Both the Google and Discord accounts will now be linked to the same wallet.
If the Discord account is already linked to this or another wallet, this will throw an error.
You can retrieve all profiles linked to a wallet using the
getProfilesmethod.import { inAppWallet, getProfiles } from "thirdweb/wallets"; const wallet = inAppWallet(); wallet.connect({ strategy: "google" }); const profiles = getProfiles(wallet);This would return an array of profiles like this:
[ { type: "google", details: { email: "[email protected]", }, }, { type: "discord", details: { email: "[email protected]", }, }, ]; -
#3995
5367eedThanks @kien-ngo! - Add thirdweb Split contract extensions -
#3993
c31f25cThanks @kien-ngo! - Add thirdweb Vote contract extensions -
#3870
bbb4f1cThanks @gregfromstl! - Adds account linking to the Connect UI
Patch Changes
-
#4029
b0494f6Thanks @gregfromstl! - Fix SIWE auth in ecosystem wallets -
#4015
05cee23Thanks @gregfromstl! - Fix native AutoConnect -
#3997
dd7d28cThanks @gregfromstl! - Improved serializeTransaction interface to include separate signature input (maintains backwards compatibility) -
#4014
419873aThanks @kien-ngo! - Small fix for ethers5 adapter -
#3986
4d0e00aThanks @jarrodwatts! - add abstract l2 chain definition (ZKSync ZK stack) -
#4008
7cba594Thanks @MananTank! - Fix "All Wallets" not shown by default in Pay UI when trying to connect a new wallet -
#3989
a4bc285Thanks @MananTank! - Update the chain object in connection manager and wallets when chain objects passed to UI components are updated. -
#3996
2b4629bThanks @0xScratch! - Added Fraxtal and Mode Testnets to the chain-definitions -
#4032
c953c3fThanks @alecananian! - Addedenabledparam touseWalletBalancehook
5.44.1
Patch Changes
-
#3976
358a757Thanks @gregfromstl! - Fix wallet info retrieval for adapter wallets -
#3963
2e3c5e9Thanks @jnsdls! - handle switching accounts inside a connected wallet in SIWE auth states -
#3934
d7e5930Thanks @jxom! - Fix 6492 signature verification for undeployed accounts -
#3894
dc86fa2Thanks @IDubuque! - updated pay interface for onramp + gas
5.44.0
Minor Changes
-
c9e14e3Thanks @jnsdls! - Adds telegram login option for in-app walletsimport { inAppWallet } from "thirdweb"; const wallet = inAppWallet(); await wallet.connect({ strategy: "telegram", });
Patch Changes
-
c9e14e3Thanks @jnsdls! - Added Celo Alfajores Testnet within the chain-definitions -
c9e14e3Thanks @jnsdls! - Addtypefield onDirectListingandEnglishAuctiontypes.
5.43.2
Patch Changes
-
#3895
13d9741Thanks @joaquim-verges! - Add Korean and French Locale -
#3901
825ef23Thanks @joaquim-verges! - Handle gas free chains where baseFeePerGas is 0 -
#3903
306f3daThanks @gregfromstl! - Fix occasional iframe error when logging in with oauth
5.43.1
Patch Changes
-
#3896
3b49b18Thanks @gregfromstl! - Fix OTP validation in React Native Connect UI -
#3897
4463848Thanks @jnsdls! - fix "create" command requiring login
5.43.0
Minor Changes
-
#3881
e7d6161Thanks @kien-ngo! - Add CreateDirectListing button for Marketplace v3import { CreateDirectListingButton } from "thirdweb/react"; <CreateDirectListingButton contractAddress="0x..." // contract address for the marketplace-v3 chain={...} // the chain which the marketplace contract is deployed on // These props below are the same props for `createListing` // to get the full list, check the docs link above tokenId={0n} assetContractAddress="0x..." // The NFT contract address whose NFT(s) you want to sell pricePerToken={"0.1"} // sell for 0.1 <native token> > Sell NFT </CreateDirectListingButton>
Patch Changes
-
#3885
6cd279bThanks @joaquim-verges! - Fix ethers5adapter transaction result nonces -
#3871
f702cf7Thanks @jnsdls! - temporarily disable CLI login -
#3882
4171f15Thanks @MananTank! - Improved error messages when connection management hooks used outside ThirdwebProvider -
#3880
5eb4955Thanks @MananTank! - Fix autoConnect for wallets that are connected from "All wallets" screen
5.42.0
Minor Changes
-
#3847
e27ebefThanks @kien-ngo! - Add prebuilt component: BuyDirectListingButton for Marketplace v3import { BuyDirectListingButton } from "thirdweb/react"; <BuyDirectListingButton contractAddress="0x..." // contract address of the marketplace v3 chain={...} // the chain which the marketplace contract is deployed on client={...} // thirdweb client listingId={100n} // the listingId or the item you want to buy quantity={1n} // optional - see the docs to learn more > Buy NFT </BuyDirectListingButton> -
#3857
d5e5467Thanks @gregfromstl! - Adds useChainMetadata to retrieve metadata for a chain such as name, icon, available faucets, block explorers, etc.import { useChainMetadata } from "thirdweb/react"; const { data: chainMetadata } = useChainMetadata(defineChain(11155111)); console.log("Name:", chainMetadata.name); // Sepolia console.log("Faucets:", chainMetadata.faucets); // ["https://thirdweb.com/sepolia/faucet"] console.log("Explorers:", chainMetadata.explorers); // ["https://sepolia.etherscan.io/"]
Patch Changes
-
#3846
cdb2970Thanks @kien-ngo! - Handle ERC20 approval for the ClaimButton -
#3843
91edae5Thanks @kien-ngo! - Expose multicall & erc1155:encodeSafeTransferFrom extension -
#3867
109575eThanks @gregfromstl! - Fix wallet social login button styling -
#3854
7ec421fThanks @kien-ngo! - Add util function: parseAbiParamsimport { parseAbiParams } from "thirdweb/utils"; const example1 = parseAbiParams( ["address", "uint256"], ["0x.....", "1200000"], ); // result: ["0x......", 1200000n] -
#3869
bd44ce9Thanks @joaquim-verges! - Export more wallet creation and connection types
5.41.0
Minor Changes
-
#3827
b0a303dThanks @gregfromstl! - Adds SIWF for in-app walletsawait wallet.connect({ strategy: "farcaster", client: CLIENT, });
Patch Changes
-
#3831
d775333Thanks @kien-ngo! - Expose ERC20 extension: getApprovalForTransaction -
#3845
b551b69Thanks @gregfromstl! - Restyles the View Assets Connect UI page -
#3817
b128530Thanks @MananTank! - Move connection manager creation to context instead of global singleton
5.40.0
Minor Changes
-
#3750
4a4a061Thanks @joaquim-verges! - New PayEmbed modes and revamp TransactionButton flowYou can now configure the PayEmbed component to build 3 different flows:
- Fund wallets: Inline component that allows users to buy any currency. (default)
<PayEmbed client={client} payOptions={{ mode: "fund_wallet", }} />- Direct payments: Take payments from Fiat or Crypto directly to your seller wallet.
<PayEmbed client={client} payOptions={{ mode: "direct_payment", paymentInfo: { sellerAddress: "0x...", chain: base, amount: "0.1", }, metadata: { name: "Black Hoodie (Size L)", image: "https://example.com/image.png", }, }} />- Transaction payments: Let your users pay for onchain transactions with fiat or crypto on any chain.
<PayEmbed client={client} payOptions={{ mode: "transaction", transaction: claimTo({ contract, tokenId: 0n, to: toAddress, }), metadata: nft?.metadata, }} />You can also configure the TransactionButton component to show metadata to personalize the transaction payment flow:
<TransactionButton transaction={() => { return transfer({ contract, amount: 10n, to: toAddress, }); }} payModal={{ metadata: { name: "Buy me a coffee", image: "https://example.com/image.png", }, }} /> -
#3822
3848327Thanks @gregfromstl! - Adds the ability to open OAuth windows as a redirect. This is useful for embedded applications such as telegram web apps.Be sure to include your domain in the allowlisted domains for your client ID.
import { inAppWallet } from "thirdweb/wallets"; const wallet = inAppWallet({ auth: { mode: "redirect", }, });
Patch Changes
-
#3813
6081ac7Thanks @kien-ngo! - Expose types: NFTInput and NFTMetadata -
#3815
87dc9a5Thanks @MananTank! - Allow clicking on other wallet when a wallet is connected and sign in is required inConnectEmbedcomponent.
5.39.0
Minor Changes
-
#3785
105e523Thanks @kien-ngo! - Add ClaimButton for claiming tokens from all thirdweb Drop contractsHigher level abstraction to claim tokens from all thirdweb Drop contracts
import { ClaimButton } from "thirdweb/react"; import { ethereum } from "thirdweb/chains"; <ClaimButton contractAddress="0x..." chain={ethereum} client={client} claimParams={{ type: "ERC721", quantity: 1n, }} > Claim now </ClaimButton>;
Patch Changes
-
#3792
5fabe66Thanks @MananTank! - handlenullvalue ofeffectiveGasPriceinsendTransactionmethod oftoEthersSigneradapter that throws error when trying to convert to BigNumber. This is causing issue in XDC Network (chain Id 50) and XDC Apothem testnet (chain id 51) -
#3804
cb616f7Thanks @joaquim-verges! - Fix gas estimation on arbitrum sepolia -
#3524
8599fbfThanks @kumaryash90! - Modular contracts deployment setup -
#3782
c82c524Thanks @joaquim-verges! - Allow overriding nonce for smart accounts -
#3801
a51f53fThanks @gregfromstl! - Fix RPC URL construction for chains -
#3805
5c9af85Thanks @jnsdls! - [performance] - fix rpc client reuse -
#3796
c51f785Thanks @joaquim-verges! - Handle polygon amoy gas station -
#3800
b15118aThanks @gregfromstl! - Minor style fixes on the Connect UI Send Funds page
5.38.0
Minor Changes
- #3766
9f555caThanks @kien-ngo! - Add more chains: Astria EVM Dusknet (912559), Blast Sepolia (168587773), Celo (42220), Cronos (25), Degen (666666666), Fantom Testnet (4002), Fantom (250), Frame Tesnet (68840142), Gnosis Chiado Testnet (10200), Gnosis (100), GodWoken (71402), GodWoken Testnet (71401), Hokum Testnet (20482050), Localhost (1337), Loot chain (5151706), Manta Pacific (169), Manta Pacific Testnet (3441005), Moonbeam (1284), Palm Testnet (11297108099), Palm (11297108109), Polygon zkEvm Testnet (1442), Polygon zkEVM (1101), Rari Testnet (1918988905), Rari chain (1380012617), Scroll Alpha Testnet (534353), Scroll Sepolia Testnet (534353), Scroll (534352), Xai Sepolia (37714555429), Xai Mainnet(660279), zk Candy Sepolia (302)
Patch Changes
-
#3767
11b2ad0Thanks @kien-ngo! - Expose roleMap and getRoleHash -
#3764
26d825bThanks @kien-ngo! - Add extension support for Lens Protocol -
#3779
d3c8302Thanks @gregfromstl! - Improved in-app wallet sign-in speed -
#3769
a9a3f0fThanks @gregfromstl! - Fix deterministic deploys with specified versions -
#3687
f082af0Thanks @kumaryash90! - Fix proxy resolution. Use implementation call in case of beacon.
5.37.0
Minor Changes
-
#3678
31ee4e5Thanks @ElasticBottle! - Add discord login as an option of thirdweb in app wallet and ecosystem wallet loginsimport { inAppWallet } from "thirdweb/wallets"; const wallet = inAppWallet(); const account = await wallet.connect({ client, chain, strategy: "discord", }); -
#3716
ec3405bThanks @gregfromstl! - Adds Discord login to the React Native SDK
Patch Changes
-
#3746
870be08Thanks @gregfromstl! - Update Connect UI tabs styling -
#3751
aba1266Thanks @joaquim-verges! - Handle minimum amount in buy to crypto flow -
#3762
6a94696Thanks @MananTank! - Fix Wallet switcher icon position in wallet details modal -
#3661
c6741b4Thanks @joaquim-verges! - Handle ERC20 transaction value in Pay components -
#3748
24bcee2Thanks @joaquim-verges! - Fix disconnect button color in light mode SIWE react native -
#3676
56b34ceThanks @kien-ngo! - Allow to add extra call data toprepareContractCall
5.36.0
Minor Changes
- #3718
6bda057Thanks @gregfromstl! - Adds transaction history page to connect modal UI
Patch Changes
-
#3730
db2cadfThanks @MananTank! - Update buffer calculation of transaction if gas estimation fails for Pay Modal -
#3735
6cc3038Thanks @joaquim-verges! - Add optional 'from' in readContract() -
#3719
05df89cThanks @joaquim-verges! - Add support for ERC20 paymaster for smart accounts -
#3728
0a5af48Thanks @MananTank! - Fix chain with custom RPC not used if the chain object is passed in thechainsprop toConnectButton,ConnectEmbedorPayEmbedcomponents.This also fixes dashboard not using custom chain's RPC since it passes the chain object via
chainsprop
5.35.0
Minor Changes
- #3709
73c74f1Thanks @gregfromstl! - Adds fetchProofsERCXX methods
Patch Changes
-
#3677
a3fb673Thanks @joaquim-verges! - Handle universal links on ios for coinbase wallet connection -
#3708
1a09f46Thanks @joaquim-verges! - Support auth in React Native -
#3689
6ad65e2Thanks @MananTank! - Addtypeprop forTransactionButton -
#3662
8e1a24aThanks @joaquim-verges! - Add recipient address to PayEmbed -
#3673
9f3fb7dThanks @joaquim-verges! - Fix account address override in smart wallet -
#3694
817a778Thanks @MananTank! - Fix Network Switcher only showing 1 search result -
#3681
3479117Thanks @kien-ngo! - Add Vietnamese locale for ConnectButton components -
#3707
f8f6790Thanks @gregfromstl! - Fix in-app wallet typed data signatures -
#3706
aadbd33Thanks @joaquim-verges! - Make client and chain mandatory in useWalletBalance -
#3688
7e416c0Thanks @MananTank! - Add queryOptions foruseWalletBalancehook -
#3659
eabb215Thanks @kien-ngo! - Add support for Zora1155 in ERC1155 > getOwned -
#3690
81751d3Thanks @MananTank! - Fix "add custom network" button not closing details modal -
#3685
aee7aefThanks @kien-ngo! - Export utils method: getClaimParams for thirdweb Drop contracts -
#3712
c5b9740Thanks @farhanW3! - updated getUserOpReceipt & waitForUserOpReceipt to use a decodeRevertReason flag. Updated example for createUnsignedUserOp & signUserOp. Exposed getPaymasterAndData for Paymaster -
#3704
baec85fThanks @joaquim-verges! - Fix error message not showing on reverts
5.34.3
Patch Changes
- #3657
3d14162Thanks @joaquim-verges! - Fix extension contract detection
5.34.2
Patch Changes
-
#3642
f239d09Thanks @kien-ngo! - MediaRenderer: only render video poster if it's an image -
#3656
77d7dd1Thanks @joaquim-verges! - Fix autoconnect for phone number sign in on RN -
#3655
9dd7b4dThanks @MananTank! - Ensure all wallet's account address is checksum encoded
5.34.1
Patch Changes
-
#3634
4d24208Thanks @MananTank! - Fix random behavior when connecting smart wallet where it sometimes does not add the personal wallet in the list of connected wallets -
#3637
02fff7dThanks @joaquim-verges! - Loosen react native peer dep version restriction
5.34.0
Minor Changes
-
#3613
d253badThanks @gregfromstl! - Adds verifyTypedData and verifyHash functions with full wallet interoperability -
#3619
325416eThanks @gregfromstl! - Adds blast preset -
#3585
f6ff5a7Thanks @gregfromstl! - Adds NFTs to the connect modal, specified with supportedNFTs -
#3602
21aaec8Thanks @jnsdls! - [erc20] - addedtransferBatch()extension -
#3622
95c9d3dThanks @joaquim-verges! - Expose smart wallet and bundler utilities
Patch Changes
-
#3633
636fe40Thanks @joaquim-verges! - Fix uploading files on mobile with directory -
#3621
5470dd9Thanks @MananTank! - Pay UI improvements- Only perform token amount rounding when rendering the amount - not in state
- increase the rendered decimals for token amount whereever we have enough space available in UI
- Fix "Minimum required amount" error message for Buy with fiat when token amount is so low that server calculates its value as 0 USD - which prevents calculation of minimum required token amount
- Show token symbol in Minimum required amount error message
-
#3603
342d74eThanks @jnsdls! - export JWT utils, fix naming ofdecodeJWT -
#3611
f103a90Thanks @MananTank! - Fix Transaction Button callbacks not called when tx is executed in Pay Modal -
#3630
41b9a53Thanks @MananTank! - Fix Search in Network Selector screen
5.33.0
Minor Changes
- #3609
9faa8fcThanks @gregfromstl! - Adds ERC-6942 utilities and verification compatibility. See ERC-6942 for more information.
Patch Changes
-
#3597
34b9bbeThanks @gregfromstl! - Fix wallet disconnect events not being emitted -
#3608
2ab8b3cThanks @MananTank! - Set selection data on wallet selection with no custom selection UI - This fixes UI bug in Connect wide modal that has both inApp and ecosystem wallets added
5.32.3
Patch Changes
- #3605
c261921Thanks @joaquim-verges! - Fix inapp wallet layout reset
5.32.2
Patch Changes
-
#3599
eac126bThanks @joaquim-verges! - Respect title and theme colors in react native modals -
#3590
106c013Thanks @jnsdls! - fix ethers5 adapter populateTransaction for sendTransaction -
#3600
e598f46Thanks @joaquim-verges! - Force legacy transactions on Vanguard chain -
#3591
e22b308Thanks @MananTank! - Various Pay UI improvements -
#3583
229561eThanks @joaquim-verges! - Animated connecting states for React Native -
#3576
687328aThanks @kumaryash90! - Blockscout v2 contract verification -
#3593
e0f4e5aThanks @joaquim-verges! - Fix input validation in Send Funds modal -
#3598
e5cccb9Thanks @MananTank! - Fix Send Transaction UI
5.32.1
Patch Changes
-
#3582
9651b96Thanks @joaquim-verges! - ExposewaitForUserOpReceipt()helper function -
#3397
49ae575Thanks @jnsdls! - improve loading performance for chains -
#3577
6b919e1Thanks @gregfromstl! - Show ecosystem wallet branding on wide modal layout
5.32.0
Minor Changes
-
#3570
1a2e056Thanks @joaquim-verges! - ConnectButton and ConnectEmbed components for React NativeConnectButton and ConnectEmbed components for React Native
Same behavior as the web, you can use these prebuilt components to quickly provide wallet connection flows to your users.
You can use it the same way as you would in the web, with the same supported properties and configuration flags.
import { ConnectButton } from "thirdweb/react"; <ConnectButton client={client} />and same for ConnectEmbed
import { ConnectEmbed } from "thirdweb/react"; <ConnectEmbed client={client} />
Patch Changes
-
#3574
f526d73Thanks @MananTank! - * Fix broken inApp wallet connection flow in Compact size Connect UI- Fix missing back button in inApp wallet connection flow in Compact size Connect UI
-
#3575
5953131Thanks @MananTank! - Reset wallet selection data on wallet selection -
#3569
e5f772dThanks @edwardysun! - Support localhost as a domain override option for the Pay service
5.31.1
Patch Changes
-
#3558
54c1789Thanks @gregfromstl! - Fix recommended wallet ordering -
#3562
98a9e22Thanks @gregfromstl! - Fix coinbase wallet connections on vite
5.31.0
Minor Changes
-
#3543
6704fa8Thanks @gregfromstl! - Adds the ability to override transaction properties in mintTo functions -
#3552
31775dcThanks @gregfromstl! - Adds storage unpin function -
#3533
e4b6391Thanks @gregfromstl! - Adds StoredTransaction type -
#3534
cf2d1b8Thanks @gregfromstl! - Adds shortenHex utility
Patch Changes
-
#3529
18c3d3bThanks @gregfromstl! - Do not log auto connect failure "errors" -
#3541
27daf22Thanks @gregfromstl! - Fix in-app wallet transcation execution via WalletConnect -
#3539
85f2f6dThanks @gregfromstl! - Fix WalletConnect client disconnections -
#3536
8bfba81Thanks @maciekzygmunt! - Add Linea & Linea Sepolia chain config files -
#3542
517ecffThanks @gregfromstl! - Rename Sepolia native currency symbol to ETH -
#3545
7e24260Thanks @gregfromstl! - Fix errors thrown when connecting with an open access ecosystem
5.30.0
Minor Changes
-
#3451
2244631Thanks @gregfromstl! - AddsgetTransactionStoreto retrieve a transaction store for a given address -
#3381
6429accThanks @gregfromstl! - Adds support for Dawn wallet -
#3270
b24e9b2Thanks @gregfromstl! - Adds ecosystemWallet to TS SDKUsage
import { ecosystemWallet } from "thirdweb/wallets"; const wallet = ecosystemWallet("ecosystem.hooli", { partnerId: "pied-piper", }); -
#3428
fab5cd4Thanks @jnsdls! - Adds watchAsset support in injected wallet accounts -
#3428
fab5cd4Thanks @jnsdls! - - AddpurchaseDataparameter ingetBuyWithFiatQuoteandgetBuyWithCryptoQuotefunctions and UI components to store Extra details for the purchase which can be retrieved later via the status API or Webhook- Add a required
fromAddressparameter ingetBuyWithFiatQuote
- Add a required
-
#3429
a3a4008Thanks @gregfromstl! - Adds WalletConnect disconnect screen -
#3428
fab5cd4Thanks @jnsdls! - AddedonDisconnectoption inuseWalletDetailsModal'sopenmethod to add a callback when the user disconnects the wallet by clicking the disconnect button in the wallet details modal.import { useWalletDetailsModal } from "thirdweb/react"; function Example() { const detailsModal = useWalletDetailsModal(); return ( <button onClick={() => { detailsModal.open({ client, onDisconnect: ({ wallet, account }) => { console.log("disconnected", wallet, account); }, }); }} > Show wallet details </button> ); }onDisconnectprop ofConnectButtonnow gets called with the disconnectedwalletandaccountas arguments<ConnectButton onDisconnect={({ wallet, account }) => { console.log("disconnected", wallet, account); }} /> -
#3270
b24e9b2Thanks @gregfromstl! - Adds ecosystem wallet UI
Patch Changes
-
#3444
fe77516Thanks @gregfromstl! - Adds wallet connect functions to react native -
#3428
fab5cd4Thanks @jnsdls! - Fix mobile Wallet Connect connection flow -
#3428
fab5cd4Thanks @jnsdls! - Add updateMetadata extension for Edition Drop (DropERC1155) -
#3428
fab5cd4Thanks @jnsdls! - Fix hex-based signatures for in-app wallets -
#3428
fab5cd4Thanks @jnsdls! - - Fix ConnectButton not able to connect Unknown injected wallet provider + Fix Wallet Icon + Fix AutoConnect -
#3449
eaa5093Thanks @jnsdls! - [internals] refactor context usage in connect wallet UI -
#3428
fab5cd4Thanks @jnsdls! - Fix uploadMobile function not respecting bundleId -
#3421
02a70b9Thanks @MananTank! - Pay UI improvements - Break down the complex screen into multiple screens each prompting the user for a single actionFix PayEmbed Modal title alignment
-
#3513
c330d0dThanks @gregfromstl! - resolveName returns null if no ENS exists for an address -
#3443
ea46c70Thanks @kumaryash90! - Fix EIP155 check for create2 factory deployment -
#3428
fab5cd4Thanks @jnsdls! - Fix React warning when clicking copy address button and layout shift -
#3521
16ea2bcThanks @MananTank! - Fix wallet app not opening when using ConnectButton inside an iframe -
#3465
70b31ddThanks @iamcryptofennec! - Fix error when Switching to an unknown network in wallet when connected using WaletConnectFix Network Selector not closed sometimes when Network switch is successful when connected using WalletConnect
-
#3481
8807042Thanks @kien-ngo! - Export getClaimConditionById for Drop1155 -
#3428
fab5cd4Thanks @jnsdls! - Fixed return type for useConnectModal.connect
5.29.6
Patch Changes
-
#3366
9dd1b5aThanks @joaquim-verges! - Fix sign raw message through ethers 5/6 adapters -
#3369
b808652Thanks @jnsdls! - do not consider localhost a thirdweb url (except for dev mode)
5.29.5
Patch Changes
-
#3356
2d7ebe2Thanks @joaquim-verges! - Fix ConnectButton theming prop -
#3364
7304c5bThanks @joaquim-verges! - Respect coinbase wallet create settings when preloading the provider -
#3347
a9ce10fThanks @kien-ngo! - Add ERC721 extension: updateMetadata
5.29.4
Patch Changes
- #3345
79e6a04Thanks @joaquim-verges! - Fix react native inAppWallet creation
5.29.3
Patch Changes
-
#3329
c94bcd5Thanks @joaquim-verges! - Dynamically import coinbase sdk to avoid cloudflare bundler issues -
#3341
1c533efThanks @joaquim-verges! - Fix transaction button not respecting theme prop -
#3298
ffaff74Thanks @joaquim-verges! - refactor exports to handle native vs non-native dependencies -
#3330
9cf3a1dThanks @joaquim-verges! - Fix coinbase wallet popup sometimes not opening on safari + improve inAppWallet web performance
5.29.2
Patch Changes
-
#2880
7768067Thanks @kumaryash90! - Modular contract publish and deploy setup -
#3318
fb6a07dThanks @jnsdls! - add missing erc4337 extensions
5.29.1
Patch Changes
-
#3290
b248afcThanks @alecananian! - Fixed Connect modal title not using custom title and icon in compact mode -
#3292
132b3cbThanks @alecananian! - Updated theConnectButtonlabelprop to be of typeReactNode -
#3305
e7ba698Thanks @gregfromstl! - Fix default sale and royalty recipients for signature mints
5.29.0
Minor Changes
-
#3273
7afd2daThanks @gregfromstl! - Adds options refetchInterval and retry params to useReadContract -
#3231
dbf74aaThanks @joaquim-verges! - TransactionButton react native implementation -
#3271
3a1fd98Thanks @joaquim-verges! - Align inAppWallet secret sharing implementation with web and previous RN SDK -
#3229
e7b9b9fThanks @MananTank! - AdduseWalletDetailsModalhook to open Wallet Details Modal without using<ConnectButton />componentimport { createThirdwebClient } from "thirdweb"; import { useWalletDetailsModal } from "thirdweb/react"; const client = createThirdwebClient({ clientId: "<your_client_id>", }); function Example() { const { open } = useWalletDetailsModal(); function handleClick() { open({ client, theme: "light" }); } return <button onClick={handleClick}> Show Wallet Details </button>; }
Patch Changes
-
#3278
5698b0cThanks @0xFirekeeper! - [v4 & v5] zkCandy Sepolia AA Support -
#3263
f2004b5Thanks @gregfromstl! - Add potential error message for eip155 failure -
#3266
e763aceThanks @joaquim-verges! - Fix sign typed data with inAppWallet when the domain contains a salt param -
#3264
3948f43Thanks @MananTank! - - Remove the feature that sets another connected wallet as active when disconnecting the current active wallet.- Do not save personal wallet as a separate wallet in connected wallets list.
-
#3256
923a5ecThanks @gregfromstl! - Automatic retries on watchContractEvents -
#3280
7dec4d0Thanks @MananTank! - Fix in-app wallet sending another verification code on window focus when using ConnectEmbed.Fix the underlying issue of
useAutoConnectrunning again on window focus.Add
refetchOnWindowFocus: falseon few moreuseQueryinstances to avoid unnecessary refetches -
#3235
824a631Thanks @gregfromstl! - Adds EIP-5792 hook exports to thirdweb/react -
#3241
37ec4caThanks @jnsdls! - fix ipfsresolveSchemebug for v1 ipfs schemes -
#3240
d488223Thanks @MananTank! - Fix custom theme not used in ConnectEmbed loading screen -
#3251
ce45a79Thanks @MananTank! - Allow selecting fiat currency in Pay UI
5.28.0
Minor Changes
-
#3198
ca31a6cThanks @gregfromstl! - Exports toSerializableTransaction to convert preparedTransaction into a fully serializable transaction. Exports estimateGasCost to estimate the gas cost of a transaction in ether and wei. Exports getGasPrice to get the currect gas price for a chain.toSerializableTransactionimport { prepareTransaction, toSerializableTransaction } from "thirdweb"; const transaction = await prepareTransaction({ transaction: { to: "0x...", value: 100, }, }); const serializableTransaction = await toSerializableTransaction({ transaction, }); account.sendTransaction(serializableTransaction);estimateGasCostimport { estimateGasCost } from "thirdweb"; const gasCost = await estimateGasCost({ transaction });getGasPriceimport { getGasPrice } from "thirdweb"; const gasPrice = await getGasPrice({ client, chain });
Patch Changes
-
#3207
e7443edThanks @MananTank! - Fixes #3204 - Account methods not properly updated when account is changed in wallet -
#3226
58d14c9Thanks @joaquim-verges! - Add option to choose the contract type for erc1155/generateMintSignature -
#3227
043f0daThanks @joaquim-verges! - Better gas estimation for opBNB mainnet & testnet -
#3201
0328bc8Thanks @joaquim-verges! - Fallback to default metadata on failure to fetch erc20 metadata
5.27.0
Minor Changes
-
#3181
a346111Thanks @gregfromstl! - Adds headless functions for creating and managing a WalletConnect session with a connected walletcreateWalletConnectClientimport { createWalletConnectClient } from "thirdweb/wallets/wallet-connect"; createWalletConnectClient({ client: client, wallet: wallet, onConnect: (session: any) => { alert("Connected"); }, onDisconnect: (session: any) => { alert("Disconnected"); }, });createWalletConnectSessionimport { createWalletConnectSession } from "thirdweb/wallets/wallet-connect"; createWalletConnectSession({ walletConnectClient: wcClient, uri: "wc:...", });getWalletConnectSessionsimport { getWalletConnectSession, type WalletConnectSession, } from "thirdweb/wallets/wallet-connect"; const sessions: WalletConnectSession[] = await getWalletConnectSessions();disconnectWalletConnectClientimport { disconnectWalletConnectClient } from "thirdweb/wallets/wallet-connect"; disconnectWalletConnectClient({ session, walletConnectClient: wcClient }); -
#3105
51e7adaThanks @joaquim-verges! - First party support for zkSync native account abstractionYou can now use smart accounts on zkSync and zkSync sepolia without any extra setup.
const wallet = smartWallet({ chain: zkSync, sponsorGas: true, }); const smartAccount = await wallet.connect({ client, personalAccount, }); // now your can perform transactions normally, gas will be sponsored sendTransaction({ transaction, account: smartAccount }); -
#3105
51e7adaThanks @joaquim-verges! - ZkSync transaction support
Patch Changes
- #3195
3f66945Thanks @gregfromstl! - FixestimateGastype resolution
5.26.0
Minor Changes
-
#3161
b569eb4Thanks @gregfromstl! - Adds waitForBundle function to await a sendCalls bundle's complete confirmation.Usage
import { waitForBundle } from "thirdweb/wallets/eip5792"; const result = await waitForBundle({ client, chain, wallet, bundleId: "0x123...", }); -
#3161
b569eb4Thanks @gregfromstl! - Adds EIP-5792 react hooksuseSendCallsuseSendCallswill automatically revalidate all reads from contracts that are interacted with.import { useSendCalls } from "thirdweb/react"; const sendTx1 = approve({ contract: USDT_CONTRACT, amount: 100, spender: "0x33d9B8BEfE81027E2C859EDc84F5636cbb202Ed6", }); const sendTx2 = approve({ contract: USDT_CONTRACT, amount: 100, spender: "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709", }); const { mutate: sendCalls, data: bundleId } = useSendCalls({ client }); await sendCalls({ wallet, client, calls: [sendTx1, sendTx2], });Await the bundle's full confirmation:
const { mutate: sendCalls, data: bundleId } = useSendCalls({ client, waitForResult: true, }); await sendCalls({ wallet, client, calls: [sendTx1, sendTx2], });Sponsor transactions with a paymaster:
const { mutate: sendCalls, data: bundleId } = useSendCalls(); await sendCalls({ client, calls: [sendTx1, sendTx2], capabilities: { paymasterService: { url: `https://${CHAIN.id}.bundler.thirdweb.com/${client.clientId}`, }, }, });useCapabilitiesimport { useCapabilities } from "thirdweb/react"; const { data: capabilities, isLoading } = useCapabilities();useCallsStatusimport { useCallsStatus } from "thirdweb/react"; const { data: status, isLoading } = useCallsStatus({ bundleId, client });
Patch Changes
-
#3178
3dca028Thanks @joaquim-verges! - Fix gas estimation in transaction button -
#3187
874747bThanks @joaquim-verges! - Upgrade to latest coinbase wallet sdk -
#3186
123275bThanks @gregfromstl! - Catch any errors thrown while polling block numbers
5.25.1
Patch Changes
- #3169
f8cad77Thanks @joaquim-verges! - Mark coinbase mobile wallet as optional dep
5.25.0
Minor Changes
-
#3140
fc1b658Thanks @gregfromstl! - Show in-app wallet users an option to export their private key. Enabled by default.Usage
To hide the private key export:
import { inAppWallet } from "thirdweb/wallets"; const wallet = inAppWallet({ hidePrivateKeyExport: true, }); -
#3154
99d11bbThanks @gregfromstl! - Adds the ability to copy the wallet connect connection link as an alternative to scanning the QR code -
#3150
9c417d9Thanks @gregfromstl! - Adds onDisconnect callback to connect buttonUsage
<ConnectButton client={THIRDWEB_CLIENT} onDisconnect={() => console.log("disconnect")} theme={theme === "light" ? "light" : "dark"} />
Patch Changes
-
#3162
b9b185bThanks @joaquim-verges! - Add support for CB wallet in react native -
#3151
8b606b5Thanks @joaquim-verges! - Better handling for multiple accounts connected -
#3144
c1d3a5aThanks @joaquim-verges! - Fix resolveScheme for native apps -
#3153
3b03cd0Thanks @gregfromstl! - Improve the copy on the pending connection QR code screen in the connect modal
5.24.0
Minor Changes
-
#2943
2774d1fThanks @MananTank! - AddeduseConnectModalhook.Add
useConnectModalhook that allows you to open the Connect UI in a Modal to prompt the user to connect wallet.import { createThirdwebClient } from "thirdweb"; import { useConnectModal } from "thirdweb/react"; const client = createThirdwebClient({ clientId: "<your_client_id>", }); function Example() { const { connect, isConnecting } = useConnectModal(); async function handleConnect() { const wallet = await connect({ client }); // opens the connect modal console.log("connected to", wallet); } return <button onClick={handleConnect}> Connect </button>; } -
#3127
5031e44Thanks @gregfromstl! - Adds contract extensions for delayed reveal NFTs -
#3118
546d2dbThanks @gregfromstl! - Adds React Native to the thirdweb create CLI -
#3126
764bce2Thanks @joaquim-verges! - WalletConnect in React Native + useAutoConnect hookSupport WalletConnect compatible wallets in React Native
You can now connect any of the 300+ WalletConnect compatible mobile wallets from react native.
import { useConnect } from "thirdweb/react"; import { createWallet } from "thirdweb/wallets"; const { connect, isConnecting } = useConnect(); const connectMetamask = async () => { await connect(async () => { const wallet = createWallet("io.metamask"); await wallet.connect({ client, chain, }); return wallet; }); };Exposed
useAutoConnecthookYou can now use a hook to trigger autoconnecting to the last connected wallet
import { useAutoConnect } from "thirdweb/react"; const { data: autoConnected, isLoading } = useAutoConnect({ client, accountAbstraction, wallets, onConnect, timeout, }); -
#3125
c3a92bfThanks @gregfromstl! - AddeduseWalletBalance()hookAdds the
useWalletBalancehook. The hook will default to the native token balance if notokenAddressis provided.Usage
import { useWalletBalance } from "thirdweb/react"; const { data, isLoading, isError } = useWalletBalance({ chain: walletChain, tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", address: activeAccount?.address, client, });
Patch Changes
-
#3143
b72daa4Thanks @joaquim-verges! - Expose useWalletBalance in react native -
#3136
8b3e1e2Thanks @MananTank! - Prefer native wallet app link in android as well for WalletConnect session -
#3139
4eda306Thanks @gregfromstl! - Converts chainId hex to number for proper signTypedData type -
#3104
d021f4eThanks @MananTank! - Fix WalletConnect connection and show Retry option on connection failure/rejection
5.23.0
Minor Changes
-
#3103
a2275c4Thanks @gregfromstl! - Addsunstyledprop toTransactionButtonto remove default styles<TransactionButton transaction={() => {}} onSuccess={handleSuccess} onError={handleError} unstyled className="bg-white text-black rounded-md p-4 flex items-center justify-center" > Confirm Transaction </TransactionButton> -
#3083
5994685Thanks @MananTank! - Add support for deep-linking to Metamask app instead of using WalletConnect on mobile devices when using Connect UI (ConnectButton/ConnectEmbed) components.<ConnectButton client={client} wallets={[ createWallet("io.metamask", { preferDeepLink: true, }), ]} /> -
#3064
f55fa4cThanks @joaquim-verges! - In-app wallet support for react native
Patch Changes
-
#3085
a22eb5cThanks @MananTank! - FixonConnectprop called twice when connecting inApp wallet using Social login -
#3071
da63eabThanks @gregfromstl! - Fully clear in-app wallet user data when disconnecting -
#3063
f49f8caThanks @jnsdls! - ethers6 adapter: allow optional account to be passed tocontract.toEthersthat will automatically hook up the contract with a signer instead of provider -
#3079
f8e0a50Thanks @MananTank! - Fix PayEmbed not passing theme to ConnectButton -
#3107
57f7cd5Thanks @MananTank! - - Fix spacing issues in UI components- Revert color changes in UI components
-
#3067
b46173fThanks @gregfromstl! - Fix TransactionButton styles when overriding with custom styles -
#3080
7abbe03Thanks @MananTank! - Improved OTP input using input-otp library -
#3110
49aa6e4Thanks @joaquim-verges! - Phone number sign in for React Native -
#3082
9c9969eThanks @MananTank! - Add switch account button inConnectButtondetails button for MetaMask injected provider
5.22.1
Patch Changes
-
#3059
5a40c6aThanks @jnsdls! - fix losing state when looking at transactions during pay -
#3058
1698c40Thanks @gregfromstl! - Fixes MediaRenderer flashing its failed state while loading
5.22.0
Minor Changes
-
#3001
726618bThanks @gregfromstl! - Adds basic EIP-5792 support for wallets with functionsgetCapabilities,sendCalls,showCallsStatus,getCallsStatus.Example Usage
getCapabilitiesReturns the capabilities of the wallet according to EIP-5792.
import { getCapabilities } from "thirdweb/wallets/eip5792"; const capabilities = await getCapabilities({ wallet });sendCallsSends the given calls to the wallet for execution, and attempts to fallback to normal execution if the wallet does not support EIP-5792.
import { sendCalls } from "thirdweb/wallets/eip5792"; const transfer1 = transfer({ contract: USDC_CONTRACT, amount: 5000, to: "0x33d9B8BEfE81027E2C859EDc84F5636cbb202Ed6", }); const transfer2 = transfer({ contract: USDT_CONTRACT, amount: 1000, to: "0x33d9B8BEfE81027E2C859EDc84F5636cbb202Ed6", }); const bundleId = await sendCalls({ wallet, client, calls: [transfer1, transfer2], });showCallsStatusRequests the wallet to show the status of a given bundle ID.
import { showCallsStatus } from "thirdweb/wallets/eip5792"; await showCallsStatus({ wallet, bundleId });getCallsStatusReturns the status of the given bundle ID and the transaction receipts if completed.
import { getCallsStatus } from "thirdweb/wallets/eip5792"; const status = await getCallsStatus({ wallet, bundleId });
Patch Changes
-
#3048
cfe60d2Thanks @kien-ngo! - Improve error message forresolveAbiFromBytecode -
#3040
ce45475Thanks @gregfromstl! - Fixes caching issue when usingdefineChain -
#3037
f006429Thanks @joaquim-verges! - Updates for react native compatibility
5.21.0
Minor Changes
-
#3034
99fa2daThanks @gregfromstl! - Adds the ability to set a custom logo for the social login modalimport { inAppWallet } from "thirdweb/wallets"; const wallet = inAppWallet({ metadata: { image: { src: "https://example.com/logo.png", alt: "My logo", width: 100, height: 100, }, }, });
Patch Changes
5.20.0
Minor Changes
-
#2912
9caa9d7Thanks @joaquim-verges! - Updated Connect Modal UI + Passkey support- Passkey is now an auth option for
inAppWallet - Connect UI component UI refresh
const wallet = inAppWallet(); const hasPasskey = await hasStoredPasskey(client); await wallet.connect({ client, strategy: "passkey", type: hasPasskey ? "sign-in" : "sign-up", }); - Passkey is now an auth option for
-
#3018
5083464Thanks @gregfromstl! - Adds support for Core wallet extension
Patch Changes
-
#3024
eb29adfThanks @kien-ngo! - Add BSC mainnet and testnet -
#3004
145ff48Thanks @gregfromstl! - Updates shortenAddress to accept a string -
#3027
c08a5f2Thanks @gregfromstl! - Fixes chain metadata overrides
5.19.1
Patch Changes
- #3005
0006e54Thanks @joaquim-verges! - - useSendTransaction now switches chain if needed- Fix chain switching with in-app smart accounts
- Fix tx simulation for pay modal
5.19.0
Minor Changes
-
#2995
523cd1eThanks @gregfromstl! - Adds shortenAddress util -
#2997
cf7b6fcThanks @joaquim-verges! - addedcreateWalletAdapterhelper for interop with diff libraries
Patch Changes
- #3000
0ab1407Thanks @MananTank! - Fix WalletImage fallback icon
5.18.1
Patch Changes
5.18.0
Minor Changes
-
#2985
55081d8Thanks @jnsdls! - ### "Credit Card" payment method added in thirdweb Pay for Fiat on-rampPayEmbedcomponent added to embed thirdweb Pay UI<PayEmbed client={client} style={{ width: "360px", }} />thirdweb Pay UI customization available in
PayEmbedandConnectButtonpayOptionsprop inPayEmbedandConnectButton > detailsModalallows you custimize :- Enable/Disable payment methods
- Set default amount for Buy token
- Set Buy token/chain to be selected by default
- Set Source token/chain to be selected by default for Crypto payment method
- Disable editing for Buy token/chain/amount and Source token/chain
<ConnectButton client={client} detailsModal={{ payOptions: yourOptions, }} /> <PayEmbed client={client} detailsModal={{ payOptions: yourOptions, }} />Fiat on-ramp functions and hooks added
getBuyWithFiatQuote,useBuyWithFiatQuoteto get a quote for buying crypto with fiat currencygetBuyWithFiatStatus,useBuyWithFiatStatusto get status of "Buy with fiat" transactiongetBuyWithFiatHistory,useBuyWithFiatHistoryto get "Buy with fiat" transaction historygetPostOnRampQuote,usePostOnRampQuoteto get quote for swapping on-ramp token to destination token after doing on-ramp- Add
getBuyHistoryanduseBuyHistoryto get both "Buy with Fiat" and "Buy with Crypto" transaction history in a single list
5.17.0
Minor Changes
-
#2931
24c1670Thanks @joaquim-verges! - NewsmartAccountprop forinAppWallet()You can now convert an inAppWallet to a smart account simply by passing the
smartAccountprop.const wallet = inAppWallet({ smartAccount: { chain: sepolia, sponsorGas: true, }, }); await wallet.connect({ client, strategy: "google", });Note: beware that when toggling this flag on and off, you will get a different address (admin EOA vs smart account).
Patch Changes
-
#2959
3377fc9Thanks @MananTank! - Fix custom details button not opening the details modal inConnectButton -
#2955
fd1bd7eThanks @kien-ngo! - Add resolve method for Arweave URIs -
#2950
d4808fdThanks @gregfromstl! - Export getUserPhoneNumber and getAuthenticatedUser in-app wallet functions -
#2972
b1ca05eThanks @gregfromstl! - Fix issue with nonce set to 0 on toSerializableTransaction -
#2966
4de8802Thanks @gregfromstl! - Fixes issue with contract compilation in hardhat -
#2962
5b6b241Thanks @gregfromstl! - Makes multiple bugfixes on the deployPublishedContract code path- Contracts with no constructor can now deploy as abi inputs defaults to
[]when encoding the parameters - Properly finds contract versions when specified
- Defaults to standard deployment if no deployType is specified
- Contracts with no constructor can now deploy as abi inputs defaults to
-
#2965
ae10776Thanks @kien-ngo! - Add Arweave URI support to -
#2969
d660b6cThanks @gregfromstl! - Fixes deterministic deploys of contracts with no constructor -
#2958
02a0ca9Thanks @gregfromstl! - Fixes inconsistent block numbers when fetching events.getContractEventswill now properly handleblockRangeinteraction withfromBlockandtoBlockgiven they are both inclusive (i.e. it will only return logs for the number of blocks specified inblockRange).
5.16.1
Patch Changes
-
#2936
a692154Thanks @MananTank! - Fix OTP input entered by by clicking on “from messages” option in iOS safari -
#2934
bdb919fThanks @gregfromstl! - Updates the CLIcreatecommand to use the v5 templates for Next.js and ViteOther templates will be updated in the future from within their existing repositories
Removes React Native starters from the CLI menu Removes JS template support from the CLI
-
#2941
795a59eThanks @gregfromstl! - Can now optionally specifyblockRangeongetContractEventsin combination withtoBlockandfromBlock.Usage
Specify a
blockRange, defaultingtoBlockto the current block number.await getContractEvents({ contract: myContract, blockRange: 123456n, events: [preparedEvent, preparedEvent2], });Specify a block range with
toBlock.await getContractEvents({ contract: myContract, toBlock: endBlock, blockRange: 123456n, events: [preparedEvent, preparedEvent2], });Specify a block range starting from
fromBlock(great for pagination).await getContractEvents({ contract: myContract, fromBlock: lastBlockFetched, blockRange: 123456n, events: [preparedEvent, preparedEvent2], }); -
#2945
b64c8e7Thanks @gregfromstl! - Removes deprecated template options from the CLI, specifically PWA Vite, Express, and React -
#2951
49d4494Thanks @gregfromstl! - Increase gas on MarketplaceV3 writes -
#2948
44680c6Thanks @gregfromstl! - Adds extraGas override to transactions. Useful when gas estimates are faulty or to ensure a transaction goes through.Usage
const transaction = prepareTransaction({ to: "0x1234567890123456789012345678901234567890", chain: ethereum, client: thirdwebClient, value: toWei("1.0"), gasPrice: 30n, extraGas: 50_000n, }); -
#2932
86105c9Thanks @gregfromstl! - TransactionButton throws error on reverted transaction -
#2946
ec149f3Thanks @gregfromstl! - Read RPC url from viem chain in viem chain adapter -
#2928
cea736cThanks @gregfromstl! - Filters invalid listings and auctions from marketplace -
#2949
0e19911Thanks @kien-ngo! - Docs update: fix typos and add code snippet -
#2944
82e8911Thanks @joaquim-verges! - Show auth provider icon in connect UI when connected to in app wallet -
#2933
8e0a3ceThanks @MananTank! - ### Integrate Pay Modal with TransactionButtonBy default, the Pay Modal is integrated with the
TransactionButtoncomponent. If the user performs a transaction and does not have enough funds to execute it and if thirdweb pay is available for that blockchain, the Pay Modal will be displayed to allow user to buy the required amount of tokensA new prop
payModalis added to theTransactionButtoncomponent customize the Pay Modal UI or disable it entirelyExample: Disable Pay Modal
<TransactionButton payModal={false}> Example 1 </TransactionButton>Example: Customize Pay Modal UI
<TransactionButton payModal={{ theme: "light", }} > Example 2 </TransactionButton>Disable Pay Modal for certain configurations in
useSendTransactionhookIf
useSendTransactionhook is passedgasless: trueconfiguration or if current active wallet is a smart wallet withsponsorGas: trueconfiguration - the Pay Modal will be disabled -
#2929
9f817cfThanks @joaquim-verges! - Tweaked connected modal UI layout
5.16.0
Minor Changes
-
#2917
5b0c37aThanks @joaquim-verges! - Factory address is now optional inaccountAbstractionandsmartWalletoptions.- Defaults to a global permissionless factory deployed on all chains.
- Also enables switching chains for smart wallets, as long as the factory is deployed
-
#2915
664082eThanks @joaquim-verges! - NewprepareDeterministicDeployTransactionextension for deploying published contracts with the same address on multiple chains -
#2921
d77b6f6Thanks @gregfromstl! - Adds the 'use client' directive to all client-only components -
#2919
47de345Thanks @jnsdls! - Add support for several additional wallets
Patch Changes
-
#2914
24a3ee4Thanks @joaquim-verges! - Fix legacy transactions with in-app wallets -
#2913
5525a0eThanks @gregfromstl! - Filter invalid auctions in getAllAuctions -
#2911
35acbcdThanks @gregfromstl! - Updates mintWithSignature return types to properly parse
5.15.0
Minor Changes
-
#2875
7882b22Thanks @joaquim-verges! - Support for Coinbase Smart Wallet -
#2898
88886acThanks @gregfromstl! - Adds overrides to extension functions
Patch Changes
-
#2906
75e66b1Thanks @joaquim-verges! - Fix signTypedData external verification for smart accounts -
#2897
f916d7aThanks @gregfromstl! - Fixes TransactionButton loading state layout shift -
#2905
9a031bbThanks @joaquim-verges! - Bump timeout for userOps receipts to 2mins -
#2899
e6fce1fThanks @gregfromstl! - Fixes useContractEvents duplicating events
5.14.0
Minor Changes
- #2869
fa4bd43Thanks @gregfromstl! - Adds the disabled prop to TransactionButton component
Patch Changes
-
#2881
7f4caf0Thanks @kien-ngo! - Fix nonce value for ethers5 adapter -
#2874
d2aead4Thanks @kien-ngo! - Docs: update incorrect code snippet for viem adapter -
#2882
bfdfc23Thanks @gregfromstl! - Better error message for failed smart wallet connections -
#2879
597900bThanks @MananTank! - - Add onConnect prop onAutoConnectcomponent- Call the
onConnectcallback passed toConnectButtonandConnectEmbedwhen wallet is auto-connected
- Call the
-
#2866
62c799dThanks @MananTank! - Fix exception on passing chain with unknown chainId to ConnectButton -
#2872
99298b3Thanks @joaquim-verges! - Add optionaliconinChainOptionswhen defining a chain -
#2867
674fcc7Thanks @gregfromstl! - Fixes single phase drop compatibility across erc20, erc721, and erc1155 contracts -
#2883
48e6427Thanks @gregfromstl! - Improve docs for verifySignature -
#2870
8ae8e6aThanks @gregfromstl! - Fix TransactionButton layout shift while loading
5.13.0
Minor Changes
- #2853
56c139cThanks @joaquim-verges! - Add account abstraction options touseConnectand handle smart wallet autoconnection outside of UI components
Patch Changes
-
#2859
03d8d6cThanks @jnsdls! - addgaslessprop to<TransactionButton /> -
#2861
5b83353Thanks @kumaryash90! - Export airdrop extensions -
#2857
77c2a8aThanks @kien-ngo! - Docs: update incorrect code snippets, fix typos
5.12.0
Minor Changes
-
#2841
2ae9a13Thanks @kumaryash90! - SDK V5 extension for new Airdrop contract.
Patch Changes
-
#2848
41be954Thanks @jnsdls! - addcelochains to knownop stackchains -
#2850
aa0b8c4Thanks @MananTank! - Fix "All wallets" UI in Connect- Remove duplicated entry for "inApp"
- Remove wallets specified by developer
5.11.0
Minor Changes
-
#2679
560d8adThanks @ElasticBottle! - Add support for connecting in-app wallet using phone numberUsage in TypeScript
import { createThirdwebClient, createWallet } from "thirdweb"; import { preAuthenticate } from "thirdweb/wallets/in-app"; const client = createThirdwebClient({ clientId: "..." }); const phoneNumber = '+123456789'; // Send OTP to given phone number async function sendOTP() { await preAuthenticate({ strategy: "phone", phoneNumber, client, }); } async function connect() { // create a in-app wallet instance const wallet = createWallet('inApp'); // if the OTP is correct, the wallet will be connected else an error will be thrown const account = await wallet.connect({ client, strategy: "phone"; phoneNumber, verificationCode: '...' // Pass the OTP entered by the user }); console.log('connected to', account); }Usage in React
import { createThirdwebClient } from "thirdweb"; import { preAuthenticate } from "thirdweb/wallets/in-app"; import { useConnect } from "thirdweb/react"; const client = createThirdwebClient({ clientId: "..." }); function Component() { const { connect } = useConnect(); const [phoneNumber, setPhoneNumber] = useState(''); // get phone number from user const [otp, setOtp] = useState(''); // get OTP from user // Send OTP to given phone number async function sendOTP() { await preAuthenticate({ strategy: "phone", phoneNumber, client, }); } async function connect() { // create a in-app wallet instance const wallet = createWallet('inApp'); // if the OTP is correct, the wallet will be connected else an error will be thrown await wallet.connect({ client, strategy: "phone"; phoneNumber, verificationCode: otp }); // set the wallet as active connect(wallet) } // render UI to get OTP and phone number from user return <div> ... </div> } -
#2818
948f155Thanks @jnsdls! - Gasless transactions in Typescriptimport { sendTransaction } from "thirdweb"; const result = sendTransaction({ transaction, account, gasless: { provider: "engine", relayerUrl: "https://...", relayerForwarderAddress: "0x...", }, });Gasless transactions in React
import { useSendTransaction } from "thirdweb/react"; const { mutate } = useSendTransaction({ gasless: { provider: "engine", relayerUrl: "https://...", relayerForwarderAddress: "0x...", }, }); // Call mutate with the transaction object mutate(transaction);
Patch Changes
-
#2842
d7e6671Thanks @joaquim-verges! - fix: handle signature minting with price and currency -
#2839
3be61ddThanks @MananTank! - Enable Buy Modal by default with useSendTransaction hook -
#2768
cfff7e8Thanks @MananTank! - Fix custom chain not being used
5.10.1
Patch Changes
5.10.0
Minor Changes
Patch Changes
-
#2834
be85410Thanks @joaquim-verges! - fix: erc1155 sigmint with additional supply -
#2831
38f3b2eThanks @MananTank! - Fix In-App + Smart wallet Connection issue
5.9.0
Minor Changes
-
#2793
4dbcbd1Thanks @jnsdls! - thirdweb/reactAdd a new optional
authprop to<ConnectButton />to allow specifying a SIWE auth flow after users connect their wallets.<ConnectButton client={client} auth={{ isLoggedIn: async (address) => { // check if the user is logged in by calling your server, etc. // then return a boolean value return true || false; }, getLoginPayload: async ({ address, chainId }) => { // send the address (and optional chainId) to your server to generate the login payload for the user to sign // you can use the `generatePayload` function from `thirdweb/auth` to generate the payload // once you have retrieved the payload return it from this function return; // <the login payload here> }, doLogin: async (loginParams) => { // send the login params to your server where you can validate them using the `verifyPayload` function // from `thirdweb/auth` // you can then set a cookie or return a token to save in local storage, etc // `isLoggedIn` will automatically get called again after this function resolves }, doLogout: async () => { // do anything you need to do such as clearing cookies, etc when the user should be logged out // `isLoggedIn` will automatically get called again after this function resolves }, }} />
Patch Changes
5.8.0
Minor Changes
-
#2806
94e354aThanks @jnsdls! - ImplementOffersin the Marketplace extensions, available viathirdweb/extensions/marketplace. -
#2814
bebcf46Thanks @jnsdls! - Add support for updating metadata for ERC1155 contracts -
#2811
1b2bfc8Thanks @joaquim-verges! - Added ERC1155 and ERC20 signature mint extensions
Patch Changes
- #2815
381b669Thanks @joaquim-verges! - Fix query invalidation when using react hooks
5.7.0
Minor Changes
-
#2803
a54c745Thanks @jnsdls! - Added new extensions for "English Auctions" inthirdweb/extensions/marketplacemodule:bidInAuctioncancelAuctionbuyoutAuctioncollectAuctionPayoutcollectAuctionTokensexecuteSale
-
#2767
300e4c8Thanks @MananTank! - Open "Pay Modal" UI when sending transaction using theuseSendTransactionhook if the user does not have enough funds to execute the transaction to prompt the user to buy tokensuseSendTransactionnow takes an optionalconfigoption to customize the "Pay Modal" UIconst sendTransaction = useSendTransaction({ payModal: { locale: "en_US", theme: "light", }, });You may also explicitly disable the "Pay Modal" UI by setting the
payModaloption tofalseconst sendTransaction = useSendTransaction({ payModal: false, }); -
#2788
f5abbe8Thanks @joaquim-verges! - AddeddeployPublishedContract
Patch Changes
-
#2795
7c17892Thanks @joaquim-verges! - Fix claiming drops with prices and no allowlists -
#2799
37bd0e4Thanks @jnsdls! - fixnpx thirdwebon windows whenthirdwebis installed locally
5.6.0
Minor Changes
-
#2760
8197b3cThanks @gregfromstl! - Adds serializeTransaction and updates sign return object to include yParity -
#2766
65e4ddcThanks @joaquim-verges! - Added ERC721 extensions:- claimTo with allowlist support
- lazyMint
- setClaimConditions
-
#2771
df338f5Thanks @jnsdls! - Added ERC20 extensions:- claimTo with allowlist support
- setClaimConditions
-
#2757
9d46fceThanks @jnsdls! - add extensions for contract roles in thethirdweb/extensions/permissionsnamespace
Patch Changes
- #2761
a18fc8eThanks @MananTank! - Connect UI context code cleanup
5.5.0
Minor Changes
-
#2752
39c6fbcThanks @jnsdls! - addconcatHexutility function -
#2744
db05717Thanks @joaquim-verges! - Added 1155 extensions:claimTowith allowlist supportlazyMintsetClaimConditions
-
#2749
eb919edThanks @jnsdls! - - storage:uploadnow returns a singleuriwhen a single file is passed to thefilesarray.- extensions: added suport for
royalty,platformFeeandprimarySaleextensions
- extensions: added suport for
Patch Changes
-
#2748
007770cThanks @MananTank! - - Show ENS name and avatar in ConnectButton's Details Modal- Add wallet ID alias
"embedded"for"inApp"to avoid breaking change
createWallet("embedded"); // supported but deprecated createWallet("inApp"); // recommended - Add wallet ID alias
-
#2759
07f98a5Thanks @MananTank! - - Improved Swap UI in ConnectButton Details Modal- Prevent Modal from closing when clicking on "Switch Network" in the Swap UI
- Fix wrong network name shown in Transaction History
-
#2756
e6b5d9cThanks @jnsdls! - improveresolveSchemereliability and handle cases wheregetNFTfor ERC1155 was breaking on missingtotalSupplymethod -
#2678
9453f74Thanks @kumaryash90! - Custom gas settings for any evm deployments
5.4.2
Patch Changes
- #2579
d836889Thanks @ElasticBottle! - ExportresolvePromisedValuefromthirdweb/utils
5.4.1
Patch Changes
- #2741
900e7d0Thanks @MananTank! - Remove duplicated entry for MetaMask in MM browser
5.4.0
Minor Changes
-
#2736
3847617Thanks @gregfromstl! - Adds fromGwei unit converter -
#2735
d9cd6f5Thanks @jnsdls! - added extension support for: Marketplace, ERC1155, ERC721 -
#2711
14cecc9Thanks @joaquim-verges! - ExportuseSendBatchTransaction()for smart accounts
Patch Changes
-
#2731
1d4fdd6Thanks @jnsdls! - exportChainMetadatatype fromthirdweb/chains -
#2712
02583f8Thanks @jnsdls! - fixwatchBlockNumberpolling when fully unsubscribing and later re-subscribing
5.3.1
Patch Changes
5.3.0
Minor Changes
- #2697
c2eba49Thanks @joaquim-verges! - DeprecateembeddedWalletin favor ofinAppWallet(same functionality)
Patch Changes
-
#2689
740a675Thanks @jnsdls! - ---Marketplace Extensions
Added initial support for the Marketplace extensions, available via the
thirdweb/extensions/marketplacemodule.Direct Listings
Write
createListing
Read
totalListingsgetListinggetAllListingsgetAllValidListings
Events
buyerApprovedForListingEventcancelledListingEventcurrencyApprovedForListingEventnewListingEventnewSaleEventupdatedListingEvent
English Auctions
Write
createAuction
Read
totalAuctionsgetAuctiongetAllAuctionsgetAllValidAuctions
Events
auctionClosedEventcancelledAuctionEventnewAuctionEventnewBidEvent
Types
DirectListingEnglishAuction
ERC721 Extensions
- Added
isERC721to thethirdweb/extensions/erc721module.
ERC1155 Extensions
- Added
isERC1155to thethirdweb/extensions/erc1155module.
-
#2700
f709f13Thanks @jnsdls! - ENS: add support forresolveName(),resolveAvatar()andresolveText() -
#2686
a2423caThanks @MananTank! - AddmodalSizeprop onConnectEmbedto allow"wide"modal size. -
#2684
4504a8dThanks @MananTank! - Fix sourcemap warnings in CRA -
#2677
0e479e2Thanks @farhanW3! - added 50k overhead to userOp gas estimations
5.2.0
Minor Changes
-
#2667
44d9630Thanks @joaquim-verges! - API update for ethers5 and ethers5 adapters:- Now all adapter functions take a singular object
- ethers5: fixed adapted signer not containing a provider by default
- ethers5: added support for sign typed data
-
#2674
97a31f5Thanks @joaquim-verges! - AdduseSendAndConfirmTransactionhook
Patch Changes
-
#2666
127c476Thanks @gregfromstl! - fix getAddresses for accounts converted to viem -
#2637
367576cThanks @MananTank! - - Always start a new session when callingwallet.connectfor WalletConnect- Fix JSDoc for
useConnectedWallets - Add
accountsChangedevent back toWallet wallet.disconnectmethod cleanups
- Fix JSDoc for
5.1.1
Patch Changes
-
#2636
c508751Thanks @joaquim-verges! - Optimie encode by caching asyncParams -
#2662
e4d243eThanks @jnsdls! - fixsendTransactionwithinviemAdapter.walletClient.toViem()
5.1.0
Minor Changes
- #2602
3aaad1eThanks @gregfromstl! - Adds generateAccount function for generating a random local account
Patch Changes
-
#2525
7234e6bThanks @gregfromstl! - Better private-key account support -
#2626
e806393Thanks @jnsdls! - fix wallet connect uri parsing -
#2632
d89f009Thanks @MananTank! - Various Improvements for wallet connection- change
accountsChangedevent toaccountChangedevent and emit newAccountobject instead of creating it in the connection manager - WalletConnect connection improvements
- change
-
#2610
213f313Thanks @dependabot! - build(deps): bump viem from 2.9.5 to 2.9.6 -
#2606
0394eb2Thanks @joaquim-verges! - Add ERC4337 extensions -
#2631
1c29556Thanks @joaquim-verges! - Get userOp prices from bundler
5.0.3
Patch Changes
-
#2595
dd1141fThanks @MananTank! - Do not subscribe tosession_request_sentevent when usingwalletConnectbecause that is already handled when connecting with official Modal -
#2591
6d63920Thanks @MananTank! - AddwalletConnect, fix WC connection issues -
#2588
eba8f1cThanks @joaquim-verges! - Fix 721/1155 claimTo
5.0.2
Patch Changes
-
#2585
052892bThanks @MananTank! - Fix wallet not opened on WC sessions request event on page reload on mobile -
#2587
6063f40Thanks @jnsdls! - [CLI] - fix execution on windows and when prettier is not installed
5.0.1
Patch Changes
-
#2572
701cd88Thanks @jnsdls! - point CLI backwards compatibility @latest instead of @beta -
#2576
04961f0Thanks @joaquim-verges! - Change getWalletBalance prop from account to address
5.0.0
Major Changes
-
#2356
01fd523Thanks @jnsdls! - Initial release of v5 of the thirdweb SDK.For more information please refer to the documentation and the migration guide.
Patch Changes
- #2566
c63d9eaThanks @kumaryash90! - Verification status in progress