Skip to content

Next.js 16 - #41

Merged
skywalkerSam merged 7 commits into
mainfrom
next16
Dec 23, 2025
Merged

Next.js 16#41
skywalkerSam merged 7 commits into
mainfrom
next16

Conversation

@skywalkerSam

@skywalkerSamskywalkerSam commented Dec 23, 2025

Copy link
Copy Markdown
Owner
  • Upgraded to Next.js 16
  • Moved to bun
  • Tweaked particle parameters
  • Tweaked animation on /about

Summary by CodeRabbit

  • Chores

    • Upgraded Next.js to v16.1.1 and React to v19.2.3.
    • Switched to Bun as the runtime environment.
    • Updated TypeScript configuration.
  • Style

    • Updated text color accents for visual consistency across the About section.
    • Adjusted animated intro component spacing and responsive heights.
    • Added hover/focus glow effects to the logo.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 23, 2025

Copy link
Copy Markdown

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

ProjectDeploymentReviewUpdated (UTC)
skywalkersam-devReadyReadyPreview, CommentDec 23, 2025 8:50pm

@coderabbitai

coderabbitaiBot commented Dec 23, 2025

Copy link
Copy Markdown

Walkthrough

The pull request modernizes the project by upgrading Next.js, React, and related dependencies to use Bun as the package manager and build tool. It updates styling across About page components (changing text color tokens from text-sky-400 to text-sky-500), removes the legacyBehavior prop from NavBar links, adjusts Particles component visuals, consolidates StarboyLogo CSS from a dedicated file into globals.css, and reformats configuration files.

Changes

Cohort / File(s)Summary
Dependencies & Configuration
package.json, tsconfig.json
Upgraded Next.js (15.5.7→16.1.1), React/React-DOM (19.2.1→19.2.3), and related types; replaced npm scripts with Bun equivalents; removed pnpm packageManager field. TypeScript config formatting adjusted with lib/jsx/paths expanded to multi-line arrays and new include path for .next/dev/types/**/*.ts.
About Page Styling
src/app/about/_components/AboutMe.tsx, Bio.tsx, animated-intro.tsx, intro.tsx, animated-intro.css
Unified color token updates from text-sky-400 to text-sky-500 across text spans and links. Reduced height and padding in .slide class (h-[60px]→h-[54px], py-[30px]→py-2; md:h-[78px]→md:h-[75px]).
Navigation Component
src/components/NavBar.tsx
Removed legacyBehavior prop from internal and external Link components; retained passHref. No behavioral changes to navigation flow.
Visual Components
src/components/Particles.tsx, StarboyLogo.tsx
Particles: updated default count from 300 to 360; adjusted points material size (0.036→0.021) and opacity (0.9→1). StarboyLogo: removed CSS stylesheet import.
Global Styling
src/styles/globals.css, src/styles/starboy-logo.css
Moved .starboy-logo styling and reduced-motion handling from dedicated file into @layer components block in globals.css. Deleted starboy-logo.css.
Documentation
README.md
Updated heading text from "Among the Stars..." to "Starboy inc.".

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • hotfix: NavBar #37: Modifies NavBar component Link usage patterns; this PR continues refinement by removing legacyBehavior while the prior PR introduced passHref handling.
  • About #32: Updates the same About page components and styling (AboutMe, Bio, animated-intro, intro) that receive color and spacing adjustments in this PR.
  • CVE-2025-66478 #40: Upgrades overlapping dependency entries in package.json (Next.js, React, React-DOM versions).

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'Next.js 16' is concise and directly references the main objective of the PR (upgrading to Next.js 16), though it does not capture other significant changes like Bun migration or animation tweaks.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch next16

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 and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/components/NavBar.tsx (1)

23-60: Refactor Link composition to use the asChild pattern.

The current pattern wraps NavigationMenuLink in Link with passHref, but passHref only works with legacyBehavior which is removed here. In Next.js 16+, this creates an invalid semantic structure. Follow the ListItem component pattern (line 76) by nesting Link inside NavigationMenuLink asChild instead.

Apply this refactoring to all four navigation items:

 <NavigationMenuItem>
- <Link href="/" passHref>- <NavigationMenuLink className={navigationMenuTriggerStyle()}>+ <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>+ <Link href="/">
Home
- </NavigationMenuLink>- </Link>+ </Link>+ </NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
- <Link- href="https://projects.skywalkerSam.dev"-- passHref- >- <NavigationMenuLink className={navigationMenuTriggerStyle()}>+ <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>+ <Link href="https://projects.skywalkerSam.dev">
Projects
- </NavigationMenuLink>- </Link>+ </Link>+ </NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
- <Link- href="https://blog.skywalkerSam.dev"-- passHref- >- <NavigationMenuLink className={navigationMenuTriggerStyle()}>+ <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>+ <Link href="https://blog.skywalkerSam.dev">
Blog
- </NavigationMenuLink>- </Link>+ </Link>+ </NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
- <Link href="/about" passHref>- <NavigationMenuLink className={navigationMenuTriggerStyle()}>+ <NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>+ <Link href="/about">
About
- </NavigationMenuLink>- </Link>+ </Link>+ </NavigationMenuLink>
</NavigationMenuItem>
package.json (1)

36-55: Review Next.js 16 breaking changes and plan migration.

Next.js 16.1.1 and React 19.2.3 are valid, stable releases. However, Next.js 16 introduces several breaking changes that require code adjustments:

  • Async-only Dynamic Request APIs: cookies(), headers(), draftMode(), params, and searchParams must now be awaited in server components and route handlers.
  • middleware.ts → proxy.ts convention and related proxy/middleware changes
  • Minimum Node.js and TypeScript version bumps
  • Image defaults and routing/caching model changes

Review the Next.js v16 upgrade guide and run migration codemods to ensure all breaking changes are addressed before deployment.

🧹 Nitpick comments (1)
src/components/Particles.tsx (1)

56-58: Consider removing the commented-out transparent prop.

The particle visual adjustments look good (smaller size, full opacity). However, the commented-out transparent prop adds clutter. If it's no longer needed, remove it entirely. If you're keeping it for reference, document why in the TODO comment.

🔎 Suggested cleanup
 <pointsMaterial
color="#ffffff"
size={0.021}
- // transparent
opacity={1}
depthWrite={false}
/>
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d766f54 and edb7b1c.

⛔ Files ignored due to path filters (3)
  • bun.lock is excluded by !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • public/starboy.svg is excluded by !**/*.svg
📒 Files selected for processing (13)
  • README.md
  • package.json
  • src/app/about/_components/AboutMe.tsx
  • src/app/about/_components/Bio.tsx
  • src/app/about/_components/animated-intro.css
  • src/app/about/_components/animated-intro.tsx
  • src/app/about/_components/intro.tsx
  • src/components/NavBar.tsx
  • src/components/Particles.tsx
  • src/components/StarboyLogo.tsx
  • src/styles/globals.css
  • src/styles/starboy-logo.css
  • tsconfig.json
💤 Files with no reviewable changes (2)
  • src/styles/starboy-logo.css
  • src/components/StarboyLogo.tsx
🧰 Additional context used
🧬 Code graph analysis (1)
src/app/about/_components/animated-intro.tsx (1)
src/lib/constants.ts (1)
  • nameList (3-6)
🔇 Additional comments (11)
src/app/about/_components/intro.tsx (1)

25-25: LGTM! Consistent color token update.

The hover color update from text-sky-400 to text-sky-500 aligns with the broader design refresh across the About section components.

src/app/about/_components/animated-intro.css (1)

7-7: LGTM! Animation refinement as intended.

The slide dimension and padding adjustments are consistent with the PR objective to tweak animations on the About page. The responsive breakpoint adjustments maintain visual consistency across screen sizes.

src/app/about/_components/AboutMe.tsx (1)

5-26: LGTM! Systematic color token migration.

All text color utilities have been consistently updated from text-sky-400 to text-sky-500, maintaining uniform emphasis styling across the AboutMe component.

src/styles/globals.css (2)

5-84: LGTM! Formatting improvements.

The re-indentation and reorganization of theme variables and base layer styles improve readability while preserving all functional values. No behavioral changes.


86-99: LGTM! Good consolidation of logo styles.

The new @layer components block consolidates starboy-logo styles into the main stylesheet, reducing file fragmentation. The transition and hover/focus effects are properly scoped and straightforward.

src/app/about/_components/animated-intro.tsx (1)

40-40: LGTM! Consistent color token updates.

The color utility updates from text-sky-400 to text-sky-500 are consistently applied across all emphasized text elements (apostrophe, nameList items, doList items, and punctuation), maintaining visual coherence with the broader About section refresh.

Also applies to: 45-45, 57-57, 64-64

src/app/about/_components/Bio.tsx (1)

8-8: LGTM! Final color token update.

The ellipsis color update completes the consistent text-sky-400 to text-sky-500 migration across all About section components.

README.md (1)

5-5: LGTM! Clean branding update.

The heading change aligns with the broader branding updates across the PR.

src/components/Particles.tsx (1)

5-5: LGTM! Particle count increase aligns with PR objectives.

The 20% increase in particle count (300→360) will enhance visual density. Ensure this performs well across target devices.

tsconfig.json (1)

46-47: LGTM! Dev types inclusion for Next.js 16.

Adding .next/dev/types/**/*.ts to the includes is appropriate for Next.js 16's development mode type generation.

package.json (1)

7-13: Test Next.js 16 + Bun before production deployment.

The bun --bun command syntax is correct, but Next.js 16 support on Bun is currently at platform/runtime beta level (Vercel added Oct 28, 2025). Before using in production, verify compatibility with your app's specific features: middleware behavior, ISR, native modules, and edge-case Node.js APIs. Some features (automatic source maps, bytecode caching, certain node:http/https metrics) have known limitations on Bun. Test thoroughly in a staging environment.

Comment threadtsconfig.json
"moduleResolution": "Bundler",
"jsx": "preserve",
"plugins": [{ "name": "next" }],
"jsx": "react-jsx",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Next.js 16 tsconfig.json jsx compiler option recommended setting

💡 Result:

Short answer: keep Next.js's default "jsx": "preserve" in tsconfig.json. This lets Next's SWC/Bundler handle the JSX transform. If you explicitly want TypeScript to emit the automatic React runtime you can use "react-jsx" (or "react-jsxdev" for dev), but the recommended default for Next apps is "preserve". [1][2][3]

Example (in tsconfig.json):
{
"compilerOptions": {
"jsx": "preserve",
...
}
}

Sources: Next.js TypeScript docs (tsconfig generation/defaults). [1] TypeScript jsx option (explanation of preserve / react-jsx / react-jsxdev). [2] React + TypeScript guidance recommending "preserve" for most apps. [3]


Revert jsx option to "preserve" for Next.js 16 compatibility.

Next.js's recommended default is "jsx": "preserve", which allows Next.js's SWC compiler to handle JSX transformation. Changing to "react-jsx" means TypeScript will emit the automatic React runtime instead, which is non-standard for Next.js applications and unnecessary when Next.js already handles JSX.

If this change is intentional, document the reason. Otherwise, revert to "preserve" to align with Next.js best practices.

🤖 Prompt for AI Agents
In tsconfig.json around line 24, the "jsx" compiler option is set to "react-jsx"
which causes TypeScript to emit the automatic React runtime instead of letting
Next.js's SWC handle JSX; change the value back to "preserve" (or document a
deliberate reason for keeping "react-jsx") so Next.js retains control of JSX
transformation and aligns with Next.js recommendations.

@skywalkerSam
skywalkerSam merged commit a9a4afb into mainDec 23, 2025
4 checks passed
Sign up for freeto 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

@skywalkerSam