Skip to content

hotfix(compare): clean 404 SSR by dropping loading.tsx + early hasSharedBenches gate - #622

Merged
Flotapponnier merged 1 commit into
mainfrom
hotfix/compare-ssr-clean-404
Jun 21, 2026
Merged

hotfix(compare): clean 404 SSR by dropping loading.tsx + early hasSharedBenches gate#622
Flotapponnier merged 1 commit into
mainfrom
hotfix/compare-ssr-clean-404

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Hotfix to main, equivalent of #621 (dev)

PR #613 left valid ad-hoc /compare/-vs- URLs serving HTTP 200 + a loading skeleton + noindex meta. With loading.tsx in place, Next 16 streams the skeleton with 200 status before the page body's notFound() can demote the status. Plus generateMetadata only checked that both providers exist, missing the no-shared-bench case.

This hotfix lands the same fix as #621 (dev) but inline on main's older file structure (compare-compute helper module not yet extracted on main).

Curl evidence on prod (current main, f6e306b)

/compare/alchemy-vs-quicknode   200 <title>Page not found</title> noindex 45977 bytes (loading shell)
/compare/mobula-vs-coingecko    308 -> coingecko-vs-mobula then 200 same shell
/compare/alchemy-vs-helius      200 <title>Alchemy vs Helius</title> noindex 46516 bytes (loading shell)
/compare/binance-vs-bybit       200 real h1, 66 KB (works)
/compare/ethereum-vs-solana     200 real h1, 87 KB (works)

After fix (local pnpm build + pnpm start)

/compare/alchemy-vs-quicknode   404 Page not found      (quicknode missing)
/compare/mobula-vs-coingecko    308 -> coingecko-vs-mobula then 404 (coingecko missing)
/compare/alchemy-vs-helius      404 Page not found      (no shared bench)
/compare/quicknode-vs-alchemy   308 to canonical        (middleware)
/compare/binance-vs-bybit       200 real h1             (valid ad-hoc)
/compare/ethereum-vs-solana     200 real h1             (curated)

pnpm typecheck, pnpm lint, pnpm test all green.

Test plan

  • Merge to main, run vercel --prod
  • Curl /compare/alchemy-vs-helius with random cb param to bypass cache, confirm 404
  • Curl /compare/ethereum-vs-solana, confirm 200 with real h1
  • Spot-check a few curated pairs (codex-vs-mobula, arbitrum-vs-base) for 200 + real content

…#621)

PR #613 left valid ad-hoc /compare/<a>-vs-<b> URLs serving HTTP 200 +
a loading skeleton + noindex meta. With loading.tsx in place, Next 16
streams the skeleton with 200 before the page body's notFound() can
demote the status. Plus generateMetadata only checked that both
providers exist, missing the no-shared-bench case.

This hotfix lands the same fix as PR #621 (dev) but inline on main's
older file structure (no extracted compare-compute helper module
yet). hasSharedBenches() is a pure set arithmetic helper on
appearances, no Prom fan out. loading.tsx removal lets notFound()
ship a real 404.

Verified locally:

  /compare/alchemy-vs-quicknode  -> 404 (quicknode missing)
  /compare/mobula-vs-coingecko   -> 308 then 404 (coingecko missing)
  /compare/alchemy-vs-helius     -> 404 (no shared bench)
  /compare/quicknode-vs-alchemy  -> 308 to canonical
  /compare/binance-vs-bybit      -> 200 real h1 (valid ad-hoc)
  /compare/ethereum-vs-solana    -> 200 real h1 (curated)
@Flotapponnier
Flotapponnier merged commit 2065ea7 into main Jun 21, 2026
1 check passed
@Flotapponnier
Flotapponnier deleted the hotfix/compare-ssr-clean-404 branch June 21, 2026 14:09
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