Skip to content

docs: clean up quickstart docs#2214

Open
shrugs wants to merge 7 commits into
mainfrom
docs/level-one-intro-examples
Open

docs: clean up quickstart docs#2214
shrugs wants to merge 7 commits into
mainfrom
docs/level-one-intro-examples

Conversation

@shrugs
Copy link
Copy Markdown
Member

@shrugs shrugs commented May 27, 2026

  • disables prettier auto-formatting embedded code (i.e. graphql)
  • enabled prettier plugin format-on-save for vscode
  • simplifies the omnigraph quickstart examples
  • moves the more complex concepts to /concepts and expands upon them with examples and more prose
  • expands terminology

Copilot AI review requested due to automatic review settings May 27, 2026 20:32
@shrugs shrugs requested a review from a team as a code owner May 27, 2026 20:32
@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
enskit-react-example.ensnode.io Ready Ready Preview, Comment May 28, 2026 3:10pm
ensnode.io Ready Ready Preview, Comment May 28, 2026 3:10pm
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
admin.ensnode.io Skipped Skipped May 28, 2026 3:10pm
ensrainbow.io Skipped Skipped May 28, 2026 3:10pm

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 27, 2026

⚠️ No Changeset found

Latest commit: e1e95e5

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 27, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

This PR restructures ENS Node documentation and tooling configuration. It adds Prettier and VS Code formatter setup, introduces a new Omnigraph core concepts documentation page, condenses the Omnigraph index and related content, simplifies quickstart code examples, updates sidebar navigation, and adds terminology definitions for beautified and resolvable names.

Changes

Documentation Restructuring and Tooling Configuration

Layer / File(s) Summary
Prettier and VS Code formatter configuration
.prettierrc.json, .vscode/extensions.json, .vscode/settings.json
Adds Prettier as a recommended extension and configures it as the default formatter for markdown, MDX, and Astro file types. Broadens Prettier's "do not reflow embedded code/GraphQL" override to include all docs/ensnode.io/**/*.{md,mdx} and examples/**/*.{ts,tsx} files.
Omnigraph core concepts documentation page
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx
Adds comprehensive documentation defining Namegraph, Unigraph, canonicality, stable IDs vs. name-based addressing, GraphQL polymorphism, interpreted/beautified names and labels, Relay connection patterns, ENS event audit logs, and first-class permission entities—each with GraphQL and code examples.
Omnigraph index page shortening and navigation
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/index.mdx
Condenses the overview to focus on high-level Omnigraph description, removes detailed conceptual sections moved to the new concepts page, and reorganizes next-steps card grid to link to "Core Concepts," "Examples," "Schema Reference," and "Integration Options."
ENSv2 readiness documentation updates
docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx
Condenses "How ENSNode solves this" section by removing specific ENSIP listings and ENSv2 namegraph characteristics while retaining core claims about Unigraph and Omnigraph; maintains existing guidance about UniversalResolverV2 routing and Omnigraph adoption.
Integration sidebar topic navigation
docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts
Adds "Core Concepts" entry under the "ENS Omnigraph API" sidebar topic linking to the new /docs/integrate/omnigraph/concepts documentation page.
Quickstart code example simplification
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx, docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx
Removes HostedInstanceSdkVersionWarning component from both quickstart versions. Replaces fragment-based React examples with a simpler DomainCard component showing domain name and owner. For v1.15.0, removes the id field from the GraphQL domain selection in the enssdk example.
Terminology definitions for beautified and resolvable names
docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx
Introduces "Beautified Label" and "Beautified Name" entries describing their derivation from interpreted forms via ENSIP-15 beautification or preserved encoded labelhashes, with constraints prohibiting their use for identification. Also introduces "Resolvable Name" specifying literal-label-only composition with DNS-encoding limits and a danger note about forward-resolution limitations.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • namehash/ensnode#2121: Both PRs directly modify docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx by rewriting its ENSv2 readiness narrative.
  • namehash/ensnode#2198: Both PRs adjust .prettierrc.json Prettier overrides for embedded/GraphQL formatting behavior in docs/ensnode.io and examples files.
  • namehash/ensnode#2173: Both PRs modify quickstart documentation and update integrate.ts sidebar topic configuration.

Suggested labels

docs

🐰 Docs refined and polished bright,
Concepts crystallized just right,
Quickstart simplified with care,
New Prettier rules in the air—
Readers will find their path clear!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The PR description is incomplete; it lacks the required template structure with distinct Summary, Why, Testing, and Notes sections, though key points are captured in a bullet-list format. Reformat the description using the required template structure with explicit sections: Summary, Why, Testing, and Notes for Reviewer, to improve clarity and follow repository conventions.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'docs: clean up quickstart docs' accurately summarizes the main change—simplifying quickstart documentation and reorganizing content.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/level-one-intro-examples

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 27, 2026

Greptile Summary

This PR cleans up the Omnigraph quickstart documentation: it simplifies the walkthrough code examples, moves the deep-dive concepts (Namegraph, Unigraph, canonicality, polymorphism, Interpreted Names, Events, Permissions) to a new /docs/integrate/omnigraph/concepts page, and expands the terminology reference with Beautified Label, Beautified Name, and Resolvable Name definitions. Config changes enable Prettier format-on-save for md/mdx/astro files in VSCode and broaden the embeddedLanguageFormatting: off rule to all docs markdown files.

  • New concepts.mdx — 451-line Core Concepts page with Mermaid diagrams and annotated GraphQL examples covering every major Omnigraph data-model concept.
  • Simplified quickstart walkthroughs — removes the HostedInstanceSdkVersionWarning component and the fragment-based enskit example in favour of a minimal inline-query pattern.
  • Terminology additions — new definitions for Beautified Label, Beautified Name, and Resolvable Name, each with danger callouts warning against misuse as lookup keys.

Confidence Score: 5/5

Documentation-only changes with no runtime code impact; safe to merge.

All changes are confined to markdown/MDX documentation, VSCode workspace config, and Prettier config. No application logic, schema, or API surface is touched. The new concepts page is well-structured with accurate content; the only minor issue is a misleading empty-string snippet in a callout.

docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx — one prose nit in the InterpretedNames danger callout.

Important Files Changed

Filename Overview
.prettierrc.json Broadens the embedded-language-formatting-off rule to cover all docs md/mdx files, not just walkthroughs — prevents Prettier from reflowing hand-authored GraphQL blocks across the entire docs tree.
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx Removes the HostedInstanceSdkVersionWarning import/usage and simplifies the enskit example by removing the fragment-based approach, leaving a cleaner inline query pattern.
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx Same simplification as v1.13.1.mdx: removes HostedInstanceSdkVersionWarning import/usage and collapses the enskit example to a minimal inline query.
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx New 451-line Core Concepts page covering Namegraph, Unigraph, Canonicality, Stable IDs, Polymorphism, InterpretedNames, Relay connections, Events, and Permissions — one minor prose error (empty string in a code snippet).
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/index.mdx Substantially simplified overview page: removes deep-dive sections now covered by concepts.mdx, replaces the large example query with a minimal first-query snippet, and adds a Core Concepts link card.
docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx Adds definitions for Beautified Label, Beautified Name, and Resolvable Name, including danger callouts warning against using beautified forms as lookup keys.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    OI[omnigraph/index.mdx\nSimplified overview] -->|links to| OC[omnigraph/concepts.mdx\nNew Core Concepts page]
    OI -->|links to| EX[omnigraph/examples\nExisting]
    OC -->|references| TERM[reference/terminology.mdx\n+ Beautified Label/Name\n+ Resolvable Name]
    SIDEBAR[integrate.ts sidebar] -->|adds entry| OC
    QS1[quickstart/v1.13.1.mdx\nSimplified enskit example] -->|removed| WARN[HostedInstanceSdkVersionWarning]
    QS2[quickstart/v1.15.0.mdx\nSimplified enskit example] -->|removed| WARN
    PRETTIER[.prettierrc.json\nembeddedLanguageFormatting off] -->|now covers| ALLDOCS[docs/ensnode.io/**/*.md,mdx]
Loading

Reviews (10): Last reviewed commit: "Merge branch 'main' into docs/level-one-..." | Re-trigger Greptile

Comment thread docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This docs-focused PR streamlines the Omnigraph quickstart, moves deeper Omnigraph concepts into a dedicated page, expands terminology, and updates editor/Prettier configuration for docs authoring.

Changes:

  • Simplifies the Omnigraph overview and quickstart walkthrough examples.
  • Adds a new Core Concepts page with expanded GraphQL examples and terminology links.
  • Updates VS Code and Prettier settings for Markdown/MDX/Astro formatting.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx Adds Beautified Label/Name and Resolvable Name terminology.
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/index.mdx Replaces long-form concepts content with a concise overview and first query.
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx Adds the new expanded Omnigraph Core Concepts documentation page.
docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx Tightens ENSv2 readiness prose around Unigraph and Omnigraph.
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx Simplifies the v1.15.0 quickstart code examples.
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx Simplifies the v1.13.1 quickstart code examples.
docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts Adds the Core Concepts page to the Omnigraph sidebar.
.vscode/settings.json Sets Prettier as formatter for Markdown, MDX, and Astro.
.vscode/extensions.json Recommends the Prettier VS Code extension.
.prettierrc.json Disables embedded language formatting across docs Markdown/MDX files.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx Outdated
Comment thread docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx Outdated
Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx
Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx (1)

2-2: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Unused import: HostedInstanceSdkVersionWarning is no longer rendered.

The component is imported but not used in the file after simplification.

♻️ Proposed fix
 import { LinkCard, CardGrid, Aside } from "`@astrojs/starlight/components`";
-import HostedInstanceSdkVersionWarning from "`@components/molecules/HostedInstanceSdkVersionWarning.astro`";
 import OmnigraphStaticExampleSet from "`@components/organisms/OmnigraphStaticExampleSet.astro`";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx` at line
2, Remove the unused import HostedInstanceSdkVersionWarning from the top of the
file since the component is no longer rendered; locate the import statement
"import HostedInstanceSdkVersionWarning from
\"`@components/molecules/HostedInstanceSdkVersionWarning.astro`\";" and delete it
to eliminate the unused symbol and clean up the module imports.
docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx (1)

2-2: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Unused import: HostedInstanceSdkVersionWarning is no longer rendered.

The component is imported but not used in the file after simplification.

♻️ Proposed fix
 import { LinkCard, CardGrid, Aside } from "`@astrojs/starlight/components`";
-import HostedInstanceSdkVersionWarning from "`@components/molecules/HostedInstanceSdkVersionWarning.astro`";
 import OmnigraphStaticExampleSet from "`@components/organisms/OmnigraphStaticExampleSet.astro`";
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx` at line
2, The import HostedInstanceSdkVersionWarning is unused in the quickstart
component; remove the import statement for HostedInstanceSdkVersionWarning from
the file so there are no dead imports (search for the symbol
HostedInstanceSdkVersionWarning to locate and delete the import line), and run
the linter/build to confirm no further references remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx`:
- Around line 74-84: The GraphQL query DomainByNameQuery is querying domain.name
directly but the schema exposes names under canonical.name, so update the query
passed to graphql(`...`) to select canonical { name { beautified or interpreted
} } (e.g., canonical { name { beautified } } or canonical { name { interpreted }
}) instead of name; keep the owner { address } selection as-is and ensure the
query variable type ($name: InterpretedName!) remains unchanged so editor
typechecking and autocomplete for DomainByNameQuery still work.
- Around line 99-100: Update the JSX to read the new nested field path from the
corrected GraphQL schema: replace references to domain.name with
domain.canonical?.name?.beautified (falling back to "Unnamed Domain" if missing)
while leaving owner access as domain.owner?.address ?? "Unowned"; ensure you
update the display expression where the component currently uses Name:
{domain.name ?? "Unnamed Domain"} to use the canonical.name.beautified path
instead.

In `@docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx`:
- Line 163: Update the Resolvable Name definition to avoid confusing the term
"literal label segments" with the earlier-defined "Literal Label"; replace or
augment that phrase in the Resolvable Name sentence (the text around "Resolvable
Name" and "literal label segments") with one of the suggested clarifications
such as "actual text label segments (normalized or unnormalized)" or "textual
label segments (normalized or unnormalized)", or add a short parenthetical like
"(i.e., not Encoded LabelHashes; normalized or unnormalized)" so readers clearly
understand the distinction from Encoded LabelHashes and the earlier Literal
Label term.

---

Outside diff comments:
In `@docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx`:
- Line 2: Remove the unused import HostedInstanceSdkVersionWarning from the top
of the file since the component is no longer rendered; locate the import
statement "import HostedInstanceSdkVersionWarning from
\"`@components/molecules/HostedInstanceSdkVersionWarning.astro`\";" and delete it
to eliminate the unused symbol and clean up the module imports.

In `@docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx`:
- Line 2: The import HostedInstanceSdkVersionWarning is unused in the quickstart
component; remove the import statement for HostedInstanceSdkVersionWarning from
the file so there are no dead imports (search for the symbol
HostedInstanceSdkVersionWarning to locate and delete the import line), and run
the linter/build to confirm no further references remain.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: bb26b137-1662-4bcf-84ce-a0880601cc2f

📥 Commits

Reviewing files that changed from the base of the PR and between 8069fc2 and 7a3da12.

📒 Files selected for processing (10)
  • .prettierrc.json
  • .vscode/extensions.json
  • .vscode/settings.json
  • docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/index.mdx
  • docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx

Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx Outdated
Comment thread docs/ensnode.io/src/content/docs/docs/reference/terminology.mdx
- concepts.mdx: domains() takes required where (version inside it) and
  returns a connection; select via edges.node
- concepts.mdx: fix "there is exists" grammar
- v1.13.1/v1.15.0 walkthroughs: drop orphaned HostedInstanceSdkVersionWarning import
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 27, 2026 21:57 Inactive
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 27, 2026 21:57 Inactive
@shrugs
Copy link
Copy Markdown
Member Author

shrugs commented May 27, 2026

@greptile review

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx (1)

295-295: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the malformed example and extra closing parenthesis.

The example shows domain(by: { name: "" }) with an empty string and has an extra closing parenthesis. The empty string doesn't illustrate the point about Encoded LabelHashes, and the extra ) is a syntax error.

📝 Proposed fix
-ENS Forward Resolution does _not_ support Encoded LabelHashes in names, so while an InterpretedName can be used to traverse the Namegraph (i.e. with `domain(by: { name: "" }))`), if the Canonical Name is not a [ResolvableName](/docs/reference/terminology#resolvable-name), then the records for that name _cannot_ be determined.
+ENS Forward Resolution does _not_ support Encoded LabelHashes in names, so while an InterpretedName can be used to traverse the Namegraph (i.e. with `domain(by: { name: "..." })`), if the Canonical Name is not a [ResolvableName](/docs/reference/terminology#resolvable-name), then the records for that name _cannot_ be determined.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx` at
line 295, The example in the documentation showing the domain query with
`domain(by: { name: "" })` is malformed and has an extra closing parenthesis at
the end. Fix this by replacing the empty string inside the name parameter with
an actual example of an Encoded LabelHash to properly illustrate the point being
made about why ENS Forward Resolution does not support Encoded LabelHashes, and
remove the extraneous closing parenthesis to correct the syntax error.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx`:
- Line 295: The example in the documentation showing the domain query with
`domain(by: { name: "" })` is malformed and has an extra closing parenthesis at
the end. Fix this by replacing the empty string inside the name parameter with
an actual example of an Encoded LabelHash to properly illustrate the point being
made about why ENS Forward Resolution does not support Encoded LabelHashes, and
remove the extraneous closing parenthesis to correct the syntax error.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: b21f8842-dbd8-4572-b54c-7b3520ad6ed0

📥 Commits

Reviewing files that changed from the base of the PR and between 7a3da12 and 5fe5a6f.

📒 Files selected for processing (3)
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx
💤 Files with no reviewable changes (2)
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.15.0.mdx

Copilot AI review requested due to automatic review settings May 27, 2026 22:15
@shrugs
Copy link
Copy Markdown
Member Author

shrugs commented May 27, 2026

@greptile review

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx Outdated
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 27, 2026 22:19 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 27, 2026 22:20 Inactive
Copilot AI review requested due to automatic review settings May 27, 2026 22:21
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 27, 2026 22:21 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 27, 2026 22:21 Inactive
@shrugs
Copy link
Copy Markdown
Member Author

shrugs commented May 27, 2026

@greptile review

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.

Comment thread docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx Outdated
@vercel vercel Bot temporarily deployed to Preview – admin.ensnode.io May 27, 2026 22:32 Inactive
@vercel vercel Bot temporarily deployed to Preview – ensrainbow.io May 27, 2026 22:32 Inactive
@shrugs
Copy link
Copy Markdown
Member Author

shrugs commented May 27, 2026

@greptile review

Comment thread docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
# Conflicts:
#	docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts
#	docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 11 changed files in this pull request and generated 1 comment.

# reference a Domain by name
domain(by: { name: "eth" }) {
# this is the Registry that "eth" exists within
registry { id contract { chainId address } }
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx`:
- Line 35: Update the ENSv2 readiness paragraph that mentions ENSNode's "ENS
Protocol Acceleration" (the sentence beginning "ENSNode also provides **[ENS
Protocol Acceleration]...**") to add a caveat noting that acceleration is
currently gated/disabled in ENSv2-root contexts; change "dramatically reducing
resolution latency for most names" to a qualified statement indicating
acceleration applies to non-root ENSv2 contexts (or "most names outside
ENSv2-root contexts") so readers understand the current limitation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: be8e130f-0449-4982-bd31-6373d3c8d619

📥 Commits

Reviewing files that changed from the base of the PR and between 5fe5a6f and e1e95e5.

📒 Files selected for processing (5)
  • docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts
  • docs/ensnode.io/src/components/walkthroughs/quickstart/v1.13.1.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx
  • docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/concepts.mdx
  • docs/ensnode.io/src/content/docs/docs/services/ensrainbow/concepts/creating-files.mdx

Comment thread docs/ensnode.io/src/content/docs/docs/integrate/ensv2-readiness.mdx
Copy link
Copy Markdown
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shrugs This is a super upgrade to our docs! Nice work! Shared a few suggestions please take the lead on next steps 🫡


With `enskit`, leverage ENSNode and the Omnigraph to power your React components using `useOmnigraphQuery`. `enskit` comes with built-in type-safety, Omnigraph-specific cache directives, easy infinite pagination, and much much more.

<HostedInstanceSdkVersionWarning />
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shrugs Good call! Suggest that we wait to merge this PR until we are able to promote the blue environment to production. Should be less than 24-hours now.

Could you please also take the lead for coordinating how we get @sevenzing's PR for adding resolutions merged and deployed in such a way to our blue environment that it can all work there when we activate blue tomorrow.

And then for making it so that we can have a PR-ready to merge as soon as we switch production to blue that will update our docs to:

  • Align with the Omnigraph API that will be going live in the blue environment.
  • Feature the super amazing addition of resolutions to the ENS Omnigraph API.

@sevenzing Can you and @shrugs Please coordinate on this? For example -- @sevenzing can you please share all the example queries you prepared for your demo today and share those with @shrugs as inspiration to support the docs updates he'll be making now? Thanks!

const DomainByNameQuery = graphql(
`
// this query is fully typechecked and supports editor autocomplete!
const DomainByNameQuery = graphql(`
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also throw in a "hello world" resolution here too now that we're launching resolutions support?

);
})}
</ul>
<p>Name: {domain.canonical?.name.beautified ?? "Unnamed Domain"}</p>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a comment here highlighting the benefit of getting back the beautified value?

When ENSv2 launches in **Summer 2026**, the two protocol versions coexist — and the Omnigraph keeps your app working against both, at the same time, with no code changes. Both ENSv1 and ENSv2 Domains are indexed concurrently and exposed through a unified schema.

Addressing a Domain by name (`domain(by: { name: "vitalik.eth" })`) returns an ENSv2 Domain if the domain has been optionally upgraded by its owner to ENSv2, and returns an ENSv1 Domain otherwise. Set-returning queries (`domains(where: { name: ... })`) return both the ENSv1 and ENSv2 onchain representations of the same domain, unless explicitly filtered with `version: ENSv1` or `version: ENSv2`.
Ask for a Domain by name (`domain(by: { name: "vitalik.eth" })`) and you get a typed result whether that name lives in ENSv1 or ENSv2 — your code doesn't have to know or care which.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Ask for a Domain by name (`domain(by: { name: "vitalik.eth" })`) and you get a typed result whether that name lives in ENSv1 or ENSv2 — your code doesn't have to know or care which.
Ask for a Domain by name (`domain(by: { name: "vitalik.eth" })`) and you get a typed result whether that name lives in ENSv1 or ENSv2 — your code doesn't have to know which at query time.

@shrugs My understanding is that devs building on the Omnigraph API will need to care if its ENSv1 or ENSv2 for some queries because don't they need to ensure their logic is fully prepared to handle both cases in the response?

Assuming so, suggest adding some special section about this key idea in the ENS Omnigraph Core Concepts. For example, ENSNode and the Omnigraph API do enable devs to make their apps fully ENSv2 ready even before ENSv2 launches, but to truly achieve that don't these devs need to prepare their apps to handle receiving responses back from the Omnigraph API for both ENSv1 and ENSv2 domains? Otherwise, when ENSv2 launches, if the developer integrated with the Omnigraph API with the assumption that all domains they get back would always be ENSv1 domains then their app will still break when ENSv2 launches because they didn't proactively prepare for getting back ENSv2 domains too. Right?


A **Namegraph** is the native onchain data model of ENSv2: it represents names not as a flat mapping of namehashes in a Nametable (as in ENSv1), but as a graph of `Registry → Domain → Registry → Domain → …`. This graph may be cyclic, and within the ENSv2 protocol an unbounded number of _disjoint_ (not connected) Namegraphs will exist. Within the unified ENS protocol (v1+v2) there will exist many Namegraphs, at the very least those headed by the ENSv1 Root Registry, Basenames, Lineanames, 3DNS, and the ENSv2 Root Registry.
- **Multichain in one query** — mainnet `.eth`, Basenames (`.base.eth`), Lineanames (`.linea.eth`), and 3DNS names (`.box`) all in a single unified schema.
- **Typed, no footguns** — names and labels are normalized for you, so rendering them in a UI is trivial.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can also feature footguns related to resolutions, including the complexities of the params for "raw" resolutions and parsing / validating / interpreting the results for "raw" resolutions.


**Resolving Records** — If you're exclusively interested in resolving ENS names, you need to ensure that your `resolve` RPC calls go to the new `UniversalResolverV2` contract or risk stale and incorrect results being returned. Depending on your situation, this update may be handled simply by updating `viem` or `wagmi`, but for many apps building on indexed ENS data or with more advanced requirements, additional upgrade actions may be required.

For many, the simple solution for ENSv2 readiness will be to adopt the ENS Omnigraph API from ENSNode for all their ENS data needs (both ENSv1 and ENSv2). ENSNode also provides **[ENS Protocol Acceleration](/docs/integrate/omnigraph/protocol-acceleration)**, dramatically reducing resolution latency for most names people use.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shrugs Suggest to keep the "... people use" qualifier here. That's because in theory most ENS names are offchain names. And these offchain names cannot currently be accelerated. Therefore for technical accuracy I added this qualifier.

We can note a few details here:

  • There are offchain subname issuers who are claiming how they made millions upon millions of ENS subnames, but those names are created via nothing but an API call. Virtually all of them are never actually used. It's inflated metrics.
  • We can note how all DNS names are theoretically ENS names too. These outnumber our onchain ENS names significantly, but these are currently rarely "used" in the context of ENS.


import { CardGrid, LinkCard } from "@astrojs/starlight/components";

The [ENS Omnigraph API](/docs/integrate/omnigraph) abstracts away most of ENS's protocol complexity, but a handful of concepts explain _how_ it presents ENSv1 and ENSv2 through a single unified schema. You don't need these to send your first query, only to understand how the Omnigraph represents the state of the ENS protocol.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The [ENS Omnigraph API](/docs/integrate/omnigraph) abstracts away most of ENS's protocol complexity, but a handful of concepts explain _how_ it presents ENSv1 and ENSv2 through a single unified schema. You don't need these to send your first query, only to understand how the Omnigraph represents the state of the ENS protocol.
The [ENS Omnigraph API](/docs/integrate/omnigraph) abstracts away most of the complexity of the ENS protocol. There are still some core concepts that are useful to learn. These concepts will help you understand _how_ the Omnigraph presents ENSv1 and ENSv2 through a single unified schema. You don't need to master these concepts to build your first Omnigraph query, but as you level-up to building more advanced ENS features in your app, these concepts will help you to understand how the Omnigraph represents the state of the ENS protocol.


### InterpretedName with Encoded LabelHash Example

As noted above, an InterpretedName may contain Labels that are [Encoded LabelHashes](/docs/reference/terminology#encoded-labelhash), meaning that the human-readable Label isn't known or isn't normalizable. The Omnigraph still supports referencing Domains by these InterpretedNames, like so:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
As noted above, an InterpretedName may contain Labels that are [Encoded LabelHashes](/docs/reference/terminology#encoded-labelhash), meaning that the human-readable Label isn't known or isn't normalizable. The Omnigraph still supports referencing Domains by these InterpretedNames, like so:
As noted above, an InterpretedName may contain Labels that are [Encoded LabelHashes](/docs/reference/terminology#encoded-labelhash), meaning that the human-readable Label isn't known or isn't normalized. The Omnigraph still supports referencing Domains by these InterpretedNames, like so:


### BeautifiedNames and BeautifiedLabels

For some labels and names, there exists an [ENSIP-15](https://docs.ens.domains/ensip/15) beautified form, where certain normalized characters are 'beautified' into their _un-normalized_ but prettier forms.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For some labels and names, there exists an [ENSIP-15](https://docs.ens.domains/ensip/15) beautified form, where certain normalized characters are 'beautified' into their _un-normalized_ but prettier forms.
For some labels and names, there exists an [ENSIP-15](https://docs.ens.domains/ensip/15) beautified form, where certain normalized characters are 'beautified' into their _un-normalized_ but _normalizable_ prettier forms.


For some labels and names, there exists an [ENSIP-15](https://docs.ens.domains/ensip/15) beautified form, where certain normalized characters are 'beautified' into their _un-normalized_ but prettier forms.

For example, the InterpretedName `♾.eth` (normalized) would be beautified to `♾️.eth` (un-normalized). All name and label fields in the Omnigraph provide a `beautified` variant which can be used for display.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
For example, the InterpretedName `♾.eth` (normalized) would be beautified to `♾️.eth` (un-normalized). All name and label fields in the Omnigraph provide a `beautified` variant which can be used for display.
For example, the InterpretedName `♾.eth` (normalized) would be beautified to `♾️.eth` (un-normalized, but is normalizable back to `♾.eth`). All name and label fields in the Omnigraph provide a `beautified` variant which can be used for display.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants