Skip to content

chore: upgrade UI to Next 16 / React 19.2 / Biome 2 (+ Go fallback dedup)#1273

Merged
Majorfi merged 3 commits into
mainfrom
chore/deps-upgrade-next16
Jul 11, 2026
Merged

chore: upgrade UI to Next 16 / React 19.2 / Biome 2 (+ Go fallback dedup)#1273
Majorfi merged 3 commits into
mainfrom
chore/deps-upgrade-next16

Conversation

@Majorfi

@Majorfi Majorfi commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Upgrades the browsing UI to the latest dependency stack and completes the migration so tsc, biome check, and next build all pass.

Two commits

  1. chore(ui): upgrade to Next 16, React 19.2, Biome 2, viem 2.55 — the migration (below).
  2. refactor(goAPI): fold the two identical fallback handlers into one helper — an unrelated CDN-server dedup (resolveNotFound/resolveGasToken became byte-identical after the earlier ?fallback redirect fix). Verified behavior-identical.

Migration highlights

  • TypeScript stays on 5.9 — Next 16 does not support the TypeScript 7 native preview that bun update pulled in (verify-typescript-setup resolves typescript to undefined and require()s it → build crash). Pinning back to 5.x was the fix.
  • Biome 2: migrated biome.json (organizeImportsassist, recommendedpreset, renamed rules). This reformatted imports/JSX across the app, so most of the file count is mechanical. Suppressed noImgElement on the Satori/next-og <img> (must be raw <img>) and the view-cookie noDocumentCookie; excluded .svg assets from lint.
  • React 19: useRef now needs an initial arg; useRef(null) yields a nullable RefObject → fixed useIntersectionObserver and GridView.
  • Next 16: Turbopack is the default builder, so build/dev keep the SVGR webpack config via --webpack; added sharp for image optimization.
  • Lockfiles: dropped the redundant _config/ui/package-lock.json so Next stops running npm install mid-build against it (the project builds with bun, as does CI).

Verification

  • tsc --noEmit (TS 5.9.3) — 0 errors
  • biome check — clean
  • next build — compiles + generates all static pages

Runtime not yet verified — please eyeball the Vercel preview deploy before merging to prod (major React 19 / Next 16 bump; the build passing doesn't guarantee runtime rendering).

Majorfi added 2 commits July 11, 2026 08:21
…lper

resolveNotFound and resolveGasToken became byte-identical after the
redirect rewrite — only the placeholder image path differed. Replace both
with resolveFallback(c, placeholder); serveChain reuses it too. No
behavior change (verified: fallback=true, http(s) redirect, scheme guard,
404, chain placeholder).
Bumps UI deps to latest, keeping TypeScript on 5.9 — Next 16 does not
support the TypeScript 7 native preview (its verify-typescript-setup
resolves `typescript` to undefined and require()s it, crashing the build).

Migration work:
- Biome 2: migrated biome.json (organizeImports -> assist, recommended ->
  preset, renamed rules), which reformatted imports/JSX across the app;
  suppressed noImgElement on the Satori/next-og <img> and the view-cookie
  noDocumentCookie; excluded .svg assets from lint.
- React 19: useRef now requires an initial arg, and useRef(null) yields a
  nullable RefObject — fixed useIntersectionObserver and GridView's ref.
- Next 16: Turbopack is the default builder, so build/dev keep the SVGR
  webpack config via --webpack; added sharp for image optimization.
- Dropped the redundant _config/ui/package-lock.json so Next stops running
  npm install mid-build against it (the project builds with bun, as does CI).

Verified: tsc, biome check, and next build all pass.
@vercel

vercel Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
token-assets Ready Ready Preview, Comment Jul 11, 2026 7:27am

Request Review

Closing the intercepted token drawer flips isDrawerOpen to false. Because
it was an effect dependency, that re-ran the SearchBar's URL-push effect
while the debounced value was still the token's search — re-applying
?search right after router.back() had cleared it, so the list defiltered
then refiltered (the visible flash). Read isDrawerOpen through a ref so the
close no longer re-runs the effect.
@Majorfi Majorfi merged commit abb399a into main Jul 11, 2026
7 checks passed
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