Skip to content

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

Merged
brandonleekramer merged 22 commits into
mainfrom
bsc-polygon-changes
Sep 23, 2026
Merged

brandonleekramer merged 22 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 22 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
… entries

Detect Studio support from bare Studio URLs or kind: 'studio' entries and
backstop support from kind: 'backstop' entries (legacy backstopSupport still
accepted), matching the networks-registry add-infra-backstop schema. Build the
network details Subgraphs row from the Studio/backstop/rewards flags so
networks like Rootstock show both Community Indexing and Network Rewards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
…en tiers

Port the tier chip approach from bsc-polygon-changes-experimental and map
tiers to a consistent progression: STUDIO/NON-EVM neutral, COMMUNITY/BASE
blue, REWARDS/EXTENDED green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
…legend

Subgraphs: STUDIO neutral, COMMUNITY purple, REWARDS pink.
Firehose/Substreams: BASE blue, EXTENDED turquoise, NON-EVM green.
List the Substreams legend as Base, Extended, Non-EVM.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
Subgraphs: STUDIO pink, COMMUNITY blue, REWARDS purple.
Firehose/Substreams: BASE neutral, EXTENDED turquoise, NON-EVM green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
BASE turquoise, EXTENDED green, NON-EVM neutral.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
…nt exists

Zora's registry icon only lists branded/background variants, so render the
branded icon for networks without a mono variant instead of a blank icon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
…t a template

substreams init (streamingfast/substreams-codegen) only ships templates for
EVM, Solana blocks, NEAR, Starknet, Stellar, TRON, Injective and Mantra.
For Bitcoin, Litecoin, Antelope (Vaulta, Jungle4, WAX, WAX testnet), Beacon
Chain (Ethereum, Sepolia, Hoodi, Gnosis) and Solana Accounts (explicitly
excluded from the Solana templates), replace the init step with manual
manifest setup naming each chain's block type and Buf schema.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
…providers

Every network page said Substreams was available "via The Graph Market and
Pinax Network". Derive the provider list from each network's
services.substreams endpoints in the published registry (streamingfast.io ->
The Graph Market, pinax.network -> Pinax Network, data.nexus -> Data Nexus):
27 networks are Pinax-only, 15 The Graph Market-only, 2 Pinax + Data Nexus
and 4 have all three.

Where The Graph Market is not a provider, point step 1 of the Substreams
quick start to Pinax Network for an API key; the EVM Substreams partials
take a new keyProvider="pinax" prop for this. Add Data Nexus to the
Substreams providers shown in the network details table.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
STUDIO blue, COMMUNITY purple, REWARDS pink.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
@pinax/graph-networks-registry (latest 0.7.1) only fetches the registry's
v0.7.x feed, which strips the structured services.subgraphs entries
(gateway/studio/backstop) added in registry v0.8.0 - so backstop networks
(Anubis, Boba, Fraxtal, Fuse, Injective EVM, Rootstock and testnets) lost
their COMMUNITY chip and mostly dropped off the table.

Fetch TheGraphNetworksRegistry_v0_8_x.json from networks-registry.thegraph.com
(GitHub raw fallback, as the library does) and type services.subgraphs with
the v0.8 entry shape. v0.8.2 is otherwise identical to v0.7.125. The library
stays installed for its types (Network, NetworkType).

Verified against the live feed: 99 networks shown; Subgraphs chips 40 STUDIO,
9 COMMUNITY, 20 REWARDS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MrpkZXxp795okFZcXgW1B4
@brandonleekramer
brandonleekramer merged commit 34ed95f into main Sep 23, 2026
4 checks passed
@brandonleekramer
brandonleekramer deleted the bsc-polygon-changes branch September 23, 2026 19:35
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.

2 participants