message to TransactionPendingScreen.
What changed from 2.x to 3.x
The new
version prop on EnsNameRegistrationForm, NameRenewForm, EnsRecordsForm, and SubnameMintForm, and on the useENSResolver hook, defaults to 2. ENSv1 registration and renewal are retired, so the only reason to pass version={1} is to mint under an old Namespace listing.
Peer dependencies are unchanged: React 19 or later, wagmi ^2.19.5, and viem ^2.46.3.
Upgrade checklist
1
Update the package
2
Pass version={1} for old Namespace listings
In 3.x, Parents that the owner activates on ENSv2 in the Namespace App need no
SubnameMintForm looks for an ENSv2 activation on the parent. If the parent has a listing created before ENSv2, keep it on ENSv1:version prop. If a listing mints on Base or Optimism, keep those chains in your wagmi config.3
Read the registration price from registrationCost
Registration is now paid in USDC or DAI. In Update copy that tells users they’ll pay in ETH. Users need USDC or DAI to register, and ETH for gas.
onRegistrationSuccess, registrationCost is the token amount. transactionFees and total are both the ETH network fees, so total no longer includes the price.4
Drop message from TransactionPendingScreen
TransactionPendingScreen still works without message, and its hash is now optional. TransactionProgress replaces it. See Transaction progress.5
Remove your own approval and balance steps
The forms now approve the payment token, batch calls when the wallet supports it, and block the transaction with “Insufficient funds” when the wallet can’t pay. Remove any approval or balance check you added around the forms.
6
Check the networks in your wagmi config
ENSv2 runs on Ethereum mainnet, and on Sepolia with
isTestnet. Make sure your wagmi config includes the chains you use.7
Add the new renewal forms, if you need them
NameRenewForm and SubnameRenewForm are new and optional. See Renew names and Renew subnames.Upgrade from 1.x to 2.x
Version 2.0.0 was a visual redesign. Props, hooks, and exports didn’t change.- The accent changed from blue to near-black, set by
--ns-ink, and corners changed from square to 10 px, set by--ns-radius. - Fonts changed from Satoshi to DM Sans and DM Mono.
- The stylesheet no longer sets a background on your page’s
htmlelement. Addbackground: var(--ns-bg)to your page if you relied on it. - Older
--ns-color-*and--ns-blue-*variables still resolve. Move overrides to the new tokens. See Theming.
- 1.1.2:
OffchainSubnameFormtakes anoffchainManagerclient instead ofapiKeyOrToken, andonSubnameCreatedandonSubnameUpdatedreplaceonSuccess. The form no longer saves subnames, so your callbacks must. See Offchain subnames. - 1.3.0:
onRegistrationSuccessreturnsdurationLabelinstead ofexpiryInYears.

