Dewdew logo-mobile
Uses
Tech
Guestbook
Dewdew Dev

Deep Investigation! Nuxt4 vs Next16 Performance Comparison!

Compare server and client performance by implementing components and pages under the same conditions!

nuxt4 nuxt vue3 typescript frontend framework meta framework nuxt4 blog next16 next16 blog next16 feature
dewdew

Dewdew

Nov 8, 2025

13 min read

cover

Strictly control the same components, pages, and servers under the same conditions,
and compare server-side and client-side performance!
Check the Actual Codebase and deployment environment(Nuxt4, Next16) as well!🤨

Before We Begin

Modern web frameworks (meta frameworks) that are loved worldwide are two frameworks!
That is, Nuxt4 and Next16!

Previous article also mentioned that we will deeply investigate how these two frameworks perform in terms of performance!

As a Nuxter, I sincerely hope that Nuxt4 will have the upper hand in performance…😅
Let’s start the article now!

Project Setup Process of Nuxt4 and Next16

Each framework is implemented in a separate folder in a repository!
To use the same screen and server modules as much as possible, we installed and configured the pages as follows!

Framework Basic Setup

Nuxt4

  • Hybrid Rendering (SSR + CSR) : SSR followed by Hydration process
  • UI Framework : Nuxt UI

Next16

  • SSR
  • UI Framework : Shadcn UI

Screen, Component, Server Configuration

  • Page : Home / Counter Page / Server-side Data View Page
  • Component : Modal Component
  • Server : Simple mock data server

Commonly Installed Modules

  • typescript
  • prettier
  • eslint
  • @lhci/cli: Lighthouse CI
  • autocannon: Server Benchmark Tool

UI Framework

Nuxt4

  • @nuxt/ui (tailwindcss and icon library are built-in)

Next16

  • @tailwindcss, lucide-react
  • @radix-ui/react-dialog (using shadcn/ui)

The detailed folder structure is as follows! (Only showing the core items!)
Hmm… It seems that Nuxt4 has a simpler folder structure this way?😅 (1 win?)

// nuxt4

/nuxt4/
├── app/
   ├── app.vue
   ├── assets/
   ├── components/
   └── AModal.vue         # Modal Component
   ├── layouts/
   └── default.vue        # Default Layout
   └── pages/
       ├── index.vue          # Home Page
       ├── counter.vue        # Counter Page
       └── data.vue          # Data Page
├── server/
   └── api/
       └── data.get.ts       # API Route (GET)
├── nuxt.config.ts            # Nuxt Configuration
└── package.json
// next16

next16/
├── app/
   ├── api/
   └── data/
       └── route.ts      # API Route
   ├── counter/
   └── page.tsx          # Counter Page
   ├── data/
   └── page.tsx          # Data Page
   ├── layout.tsx            # Root Layout
   └── page.tsx              # Home Page
├── components/
   ├── Modal.tsx             # Modal Component
   ├── Navigation.tsx        # Navigation Component
   └── ui/
       ├── button.tsx        # Button Component
       ├── card.tsx          # Card Component
       └── dialog.tsx        # Dialog Component
├── lib/
   ├── counter-store.ts      # Counter State Management
   └── utils.ts              # Utility Functions
├── next.config.ts            # Next.js Configuration
├── components.json           # shadcn/ui Configuration
└── package.json

What Tool Should We Use for Testing?

This part was also very difficult to think about…
Since both frameworks can implement both server-side and client-side functionality, I thought it was necessary to check not only server-side performance but also performance by measuring with lighthouse!

So we decided to use the following tools!

  1. lighthouse cli: Measure benchmark for each page in local and build environments
  2. autocannon: Measure server-side benchmark in local and build environments

What Environment Should We Measure in?

Next, we thought about this part!
So we prepared to measure in the following environments!

  1. Measurement in local development environment (FE: lighthouse cli / BE: autocannon)
  2. Measurement after deployment through Github Action (FE: lighthouse cli / BE: autocannon)
  3. Compare bundle size deployed on Vercel
  4. Measurement of lighthouse in client environment in deployment environment

This should be enough for comparison, right?😅


Let’s Compare Performance!

Since we have set the basic configuration and measurement method, let’s compare performance sequentially as mentioned above!

1. Measurement of Server Performance in Local Development Environment

Main Performance Indicators

IndicatorNuxt 4Next.js 16Performance Difference
Average Latency13.11ms157.49msNuxt 4 is 12 times faster
Requests per Second734 req/s63.1 req/sNuxt 4 is 11.6 times more
Data Transfer Rate per Second97.82 MB/s21.17 MB/sNuxt 4 is 4.6 times higher
Standard Deviation6.01ms68.68msNuxt 4 is 11.4 times consistent

Latency Distribution

PercentileNuxt 4Next.js 16Difference
0.001% (Minimum)4ms58ms14.5 times
2.5%6ms96ms16 times
50% (Median)13ms127ms9.8 times
97.5%25ms316ms12.6 times
99%41ms549ms13.4 times
99.9%58ms563ms9.7 times
99.99% (Maximum)65ms563ms8.7 times

Request/Data Processing Statistics

ItemNuxt 4Next.js 16Difference
Req/Sec (1%)6293021 times
Req/Sec (2.5%)6293021 times
Req/Sec (50%)7406810.9 times
Req/Sec (97.5%)7847710.2 times
Bytes/Sec (Average)10.3 MB2.22 MB4.6 times

Total Processing (10 seconds)

ItemNuxt 4Next.js 16Difference
Total Requests7,360 requests641 requests11.5 times
Total Data Transfer103 MB23.2 MB4.4 times
Error00Same
Timeout00Same

In the local environment test, Nuxt 4 clearly has the upper hand over Next.js 16!

  1. Response Speed: 12 times faster
  2. Processing Rate: 11.6 times more
  3. Stability: The standard deviation is much lower, making it more consistent
  4. Scalability: Processing 11.5 times more requests in the same time

Local Development Environment Server Performance Measurement Result


2. Measurement of Client Performance in Local Development Environment

Nuxt 4 - Lighthouse Performance Measurement Result (Total 3 Measurements)

Measurement TrialPerformanceAccessibilityBest PracticesSEO
1st Measurement99 🟢100 🟢100 🟢100 🟢
2nd Measurement99 🟢100 🟢100 🟢100 🟢
3rd Measurement99 🟢100 🟢100 🟢100 🟢
Average99100100100

Nuxt 4 - Detailed Metrics (Average)

Metric1st2nd3rdAverage
First Contentful Paint1.7s1.7s1.7s1.7s 🟢
Largest Contentful Paint1.8s1.8s1.8s1.8s 🟢
Total Blocking Time0ms10ms10ms6.7ms 🟢
Speed Index1.7s1.7s1.7s1.7s 🟢
Cumulative Layout Shift0000 🟢

Local Development Environment FE Performance Measurement Result Nuxt4(1) Local Development Environment FE Performance Measurement Result Nuxt4(2) Local Development Environment FE Performance Measurement Result Nuxt4(3)

Next.js 16 - Lighthouse Performance Measurement Result (Total 3 Measurements)

Measurement TrialPerformanceAccessibilityBest PracticesSEO
1st Measurement81 🟠100 🟢100 🟢100 🟢
2nd Measurement82 🟠100 🟢100 🟢100 🟢
3rd Measurement83 🟠100 🟢100 🟢100 🟢
Average82100100100

Next.js 16 - Detailed Metrics

Metric1st2nd3rdAverage
First Contentful Paint0.8s0.8s0.8s0.8s 🟢
Largest Contentful Paint4.8s4.8s4.7s4.77s 🔴
Total Blocking Time150ms80ms80ms103.3ms 🟠
Speed Index0.8s0.8s0.8s0.8s 🟢
Cumulative Layout Shift0000 🟢

Local Development Environment FE Performance Measurement Result Next.js 16(1) Local Development Environment FE Performance Measurement Result Next.js 16(2) Local Development Environment FE Performance Measurement Result Next.js 16(3)

Performance Score Comparison

FrameworkAverage ScoreDeviationStabilityGrade
Nuxt 499 🟢±0PerfectA+
Next.js 1682 🟠±1GoodB
Difference+17 points---

Core Performance Metrics Comparison

MetricNuxt 4Next.js 16WinnerDifference
First Contentful Paint (FCP)1.7s0.8sNext.js 162.1 times faster
Largest Contentful Paint (LCP)1.8s4.77sNuxt 42.65 times faster
Total Blocking Time (TBT)6.7ms103.3msNuxt 415.4 times less
Speed Index1.7s0.8sNext.js 162.1 times faster
Cumulative Layout Shift (CLS)00SameSame

Measurement Stability

FrameworkPerformance VariationMetric ConsistencyEvaluation
Nuxt 4None (99→99→99)Very High⭐⭐⭐⭐⭐
Next.js 16Slight (81→82→83)High⭐⭐⭐⭐

Nuxt 4’s Advantages

  1. Overall Performance Score: 99 points for almost perfect
  2. LCP (Largest Contentful Paint): 1.8 seconds for excellent (2.5 seconds or less recommended)
  3. TBT (Total Blocking Time): 6.7ms for almost none (200ms or less recommended)
  4. Consistency: The results of the 3 measurements are all the same, making it very stable
  5. Layout Stability: CLS 0 for perfect

Next.js 16’s Features

  1. FCP (First Contentful Paint): 0.8 seconds for very fast
  2. Speed Index: 0.8 seconds for very good
  3. LCP Issue: 4.77 seconds exceeds the recommended standard (2.5 seconds) 🔴
  4. TBT Issue: 103.3ms is somewhat high (recommended: 200ms or less, but ideally even lower)
  5. Gradual Improvement: 81→82→83 for each measurement, slightly improving

Nuxt 4’s Advantages

  • LCP is 2.65 times faster (the time users actually see the content)
  • TBT is 15 times or more less (JavaScript blocking minimization)
  • Overall Performance Score is 17 points higher

Next.js 16’s Advantages

  • FCP and Speed Index are 2 times faster (first screen display speed)
  • Initial rendering is faster, but overall content loading is slower

Overall Evaluation

Evaluation ItemNuxt 4Next.js 16Winner
Overall Performance9982Nuxt 4
Initial Rendering SpeedGoodExcellentNext.js 16
Main Content LoadingExcellentPoorNuxt 4
JavaScript ExecutionExcellentAverageNuxt 4
Stability/ConsistencyPerfectGoodNuxt 4
SEO/Accessibility100100Same

3. Measurement of Server Performance in Deployment Environment (Github Actions)

Main Performance Indicators

IndicatorNuxt 4Next.js 16Performance Difference
Average Latency69.62ms24.20msNext16 is 2.88 times faster
Requests per Second294.4 req/s407.7 req/sNext16 is 38.5% more
Data Transfer Rate per Second26.48 MB/s76.74 MB/sNext16 is 2.90 times higher
Standard Deviation18.66ms26.45msNuxt4 is more consistent

Latency Distribution

PercentileNuxt 4Next.js 16Difference
Minimum (Min)14ms2ms7 times
2.5%26ms4ms6.5 times
50% (Median)68ms8ms8.5 times
97.5%107ms87ms1.23 times
99%182ms87ms2.09 times
Maximum (Max)193ms251msNuxt 4 is lower

Request Processing Statistics

PercentileNuxt 4Next.js 16Difference
1%131 req/s228 req/s1.74 times
2.5%131 req/s228 req/s1.74 times
50%131 req/s433 req/s3.31 times
97.5%228 req/s488 req/s2.14 times
Average294.4 req/s407.7 req/s1.38 times
Minimum (Min)131 req/s228 req/s1.74 times

Data Transfer Rate Statistics

PercentileNuxt 4Next.js 16Difference
1%1.83 MB/s2.8 MB/s1.53 times
2.5%1.83 MB/s2.8 MB/s1.53 times
50%2.95 MB/s5.43 MB/s1.84 times
97.5%3.13 MB/s6.13 MB/s1.96 times
Average2.81 MB/s5.14 MB/s1.83 times

Total Processing (10 seconds)

ItemNuxt 4Next.js 16Difference
Total Requests2,944 requests4,822 requests1.64 times (63.8% more)
Total Data Transfer28.1 MB31.8 MB1.13 times (13.2% more)
Error00Same
Timeout00Same

In the deployment environment, Next.js 16 performed well!?

  • Average Response Time: 2.88 times faster
  • Request Processing Rate: 38.5% higher (10 seconds: 1,878 more requests)
  • Data Transfer Rate: 2.9 times higher
  • Median Latency: 8.5 times faster
  • 50% Percentile Request Processing Rate: 3.31 times higher

However, Nuxt 4 has lower standard deviation, making it more consistent performance.

Deployment Environment Server Performance Measurement Result


4. Measurement of FE Performance in Deployment Environment (Github Actions)

Nuxt 4 - Lighthouse Performance Measurement Result (3 Measurements)

Measurement TrialPerformanceAccessibilityBest PracticesSEO
1st Measurement99 🟢100 🟢100 🟢100 🟢
2nd Measurement99 🟢100 🟢100 🟢100 🟢
3rd Measurement93 🟢100 🟢100 🟢100 🟢
Average97100100100

Nuxt 4 - Detailed Metrics

Metric1st2nd3rdAverage
First Contentful Paint1.7s1.7s2.0s1.8s 🟢
Largest Contentful Paint1.8s1.8s2.1s1.9s 🟢
Total Blocking Time60ms50ms170ms93.3ms 🟢
Speed Index1.7s1.7s4.0s2.47s 🟠
Cumulative Layout Shift0000 🟢

Deployment Environment FE Performance Measurement Result Nuxt4(1) Deployment Environment FE Performance Measurement Result Nuxt4(2) Deployment Environment FE Performance Measurement Result Nuxt4(3)

Next.js 16 - Lighthouse Performance Measurement Result (3 Measurements)

Measurement TrialPerformanceAccessibilityBest PracticesSEO
1st Measurement71 🟠100 🟢100 🟢100 🟢
2nd Measurement97 🟢100 🟢100 🟢100 🟢
3rd Measurement97 🟢100 🟢100 🟢100 🟢
Average88.3100100100

Next.js 16 - Detailed Metrics

Metric1st2nd3rdAverage
First Contentful Paint1.0s0.8s0.8s0.87s 🟢
Largest Contentful Paint2.3s2.5s2.5s2.43s 🟢
Total Blocking Time1,730ms30ms30ms596.7ms 🔴
Speed Index1.6s0.8s0.8s1.07s 🟢
Cumulative Layout Shift0000 🟢

Deployment Environment FE Performance Measurement Result Next.js 16(1) Deployment Environment FE Performance Measurement Result Next.js 16(2) Deployment Environment FE Performance Measurement Result Next.js 16(3)

Performance Score Comparison

FrameworkAverage ScoreHighestLowestDeviationStability
Nuxt 497 🟢9993±3Excellent
Next.js 1688.3 🟠9771±13Slight Variation
Difference+8.7 points---Nuxt 4 Win

Core Performance Metrics Comparison

MetricNuxt 4Next.js 16WinnerDifference
First Contentful Paint (FCP)1.8s0.87sNext.js 162.07 times faster
Largest Contentful Paint (LCP)1.9s2.43sNuxt 41.28 times faster
Total Blocking Time (TBT)93.3ms596.7msNuxt 46.39 times less
Speed Index2.47s1.07sNext.js 162.31 times faster
Cumulative Layout Shift (CLS)00SameSame

Measurement Stability Comparison

FrameworkPerformance VariationTBT VariationFCP VariationEvaluation
Nuxt 499→99→93 (±3)60→50→170ms1.7→1.7→2.0s⭐⭐⭐⭐
Next.js 1671→97→97 (±13)1730→30→30ms1.0→0.8→0.8s⭐⭐⭐

Nuxt 4’s Advantages

  1. Overall Performance Score: Average 97 points for excellent
  2. LCP (Largest Contentful Paint): 1.9 seconds for excellent (recommended: 2.5 seconds or less)
  3. TBT (Total Blocking Time): Average 93.3ms for very low
  4. Consistency: 3 measurements, 2 of which are 99 points for very stable
  5. Layout Stability: CLS 0 for perfect

Next.js 16’s Features

  1. FCP (First Contentful Paint): 0.87 seconds for very fast
  2. Speed Index: 1.07 seconds for excellent
  3. 1st Measurement Issue: TBT 1,730ms for very high, but 2-3rd measurements are 30ms for improvement
  4. Performance Variation: 71→97 points for large variation
  5. Average TBT Issue: 596.7ms for high (1st measurement influence) 🔴

Next.js 16 1st Measurement Issue

  • 1st: TBT 1,730ms (Performance 71 points)
  • 2-3rd: TBT 30ms (Performance 97 points)
  • Analysis: Initial build/cache warming up issue

5. Analysis of Vercel Deployment Build

Vercel Build Analysis Vercel Build Analysis CSV

Static Assets Comparison

JavaScript Bundle Size

FrameworkTotal JS Size (Before Compression)Main BundleBundle Count
Nuxt 4~384 KBMaximum: 341.3 KB (C21lwjTR.js)8
Next.js 16~664 KBMaximum: 221.8 KB (75ddb4dba29fe2f2.js)15

Nuxt 4 - Main JavaScript Files

FileSize (Original)Size (Brotli)Compression Rate
C21lwjTR.js341,318 bytes (333 KB)102,140 bytes (100 KB)70.1% decrease
BBteqT8O.js20,228 bytes (20 KB)5,806 bytes (5.7 KB)71.3% decrease
DKEjFwUr.js12,949 bytes (12.6 KB)5,078 bytes (5 KB)60.8% decrease

Next.js 16 - Main JavaScript Files

FileSizeEstimated Purpose
75ddb4dba29fe2f2.js221,840 bytes (217 KB)Main Bundle
a6dad97d9634a72d.js112,594 bytes (110 KB)Additional Bundle
4ef98c6465f5f649.js83,868 bytes (82 KB)Additional Bundle
b1f432c642155d01.js47,002 bytes (46 KB)Additional Bundle
1f6ea75f1c7d7706.js39,970 bytes (39 KB)Additional Bundle
4e4d03e4b7408354.js35,669 bytes (35 KB)Additional Bundle

CSS Bundle Size

FrameworkTotal CSS Size (Before Compression)Brotli Compression After
Nuxt 4159,765 bytes (156 KB)17,832 bytes (17.4 KB)
Next.js 1626,112 bytes (25.5 KB)N/A

Serverless Functions Size

Nuxt 4 - Main Pages/API

PathSize
/ (Home)1,386,070 bytes (1.32 MB) 🔴🔴
/api/data1,386,070 bytes (1.32 MB) 🔴🔴
/counter1,386,070 bytes (1.32 MB) 🔴🔴
/data1,386,070 bytes (1.32 MB) 🔴🔴

Next.js 16 - Main Pages/API

PathSize
/api/data734,405 bytes (717 KB) 🔴
/ (Home)673,106 bytes (657 KB) 🔴
/data649,842 bytes (635 KB) 🔴
/counter673,106 bytes (657 KB) 🔴
/40413,114 bytes (12.8 KB)
/5006,833 bytes (6.7 KB)

Compression Strategy Comparison

FrameworkCompression StrategyApplicable Range
Next.js 16NoneStatic assets only
Nuxt 4Brotli + GzipAll JS/CSS files

Overall Comparison Table

ItemNext.js 16Nuxt 4Winner
Client JS Size~664 KB~384 KB (Original) / ~100 KB (Brotli)Nuxt 4
CSS Size~26 KB~156 KB (Original) / ~17 KB (Brotli)Next.js 16
Serverless Functions Size650-735 KB1.32 MBNext.js 16
Compression Support✅ (Brotli + Gzip)Nuxt 4
Bundle OptimizationCode Splitting ExcellentLarge Single BundleNext.js 16

Next.js 16’s Advantages

  1. Small Serverless Functions: 650-735 KB for half of Nuxt 4
  2. Efficient Code Splitting: 15 small chunks for efficient code splitting
  3. Small CSS Bundle: 26 KB for very lightweight

Nuxt 4’s Advantages

  1. Compression Optimization: Gzip Compression for significantly reducing actual transmission size
  • Main JS: 333 KB → 100 KB (70% decrease)
  • Main CSS: 152 KB → 16 KB (89% decrease)
  1. Actual Size is Smaller after Compression: Total ~117 KB vs Next.js ~664 KB

Nuxt 4’s Disadvantages

  1. Serverless Functions Size: 1.32 MB for very large (Next.js’s 2x)
  2. Large Single Bundle: 333 KB Main Bundle (Before Compression)
  3. CSS Size: 152 KB for large (Before Compression)

Client Performance

  • Nuxt 4 우위: Compression applied, actual transmission size is much smaller (~117 KB vs ~664 KB)
  • Next.js has no compression, so more data transmission is needed

Serverless Functions Efficiency

  • Next.js 16 Win: Serverless Functions are half the size, reducing Cold Start time

Actual User Experience

AspectWinnerReason
Initial LoadingNuxt 4Compressed JS/CSS transmission size is much smaller
Server ResponseNext.js 16Serverless Functions are smaller, faster execution
Caching EfficiencyNext.js 16Partial caching with smaller chunks is advantageous
Bandwidth UsageNuxt 4Data transmission amount reduced by 70-89% by compression

7. Client Environment Analysis

Nuxt 4 - Desktop Environment

Nuxt 4 - Desktop Environment

PagePerformanceAccessibilityRecommended PracticesSEOFCPLCPTBTSpeed IndexCLS
/100 🟢100 🟢100 🟢100 🟢0.4s0.4s0ms0.9s0
/counter100 🟢96 🟠100 🟢100 🟢0.4s0.4s10ms0.4s0
/data100 🟢100 🟢100 🟢100 🟢0.4s0.4s0ms0.5s0

Nuxt 4 - Mobile Environment

Nuxt 4 - Mobile Environment

PagePerformanceAccessibilityRecommended PracticesSEOFCPLCPTBTSpeed IndexCLS
/99 🟢100 🟢100 🟢100 🟢1.1s1.7s20ms2.7s0
/counter100 🟢96 🟠100 🟢100 🟢1.7s1.1s0ms1.1s0
/data99 🟢100 🟢100 🟢100 🟢1.7s1.7s10ms2.7s0

Next.js 16 - Desktop Environment

Next.js 16 - Desktop Environment

PagePerformanceAccessibilityRecommended PracticesSEOFCPLCPTBTSpeed IndexCLS
/100 🟢100 🟢100 🟢100 🟢0.2s0.4s10ms0.5s0
/counter100 🟢95 🟠100 🟢100 🟢0.2s0.4s0ms0.2s0
/data100 🟢100 🟢100 🟢100 🟢0.2s0.4s0ms0.4s0

Next.js 16 - Mobile Environment

Next.js 16 - Mobile Environment

PagePerformanceAccessibilityRecommended PracticesSEOFCPLCPTBTSpeed IndexCLS
/99 🟢100 🟢100 🟢100 🟢1.2s1.3s10ms2.8s0
/counter99 🟢95 🟠100 🟢100 🟢1.2s1.3s0ms1.2s0
/data100 🟢100 🟢100 🟢100 🟢0.8s1.3s50ms0.9s0

Desktop Environment Comparison

MetricNext.js 16 AverageNuxt 4 AverageDifference
Performance100100-
FCP0.2s0.4sNext.js 16 is 2x faster
LCP0.4s0.4s-
TBT3.3ms3.3ms-
Speed Index0.37s0.6sNext.js 16 is 1.6x faster
CLS00-

Mobile Environment Comparison

MetricNext.js 16 AverageNuxt 4 AverageDifference
Performance99.399.3-
FCP1.07s1.5sNext.js 16 is 1.4x faster
LCP1.3s1.5sNext.js 16 is 1.15x faster
TBT20ms10msNuxt is 2x faster
Speed Index1.63s2.17sNext.js 16 is 1.33x faster
CLS00-

Page-by-Page Performance Comparison

Root (/)

EnvironmentMetricNuxt 4Next.js 16
DesktopPerformance100100
FCP0.4s0.2s
MobilePerformance9999
FCP1.1s1.2s

Counter (/counter)

EnvironmentMetricNuxt 4Next.js 16
DesktopPerformance100100
Speed Index0.4s0.2s
MobilePerformance10099
Speed Index1.1s1.2s

Data (/data)

EnvironmentMetricNuxt 4Next.js 16
DesktopPerformance100100
FCP0.4s0.2s
MobilePerformance99100
TBT10ms50ms

Desktop Environment

  • Both are perfect performance: Performance 100 points are the same
  • Next.js 16 slightly better: FCP and Speed Index are slightly faster
  • Actual difference: Very small (0.2s vs 0.4s)

Mobile Environment

  • Performance score: Same (99.3 points)
  • Next.js 16 Win: FCP, LCP, Speed Index are consistently faster
  • Nuxt 4 Win: TBT(JavaScript blocking) is 2x less

Accessibility Score

  • Counter Page: Both are 95-96 points, slightly lower
  • Other Pages: All 100 points, perfect

Both frameworks show excellent performance in the client environment, and the difference in actual use is almost negligible!


Nuxt 4 vs Next.js 16 Final Comprehensive Performance Comparison

1. Local Environment - Server Performance Measurement

Conclusion: Nuxt 4 overwhelming victory ⭐⭐⭐⭐⭐

MetricNuxt 4Next.js 16WinnerPerformance Difference
Average Latency13.11ms157.49msNuxt 412x faster
Requests per Second734 req/s63.1 req/sNuxt 411.6x more
Data Transfer Rate97.82 MB/s21.17 MB/sNuxt 44.6x higher
Standard Deviation6.01ms68.68msNuxt 411.4x consistent
Error Rate00Same-

2. Local Environment - Lighthouse Measurement

Conclusion: Nuxt 4 victory (LCP & TBT overwhelming) ⭐⭐⭐⭐⭐

MetricNuxt 4Next.js 16WinnerDifference
Performance Score99 (±0)82 (±1)Nuxt 4+17 points
FCP1.7s0.8sNext.js 162.1x faster
LCP1.8s4.77sNuxt 42.65x faster
TBT6.7ms103.3msNuxt 415.4x less
Speed Index1.7s0.8sNext.js 162.1x faster
CLS00Same-

3. Deployment Environment - Server Performance Measurement

Conclusion: Next.js 16 overwhelming victory ⭐⭐⭐⭐⭐

MetricNuxt 4Next.js 16WinnerPerformance Difference
Average Latency69.62ms24.20msNext.js 162.88x faster
Requests per Second294.4 req/s407.7 req/sNext.js 1638.5% more
Data Transfer Rate26.48 MB/s76.74 MB/sNext.js 162.90x higher
Standard Deviation18.66ms26.45msNuxt 4More consistent
Total Requests (10 seconds)2,9444,822Next.js 1663.8% more

4. Deployment Environment - Lighthouse Measurement

Note:

  • Next.js 16’s first measurement shows TBT 1,730ms (very high)
  • 2-3 measurements show rapid improvement (20-30ms)
  • Nuxt 4 maintains excellent performance consistently

Conclusion: Nuxt 4 victory (more consistent and stable) ⭐⭐⭐⭐⭐

MetricNuxt 4Next.js 16WinnerDifference
Performance Score97.791.8Nuxt 4+5.9 points
FCP1.76s0.84sNext.js 162.1x faster
LCP1.86s2.54sNuxt 41.37x faster
TBT73.3ms368msNuxt 45x less
Speed Index2.13s1.0sNext.js 162.1x faster
CLS00Same-
ConsistencyGood (93→99→99)Variation (71→97→97)Nuxt 4More stable

5. Vercel Build Analysis

Conclusion:

  • Client: Nuxt 4 victory (5.9x less)
  • Server: Next.js 16 victory (half size)
ItemNuxt 4Next.js 16Winner
Client JS (Original)384 KB664 KBNuxt 4
Client JS (Compressed)100 KB (Brotli)664 KBNuxt 4
CSS (Original)156 KB26 KBNext.js 16
CSS (Compressed)17 KB (Brotli)26 KBNuxt 4
Total Client Transfer~117 KB~690 KBNuxt 4
Compression Rate70-89% reductionNoneNuxt 4
Server Function Size1.32 MB650-735 KBNext.js 16
Code Splitting8 chunks15 chunksNext.js 16

6. Client Environment - Actual User Measurement

Conclusion:

  • Desktop: Almost equal
  • Mobile: Next.js 16 slightly better

Desktop Environment

MetricNuxt 4Next.js 16WinnerDifference
Performance100100Same-
FCP0.4s0.2sNext.js 162x faster
LCP0.4s0.4sSame-
TBT3.3ms3.3msSame-
Speed Index0.6s0.37sNext.js 161.6x faster

Mobile Environment

MetricNuxt 4Next.js 16WinnerDifference
Performance99.399.3Same-
FCP1.5s1.07sNext.js 161.4x faster
LCP1.5s1.3sNext.js 161.15x faster
TBT10ms20msNuxt 42x less faster
Speed Index2.17s1.63sNext.js 161.33x faster

Final Performance Comparison Summary

How did you feel?
I’ve forgotten when I’ve done such a thorough comparison…😂
Now, let’s finish with a final performance comparison!

1. 📈 Final Performance Summary

CategoryNuxt4 ScoreNuxt4 EvaluationNext16 ScoreNext16 Evaluation
🚀 Development Speed100/100S grade60/100C grade
📦 Bundle Size95/100A grade65/100C grade
⚡ Server Performance75/100B grade100/100S grade
🎨 User Experience99/100S grade99/100S grade
🔧 Consistency100/100S grade75/100B grade
Overall Average93.8/100A+ grade79.8/100B+ grade

2. Environment-wise Performance Summary

Test EnvironmentNuxt 4Next.js 16Winner
1. Local Server⭐⭐⭐⭐⭐⭐⭐Nuxt 4
2. Local Lighthouse⭐⭐⭐⭐⭐⭐⭐⭐⭐Nuxt 4
3. Deployment Server⭐⭐⭐⭐⭐⭐⭐⭐Next.js 16
4. Deployment Lighthouse⭐⭐⭐⭐⭐⭐⭐⭐⭐Nuxt 4
5. Build (Client)⭐⭐⭐⭐⭐⭐⭐⭐Nuxt 4
6. Build (Server)⭐⭐⭐⭐⭐⭐⭐⭐Next.js 16
7. Client (Desktop)⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Same
8. Client (Mobile)⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Almost same

3. Development Environment

AreaNuxt 4Next.js 16WinnerDifference
Local Server Speed13ms157msNuxt 412x faster
Development ExperienceVery fastSlowNuxt 4-
Lighthouse Score9982Nuxt 4+17 points

4. Production Environment

AreaNuxt 4Next.js 16WinnerDifference
Server Response Speed70ms24msNext.js 162.9x faster
Request per Second294 req/s408 req/sNext.js 1638% more
Lighthouse Score97.791.8Nuxt 4+5.9 points
Client Bundle Size117 KB690 KBNuxt 45.9x less
Server Function Size1.32 MB650 KBNext.js 162x less

5. User Experience

AreaNuxt 4Next.js 16Winner
Desktop Performance100100-
Mobile Performance99.399.3-
Bandwidth UsageVery lowNormalNuxt 4

Conclusion

Both frameworks are clearly superior in different situations!

During development, Nuxt4 won with its 12x faster server and excellent development experience,
and in production server environments, Next16 is considered to be highly synchronized with Vercel.
(How will it be in AWS?)

And in Lighthouse scores, bundle size, and measurement stability, Nuxt4 was clearly superior!

Of course, since the user experience is almost the same, it seems pointless to compare it!

PriorityRecommended FrameworkReason
Fast DevelopmentNuxt 4 🟢12x faster local server
Best Server PerformanceNext.js 16 🔵2.9x faster response
Cost EfficiencyNuxt 4 🟢5.9x less bundle
Large-scale TrafficNext.js 16 🔵38% more request
Consistent PerformanceNuxt 4 🟢Stable measurement

The source code and deployment environment of the two frameworks tested above is available below!
Github - Meta Framework Compare
Nuxt4
Next16

Let’s see you again in good articles!

See you in the next article!


Reference

Dewdew of the Internet © 2024