Skip to content

Upgrade web to Next 16 + Tailwind v4, add Vercel Analytics#12

Merged
nixrajput merged 5 commits into
mainfrom
chore/web-deps-upgrade
Jun 26, 2026
Merged

Upgrade web to Next 16 + Tailwind v4, add Vercel Analytics#12
nixrajput merged 5 commits into
mainfrom
chore/web-deps-upgrade

Conversation

@nixrajput

Copy link
Copy Markdown
Owner

Upgrades the web/ app to the latest stable framework versions, migrates Tailwind to v4, and wires up Vercel Web Analytics. All work is scoped to web/ — no Go code is touched.

Dependency upgrades

  • Next.js 15.1 → 16.2.9 with Turbopack enabled for dev and build.
  • React / react-dom 19.0 → 19.2.7.
  • Tailwind CSS 3.4 → 4.3 — full CSS-first migration.
  • TypeScript 5.7 → 6.0, react-markdown 9 → 10, @types/node 22 → 26, plus minor/security/bug-fix bumps across the board.
  • autoprefixer removed (Tailwind v4 handles prefixing via Lightning CSS).
  • Web app version set to 1.0.0 to match the siphon release.

Tailwind v4 migration details

  • PostCSS plugin → @tailwindcss/postcss; CSS entry → @import "tailwindcss"; tailwind.config.ts deleted (CSS-first, tokens stay as CSS variables in globals.css).
  • Adopted v4 syntax: [var(--x)](--x) shorthand across all components; bg-gradient-to-rbg-linear-to-r; bare roundedrounded-sm (v4 shifted the radius scale).

ESLint

  • Moved to a flat eslint.config.mjs (Next 16 flat-config arrays); eslint . replaces the deprecated next lint.
  • Pinned ESLint to 9.x: ESLint 10 (just released) is incompatible with the eslint-plugin-react bundled in eslint-config-next@16 (calls context.getFilename(), removed in 10). Revisit once Next's config supports 10.

Vercel Web Analytics

  • Added @vercel/analytics and render <Analytics /> in the root layout. Privacy-friendly (no cookies); a no-op unless deployed on Vercel with Analytics enabled, so it doesn't affect the static build or non-Vercel hosting.

Verification

  • build (Turbopack), lint, format:check, tsc --noEmit all green (17 routes generated).
  • Visual regression check via headless screenshots (home + docs at desktop/mobile): no visual change from the upgrade or the class renames — the design uses explicit CSS-variable values, so Tailwind v4's default-color shifts had nothing to grab onto.

Owner follow-ups (post-merge)

  • Enable Web Analytics in the Vercel dashboard (Project → Analytics) — the component is inert until that toggle is on.
  • Production deploy flows from main via Vercel's git integration; merging this auto-deploys.

🤖 Generated with Claude Code

- Bump all web deps to latest stable and set the web app
  version to 1.0.0 to match the siphon release.
- Upgrade to Next.js 16 and enable Turbopack for dev and
  build; React and react-dom to 19.2.
- Migrate Tailwind v3 to v4: CSS-first via @import, the
  @tailwindcss/postcss plugin, drop tailwind.config and
  autoprefixer; design tokens stay as CSS variables.
- Move ESLint to a flat eslint.config.mjs (next 16 flat
  config arrays) and run eslint directly; next lint is
  deprecated. Pin eslint to 9.x since next 16's bundled
  plugins are not yet compatible with eslint 10.
- Upgrade TypeScript to 6, react-markdown to 10, and the
  remaining minors incl. security and bug fixes.
- Suppress one deliberate setState-in-effect in Reveal with
  a justified comment; name config default exports.
- Replace [var(--x)] arbitrary values with the v4 (--x)
  shorthand across all components, resolving the linter
  suggestions.
- Literal arbitrary values (hex colors, rem sizes) and the
  raw CSS variables in globals.css are unchanged.
- Rename bg-gradient-to-r to bg-linear-to-r (v4 renamed
  linear gradients), resolving the linter suggestion.
- Rename bare `rounded` to `rounded-sm` so the docs nav
  keeps its v3 radius (v4 shifted the radius scale, so bare
  `rounded` no longer maps to 0.25rem).
- Add @vercel/analytics and render <Analytics /> in the root
  layout. It's privacy-friendly (no cookies) and a no-op
  unless deployed on Vercel with Analytics enabled, so it
  doesn't affect the static build or non-Vercel hosting.
- Reformat globals.css multi-value CSS properties to satisfy
  the current Prettier (pre-existing drift, unrelated edit).
@vercel

vercel Bot commented Jun 26, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
siphon Ready Ready Preview, Comment Jun 26, 2026 4:21pm

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@nixrajput, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 42 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 144c8570-7ffd-4380-b078-f46962798ba2

📥 Commits

Reviewing files that changed from the base of the PR and between acac367 and 796f37a.

⛔ Files ignored due to path filters (1)
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (20)
  • web/.eslintrc.json
  • web/README.md
  • web/app/docs/page.tsx
  • web/app/globals.css
  • web/app/layout.tsx
  • web/app/page.tsx
  • web/components/DeveloperSection.tsx
  • web/components/DocsNavLink.tsx
  • web/components/HeroInstall.tsx
  • web/components/InstallCommand.tsx
  • web/components/Reveal.tsx
  • web/components/SiteFooter.tsx
  • web/components/SiteHeader.tsx
  • web/components/Terminal.tsx
  • web/eslint.config.mjs
  • web/next-env.d.ts
  • web/package.json
  • web/postcss.config.mjs
  • web/tailwind.config.ts
  • web/tsconfig.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/web-deps-upgrade

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nixrajput nixrajput merged commit b18b03c into main Jun 26, 2026
7 checks passed
@nixrajput nixrajput deleted the chore/web-deps-upgrade branch June 26, 2026 16:24
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