Skip to content

feat(supported-networks): table refactor, tiered support chips, and per-network custom pages - #1123

Open
brandonleekramer wants to merge 11 commits into
mainfrom
bsc-polygon-changes
Open

brandonleekramer wants to merge 11 commits into
mainfrom
bsc-polygon-changes

Conversation

@brandonleekramer

Copy link
Copy Markdown
Member

Summary

Overhauls the Supported Networks experience end to end: the /supported-networks
table and its data model, the top-of-page network detail table, the "Guides" card
sets, and per-network custom landing pages — now componentized and expanded so
every network in the table has a custom page. Custom-page files are named by
their registry id; all URL friendliness lives in a docs-only slug layer, and the
networks registry itself is unchanged.

Supported Networks table (NetworksTable.tsx, utils.ts)

  • Consolidated the separate Substreams and Firehose columns into one
    Firehose/Substreams column (both derived from the same support signal). The
    table is now Name · Subgraphs · Firehose/Substreams.
  • All network icons use the white mono variant for a uniform look on the dark
    background; removed the old MONO_ICON_NETWORKS per-network workaround list.
  • Replaced checkmarks with three-tier chips (one per product column):
    • Subgraphs (highest applicable wins): REWARDS (issuanceRewards: true) ·
      COMMUNITY (a backstopSupport provider in services.subgraphs, e.g. InfraDAO
      or StreamingFast) · STUDIO (Studio deploy URL only).
    • Firehose/Substreams (needs ≥1 provider): NON-EVM · EXTENDED
      (firehose.evmExtendedModel) · BASE.
    • Colors: STUDIO/NON-EVM white · COMMUNITY/BASE #4C9EFF ·
      REWARDS/EXTENDED #4BCA81.
  • Rebuilt the top-of-table legend to describe all six chips.

Network detail header table (NetworkDetailsPage.tsx)

  • Adds a Subgraphs row and a Substreams row above Type, using the same tier
    logic as the table above.
    • Subgraphs: a "Subgraph Studio" link whose label and suffix depend on tier —
      COMMUNITY → "Subgraph Studio (API Keys)" + "Community Indexing"; REWARDS
      "Subgraph Studio" + "Network Rewards"; STUDIO → "Subgraph Studio".
    • Substreams: block model in the label (Non-EVM / Base EVM / Extended EVM)
      plus the services.substreams providers (The Graph Market, Pinax Network),
      dot-separated.
  • Renames the last table label from "Docs" to "Chain Docs" (via the index.json
    string table).

Guides cards (ResourceCards.tsx)

  • Adds subgraphsAndSubstreamsCards (3×3 layout for chains with both products).
  • Renames evmSubgraphsOnlyCardssubgraphsOnlyCards and nonEvmCards
    substreamsOnlyCards; removes evmCards (substreams-only EVM chains now use
    substreamsOnlyCards).

Per-network custom pages (customContent/)

  • Reusable MDX components replacing duplicated inline Markdown, driven by per-chain
    props (chainName, title, networkId, slug, explorerUrl, explorerName, rpcUrl):
    • _substreams-extended.mdx — extended EVM block model
    • _substreams-base.mdx — base EVM block model
    • _subgraph-community.mdx — publish + curation so select Indexers pick it up
      (customNetwork/noStudio flags for the Anubis variant)
    • _subgraph-studio.mdx — publishing enabled but no guaranteed network indexing yet;
      develop/test/query via Subgraph Studio, with a prominent caveat callout
  • BSC & Polygon (bsc.mdx, matic.mdx) full landing pages: both Subgraph and
    Substreams sections, all Subgraph Studio support language removed, a six-card grid
    of verified currently-published subgraphs per chain, and an "Indexing {Chain} with
    Substreams" section.
  • Substreams-only chains: Ink, HyperEVM, Robinhood, Monad, Worldchain, Zora
    (extended); Bitcoin, Blast, Ethereum/Hoodi/Sepolia/Gnosis Beacon, Injective,
    Litecoin, MegaETH, Solana (Devnet/Mainnet/Accounts), Starknet, Stellar, TRON,
    TRON EVM, Vaulta, WAX (base). Copy is tailored per chain family (EVM, SVM, UTXO,
    Cosmos, Starknet, Stellar, TRON, Antelope, beacon) so non-EVM/consensus pages never
    reference EVM contracts or DeFi-swap examples.
  • Subgraph sections (community/studio) rolled out across ~55 chains (mainnets + testnets).
  • Studio-only pages added for kaia, kaia-testnet, neox, neox-testnet, viction,
    zetachain — closing the gap so every network in the table now has a custom page.
  • Gnosis: callout that Subgraphs previously using the xdai identifier should now use
    gnosis (redundant line removed from supported-networks.mdx).
  • All customContent filenames named by their registry id (e.g. btc.mdx,
    eos.mdx, mainnet-cl.mdx, injective-mainnet.mdx, solana-mainnet-beta.mdx).

Friendly URLs & redirects (slugs.ts, [id].mdx, nginx.conf)

  • Docs-only slug layer (slugs.ts) maps registry IDs to friendly URLs without touching
    the registry: btc→bitcoin, blast-mainnet→blast, mainnet-cl→ethereum-beacon,
    hoodi-cl→ethereum-hoodi, sepolia-cl→ethereum-sepolia, eos→vaulta,
    injective-mainnet→injective, solana-mainnet-beta→solana (solana-accounts keeps
    its own page; slugCanonicalId disambiguates the shared solana slug).
    getStaticPaths/getStaticProps emit and resolve slugs; the table links to slugs.
  • Eight permanent nginx redirects (nginx.conf) from the old registry-id URLs to the
    new slugs (the site uses static export).

Copy (pages/en/index.json)

  • Header, legend, "Chain Docs" label, the firehoseSubstreams column title, and the
    shortened callout: "Contact The Graph Foundation to integrate or request a new
    network, discuss indexing rewards, or learn more about custom data solutions."

Dependency note

The COMMUNITY tier reads backstopSupport inside services.subgraphs, which ships
in the networks-registry add-infra-backstop branch. The docs read the registry via
fromLatestVersion(), so COMMUNITY chips populate automatically once that data is
published; field access is narrowed at runtime, so it compiles against the current
@pinax/graph-networks-registry (string[]) types today.

Testing

  • tsc / pnpm typecheck passes (0 errors); Prettier clean. MDX compiles via Nextra;
    customContent/index.ts stays consistent (imports ↔ map ↔ files).

Reviewer notes & follow-ups

  • Subgraph cards ranked on curation signal + recognizability (the 30-day query-count API
    returned all zeros, so query-volume ranking wasn't available).
  • studio chains intentionally show a "publishing enabled, no guaranteed indexing" callout.
  • near / near-testnet skipped for the studio variant (non-EVM graph init flow
    wouldn't be accurate) — NEAR-specific variant is a follow-up.
  • Explorer-name guesses worth a skim: Arc (arcscan.app, blank in registry), Snowscan,
    Chiliscan, Seitrace, Subscan, Stablescan, OKLink, Neo X Explorer, and Blockscout-style
    explorers (Etherlink/Hemi/Japan Open Chain).
  • Not in this PR: a rewards subgraph variant (indexing-rewards chains), componentizing
    non-EVM Substreams sections, and the NEAR subgraph (studio) variant.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Ms4WKyDtYzfNzYZCBorRZE

brandonleekramer and others added 11 commits September 17, 2026 01:09
Supported networks table refactor:
- Merge the separate Substreams and Firehose columns into a single
  "Firehose/Substreams" column (they already derive from one shared
  support signal). Adds the firehoseSubstreams i18n header key and
  exposes firehoseSubstreamsSupportLevel; per-service aliases are kept
  for the network details page.
- Render all network icons with the white "mono" variant instead of
  branded, so icons are uniform and legible on the dark background.
  Removes the MONO_ICON_NETWORKS per-network workaround list.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XdQZoMoncvZ6pNtp1d8yYT
…support chips

- Add custom Supported Networks landing pages for BSC and Polygon
  (customContent/bsc.mdx, customContent/polygon.mdx), registered in
  customContent/index.ts. Each covers finding existing Subgraphs (six
  curated protocol cards), building your own Subgraph, and consuming
  data with Substreams.
- Show tiered support chips in the Supported Networks table — Subgraphs
  (Studio/Community/Rewards) and Firehose/Substreams (Non-EVM/Base/
  Extended) — in NetworksTable.tsx and utils.ts, with matching legend
  copy in en/index.json.
- Render the "Guides" heading via Heading.H3 for consistent sizing
  (NetworkDetailsPage.tsx).
- Load the published networks registry directly in utils.ts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0196BWSuDAPjD34gXd1CiRXB
… redirects

- Add Substreams-only custom pages for chains with Substreams (but no
  Subgraph) support: Ink, HyperEVM, Robinhood, Monad, World Chain, Zora,
  Bitcoin, Blast, Ethereum/Sepolia/Hoodi/Gnosis beacon chains, Injective,
  Litecoin, MegaETH, Solana (mainnet, devnet, accounts), Starknet, Stellar,
  TRON, TRON EVM, Vaulta, and WAX. Copy is tailored per chain family
  (EVM base, SVM, UTXO, Cosmos, Antelope, consensus-layer) with the correct
  base block model and substreams init flow.
- Add a docs-only slug layer (slugs.ts) so selected networks render at
  friendly URLs (bitcoin, blast, ethereum-beacon, ethereum-hoodi,
  ethereum-sepolia, vaulta, injective, solana); getStaticPaths/getStaticProps
  and the table row links resolve through it. Registry ids are unchanged.
- Add nginx 301 redirects from the old registry-id URLs to the new slugs.
- Trim the Supported Networks CTA copy and align the tier chip blue with the
  CTA (galactic-500).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0196BWSuDAPjD34gXd1CiRXB
…stom pages

Network header table (NetworkDetailsPage): add Subgraphs and Substreams rows above Type. Subgraphs shows Subgraph Studio linked, with a Community Indexing / Network Rewards suffix by tier; Substreams shows the block model in the label and its services.substreams providers (The Graph Market, Pinax Network) separated by a dot. Rename the last table label to "Chain Docs".

Guides cards (ResourceCards): add subgraphsAndSubstreamsCards (3x3, both products), rename evmSubgraphsOnlyCards -> subgraphsOnlyCards and nonEvmCards -> substreamsOnlyCards, and remove evmCards (substreams-only EVM chains now use substreamsOnlyCards).

Custom pages: add Studio-only pages for kaia, kaia-testnet, neox, neox-testnet, viction, zetachain; normalize all customContent filenames to their network id.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01Ms4WKyDtYzfNzYZCBorRZE
…tions

The four reusable customContent partials opened and closed their leading
JSX comment with backslash-escaped asterisks ({/\* ... \*/}), which MDX/acorn
cannot parse ("Could not parse expression with acorn"), failing the pnpm build.
Replace with valid {/* ... */} delimiters.

Verified: all 103 customContent .mdx files compile against @mdx-js/mdx 3.1.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ms4WKyDtYzfNzYZCBorRZE
Prettier (3.9.6) rewrites the leading {/* ... */} JSX comment in the four
reusable customContent partials into {/\* ... \*/}, escaping the asterisks.
MDX/acorn cannot parse the escaped form ("Could not parse expression with
acorn"), which failed `pnpm build` — and every `prettier` run re-introduced it,
reverting the earlier delimiter fix (commit 91423a2).

Add the four partials to .prettierignore so prettier no longer rewrites them,
and restore valid {/* ... */} delimiters.

Verified: prettier --write leaves the partials untouched, and all 103
customContent .mdx files compile against @mdx-js/mdx 3.1.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ms4WKyDtYzfNzYZCBorRZE
Four .fuse_hidden* files (FUSE artifacts created when open files were unlinked
over the mount) were accidentally committed under customContent in 50d2f1f.
Remove them from the repo and add a .gitignore rule so they can't be committed
again. The real Fuse network pages (fuse.mdx, fuse-testnet.mdx) are unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ms4WKyDtYzfNzYZCBorRZE
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.

1 participant