Skip to content

docs(core): add upgrade callout to legacy contract-addresses pages#3754

Open
aditya520 wants to merge 4 commits into
mainfrom
docs/core-page-upgrade-callouts
Open

docs(core): add upgrade callout to legacy contract-addresses pages#3754
aditya520 wants to merge 4 commits into
mainfrom
docs/core-page-upgrade-callouts

Conversation

@aditya520
Copy link
Copy Markdown
Member

@aditya520 aditya520 commented May 22, 2026

Summary

  • New reusable <UpgradeCallout chain="..." /> MDX component (lives at apps/developer-hub/src/components/MigrationFlow/UpgradeCallout.tsx) that surfaces a Warn-level Pyth Core upgrade notice on each legacy contract-addresses/* page.
  • Globally registered in mdx-components.tsx — authors just write <UpgradeCallout chain="evm" />, no per-file import.
  • Applied to all 12 legacy /price-feeds/core/contract-addresses/*.mdx pages (Pythnet skipped — Pythnet itself isn't part of the consumer-side upgrade).
  • Picks one of 4 variants based on the chain prop:
    • index — overview page, generic copy
    • Supported-simple (sui, solana) — chain is fully in the upgrade
    • Supported-partial (evm) — chain is in scope but only some EVM chains are upgraded; mentions "contact team if your chain isn't listed"
    • Not-in-upgrade (aptos, cosmwasm, fuel, iota, movement, near, starknet, ton) — explicit "{Chain} is not part of the upgrade", contact team for support

Test plan

  • /price-feeds/core/contract-addresses → index variant renders
  • /price-feeds/core/contract-addresses/evm → V2 (partial-coverage) variant + Contact-the-team link
  • /price-feeds/core/contract-addresses/sui → V1 (auto-upgrade) variant + correct anchor
  • /price-feeds/core/contract-addresses/solana → V1 variant
  • /price-feeds/core/contract-addresses/aptos → V3 (not-in-upgrade) variant
  • Spot-check remaining V3 pages: cosmwasm, fuel, iota, movement, near, starknet, ton
  • Light + dark mode rendering OK
  • All embedded links resolve (upgrade guide, upgraded {chain} addresses, mailto)

🤖 Generated with Claude Code


Open in Devin Review

Build a reusable UpgradeCallout MDX component that renders a Warn-level
Pyth Core upgrade notice on each legacy contract-addresses page, and
register it globally via mdx-components so author MDX only needs
<UpgradeCallout chain="..." />.

The component picks one of four variants based on the chain prop:
- index (the top-level overview page)
- supported-simple (Sui, Solana): full-chain upgrade, point to upgrade
  guide and upgraded {chain} addresses
- supported-partial (EVM): only some EVM chains are in the upgrade;
  contact team if chain is not listed
- not-in-upgrade (Aptos, CosmWasm, Fuel, IOTA, Movement, NEAR, Starknet,
  TON): explicit "{Chain} is not part of the upgrade"; learn more or
  contact team

Applied to 12 contract-addresses MDX pages. Pythnet skipped because
Pythnet itself is unchanged by the consumer-side upgrade.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

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

Project Deployment Actions Updated (UTC)
component-library Ready Ready Preview, Comment May 22, 2026 8:53pm
developer-hub Ready Ready Preview, Comment May 22, 2026 8:53pm
5 Skipped Deployments
Project Deployment Actions Updated (UTC)
api-reference Skipped Skipped May 22, 2026 8:53pm
entropy-explorer Skipped Skipped May 22, 2026 8:53pm
insights Skipped Skipped May 22, 2026 8:53pm
proposals Skipped Skipped May 22, 2026 8:53pm
staking Skipped Skipped May 22, 2026 8:53pm

Request Review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

🤖 llms.txt Content Review

Analyzed documentation changes — no updates to curated content required.

Products reviewed: llms-price-feeds-core.txt, llms-price-feeds.txt

Note: Product files contain curated content. Deep dive page URLs in each file link to individual .mdx pages for full detail.

Files analyzed
apps/developer-hub/content/docs/price-feeds/core/best-practices.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/aptos.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/cosmwasm.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/evm.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/fuel.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/index.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/iota.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/movement.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/near.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/solana.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/starknet.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/sui.mdx
apps/developer-hub/content/docs/price-feeds/core/contract-addresses/ton.mdx
apps/developer-hub/content/docs/price-feeds/core/create-your-first-pyth-app/evm/part-2.mdx
apps/developer-hub/content/docs/price-feeds/core/fetch-price-updates.mdx
apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/aptos.mdx
apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/cosmwasm.mdx
apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/fuel.mdx
apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/iota.mdx
apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional findings.

Open in Devin Review

"For the full path" was ambiguous; "path" can read as a URL or route.
"For how to upgrade" makes the link's intent explicit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
For the 8 chains being dropped at the July 31, 2026 upgrade (Aptos,
CosmWasm, Fuel, IOTA, NEAR, Stacks, Starknet, TON), add an UpgradeCallout
at the top of each /use-real-time-data/pull-integration page warning
readers that Pyth Core will be dropped on that chain and pointing them
to contact the team for support.

Also harden the V3 (dropped-chain) variant wording across both
contract-addresses and integration surfaces:
- before: "{Chain} is not part of the upgrade. See the upgrade guide
  to learn more, or contact the team for support on this chain."
- after:  "Pyth Core on {Chain} will be dropped at the upgrade. Contact
  the team if you need support."

The upgrade-guide link is dropped from V3 because the guide describes
chains in the upgrade and isn't useful for these dropped chains; the
only action available is to contact the team for support.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel vercel Bot temporarily deployed to Preview – insights May 22, 2026 19:58 Inactive
@vercel vercel Bot temporarily deployed to Preview – entropy-explorer May 22, 2026 19:58 Inactive
@vercel vercel Bot temporarily deployed to Preview – proposals May 22, 2026 19:58 Inactive
@vercel vercel Bot temporarily deployed to Preview – api-reference May 22, 2026 19:58 Inactive
@vercel vercel Bot temporarily deployed to Preview – staking May 22, 2026 19:58 Inactive
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 3 new potential issues.

View 5 additional findings in Devin Review.

Open in Devin Review

Comment on lines +4 to +30
type Chain =
| "index"
| "evm"
| "sui"
| "solana"
| "aptos"
| "cosmwasm"
| "fuel"
| "iota"
| "movement"
| "near"
| "starknet"
| "ton";

const CHAIN_LABELS: Record<Exclude<Chain, "index">, string> = {
evm: "EVM",
sui: "Sui",
solana: "Solana",
aptos: "Aptos",
cosmwasm: "CosmWasm",
fuel: "Fuel",
iota: "IOTA",
movement: "Movement",
near: "NEAR",
starknet: "Starknet",
ton: "TON",
};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔴 "stacks" is not in the Chain type or CHAIN_LABELS, causing missing chain name in rendered callout

stacks.mdx:13 uses <UpgradeCallout chain="stacks" />, but "stacks" is not included in the Chain type union (UpgradeCallout.tsx:4-16) or the CHAIN_LABELS map (UpgradeCallout.tsx:18-30). Since MDX does not enforce TypeScript prop types at runtime, this won't be caught by the type checker. At runtime, CHAIN_LABELS["stacks"] evaluates to undefined, the chain doesn't match SUPPORTED_SIMPLE or SUPPORTED_PARTIAL, so it falls through to the default branch at UpgradeCallout.tsx:81-87 which renders "Pyth Core on {label}" — but label is undefined, so the rendered text will be "Pyth Core on will be dropped at the upgrade." with the chain name missing.

Prompt for agents
The Chain type union (UpgradeCallout.tsx:4-16) and CHAIN_LABELS record (UpgradeCallout.tsx:18-30) are both missing "stacks", but stacks.mdx uses <UpgradeCallout chain="stacks" />. Either add "stacks" to the Chain type and CHAIN_LABELS (with a label like "Stacks"), or remove the UpgradeCallout usage from stacks.mdx. If adding it, also decide whether stacks should be in SUPPORTED_SIMPLE, SUPPORTED_PARTIAL, or the default (unsupported/dropped) set.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +81 to +87
return (
<Callout type="warn">
<strong>Pyth Core upgrades on July 31, 2026.</strong> Pyth Core on {label}{" "}
will be dropped at the upgrade. <a href={contactMail}>Contact the team</a>{" "}
if you need support.
</Callout>
);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🚩 Default fallback message tells users their chain "will be dropped" — potentially alarming for chains not yet categorized

The default branch at UpgradeCallout.tsx:81-87 renders a message saying "Pyth Core on {label} will be dropped at the upgrade." This is the fallback for any chain not in SUPPORTED_SIMPLE (sui, solana) or SUPPORTED_PARTIAL (evm). That means aptos, cosmwasm, fuel, iota, movement, near, starknet, and ton all get the "will be dropped" message. This may be intentional, but it's worth verifying that this is the correct messaging for all of these chains — especially since some (like Aptos) have active mainnet deployments. If the intent is different for some chains, they may need additional sets or branches.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Update Hermes code samples on supported-chain integration guides and
cross-chain tutorial/best-practices pages to default to the upgraded
endpoint and include authentication, while still showing the current
endpoint as a Tab for readers who need to ship before cutover.

Per-file changes:
- pull-integration/sui.mdx: add UpgradeCallout, add info Callout about
  the Move.toml `rev` change to sui-pro-compatible-contract-mainnet
  after July 31, 2026, drop hermes-beta from SuiPriceServiceConnection
  and CLI example, point contract-address reference to /upgrade/contracts#sui
- pull-integration/solana.mdx: add UpgradeCallout, wrap first
  HermesClient instantiation in Tabs (Upgraded / Current endpoint),
  both include accessToken
- fetch-price-updates.mdx: add UpgradeCallout (index variant), wrap
  the first REST curl in Tabs, default streaming + SDK samples to the
  upgraded endpoint + auth, update Hermes Swagger link
- best-practices.mdx: add UpgradeCallout (index variant), update Hermes
  Swagger links (both occurrences) to pyth.dourolabs.app/hermes/docs
- create-your-first-pyth-app/evm/part-2.mdx: add UpgradeCallout (EVM
  variant), wrap curl in Tabs, switch HermesClient to upgraded
  endpoint + accessToken

Per user direction: Tabs are used only at the first Hermes
instantiation in each file; subsequent references use the upgraded
endpoint directly. hermes-beta is dropped entirely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel vercel Bot temporarily deployed to Preview – proposals May 22, 2026 20:51 Inactive
@vercel vercel Bot temporarily deployed to Preview – entropy-explorer May 22, 2026 20:51 Inactive
@vercel vercel Bot temporarily deployed to Preview – insights May 22, 2026 20:51 Inactive
@vercel vercel Bot temporarily deployed to Preview – api-reference May 22, 2026 20:51 Inactive
@vercel vercel Bot temporarily deployed to Preview – staking May 22, 2026 20:51 Inactive
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 2 new potential issues.

View 6 additional findings in Devin Review.

Open in Devin Review

Comment on lines +7 to +8
<UpgradeCallout chain="near" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🚩 NEAR integration guide still references old hermes endpoints without upgrade tabs

The NEAR integration guide (near.mdx) adds <UpgradeCallout chain="near" /> at the top but still contains hardcoded references to hermes.pyth.network and hermes-beta.pyth.network in the code examples at apps/developer-hub/content/docs/price-feeds/core/use-real-time-data/pull-integration/near.mdx:83-84. Unlike other integration guides (EVM, Solana, Sui) which were updated to show tabbed "Upgraded endpoint" / "Current endpoint" examples, the NEAR guide's code samples still point only to the old endpoints. This is inconsistent with the migration pattern applied elsewhere in this PR.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +12 to +13
<UpgradeCallout chain="ton" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🚩 TON integration guide code example still uses old hermes endpoint without upgrade tabs

Similar to the NEAR guide, the TON integration guide at ton.mdx adds the UpgradeCallout but the TypeScript code example at line 86 still references https://hermes.pyth.network without the tabbed upgrade pattern used in the EVM, Solana, and Sui guides. This creates an inconsistent developer experience where some guides show both endpoints and others don't.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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