ENS best practices

ENS Resolution

Correctly Resolve All Names For ENSv2

Make sure your app keeps resolving ENS names correctly once ENSv2 launches.

Category

ENS Resolution

Applies to

Apps

App support

35%

ENS best practice overview

ENS is upgrading to ENSv2 and the way ENS names get resolved is changing. Apps that don't upgrade their ENS resolution logic before ENSv2 launches will quietly start giving people the wrong names and addresses as soon as ENSv2 launches — a silent failure that would erode user trust and could even send funds to the wrong place.

This best practice checks that your app will keep resolving every ENS name correctly through the ENSv2 transition, with no disruption for your users.

The simplest way to get this right—and to continuously and automatically fetch data from ENS correctly even as ENS keeps evolving— is to use the ENS Omnigraph API (powered by ENSNode) which handles ENSv2-ready resolution for you. The implementation recommendations below cover how your engineering team can adopt it, or other supported options.

Why this matters

Get this right now so that your users keep seeing the correct names and addresses before, during, and after the ENSv2 launch—no broken names, no funds sent to the wrong place, and no last-minute scramble to migrate.

Acceptance Test 1

To check whether an app has ENSv2 ready resolution, resolve the name ur.integration-tests.eth and verify it resolves to the correct address, 0x2222222222222222222222222222222222222222.

Example test resultPassed

An ENSv2-ready app such as Rabby Wallet resolves the name ur.integration-tests.eth to the correct address:0x2222222222222222222222222222222222222222.

Rabby Wallet correctly resolves the name for ENSv2

Example test resultFailed

An app that is NOT ENSv2 ready resolves the name ur.integration-tests.eth to an invalid address such as: 0x1111111111111111111111111111111111111111.

Apps failing this test require an urgent update! 🚨

Zerion fails to resolve the name for ENSv2

Example test resultNot Applicable

This best practice is targeted towards apps that already support ENS resolution being ENSv2 ready.

Therefore, any app that currently doesn’t support ENS resolution at all is classified asNot Applicable for this best practice.

Binance Wallet doesn't currently support ENS resolution at all

Implementation recommendations

There are a few ways to make sure your app's ENS resolution is ENSv2-ready. Options below are ordered from the easiest to the most hands-on. Use the first option that fits your stack.


1. Use the ENS Omnigraph API (recommended).

Fetch your ENS data through the ENS Omnigraph API (powered by ENSNode) and ENSv2-ready resolution just works — no RPCs or contracts to track, no upgrades to chase. It's a single typed GraphQL API over both ENSv1 and ENSv2 for every chain and offchain names too. It also handles the indexed ENS data your app reads (e.g. the names an address owns, profiles, histories, etc.), with resolutions accelerated by Protocol Acceleration. Drop it in with enssdk (TypeScript) or enskit (React).


2. Using viem or wagmi? Update your version.

If you resolve names using ENS helper functions from viem or wagmi and aren't ready to adopt the Omnigraph yet, make sure you're on viem (v2.35.0+). On wagmi, pin the viem version yourself — wagmi accepts any viem 2.x, so upgrading wagmi alone won't get you there.


3. Writing raw RPC calls yourself?

If your app makes its own low-level RPC calls instead of using the Omnigraph or a helper library like viem, point your resolution RPC calls at ENS's new stable Universal Resolver proxy (0xeeeeeeee14d718c2b47d9923deab1335e144eeee) rather than hardcoding a specific Universal Resolver implementation. Because ENS controls the proxy, it transparently upgrades to the ENSv2-compatible implementation when ENSv2 launches, so apps pointed at it stay correct with no code changes. For additional guidance, see the ENSv2 readiness guide.

Founded in 2022, Namehash Labs is dedicated to developing open source infrastructure that helps the Ethereum Name Service (ENS) Protocol grow.

© NameHash Labs. All Rights Reserved

Made with❤️byNameHash Labs