namehash() does not normalize. Skip this step and Alice.eth and alice.eth hash to different nodes, so an availability check can report a registered name as free.
checkName result as name, alongside its label and parentName parts.
Normalize on your own side too
If your app stores, compares, or caches names, use the same helpers the SDK uses so your keys agree with its.
The SDK also exports
MAX_NAME_BYTES (255) and MAX_LABEL_BYTES (63), the length bounds it enforces after normalization.
Passing a full name where a label is expected is the most common mint bug, so
normalizeLabel rejects any value containing a . outright rather than hashing it as one long label.ENS v2
ENS v2 moves name ownership into per-name subregistries, so a v1 registryowner() lookup reports a migrated name as unowned. The contracts are not final and nothing is deployed to mainnet yet.
This is why checkName treats the Namespace API as the primary source of truth and the registry as corroboration: the API can follow the migration without an SDK release. Normalization is unaffected, since ENSIP-15 does not change in v2.
