Skip to content

[DevServer] Add global lockfile for server discovery#92033

Draft
gaojude wants to merge 2 commits intocanaryfrom
dev-server-global-lockfile
Draft

[DevServer] Add global lockfile for server discovery#92033
gaojude wants to merge 2 commits intocanaryfrom
dev-server-global-lockfile

Conversation

@gaojude
Copy link
Copy Markdown
Contributor

@gaojude gaojude commented Mar 28, 2026

There's currently no way for external tooling to discover all running next dev servers across different projects. Each server only acquires a per-project lockfile at <distDir>/lock.

This adds a global lockfile at ~/.next/dev/<port>/lock containing DevServerInfo JSON (pid, port, hostname, appUrl, startedAt). The lock is acquired via Lockfile.tryAcquire with unlockOnExit: true, so the OS releases the flock automatically on process exit including kill -9. Cleanup on graceful shutdown is handled via the existing onDevServerCleanup callback.

External tools can discover running servers by scanning ~/.next/dev/*/lock and attempting flock on each — a held lock means the server is alive, and the file contents provide connection details.

@gaojude gaojude requested a review from bgw March 28, 2026 05:51
@nextjs-bot
Copy link
Copy Markdown
Collaborator

nextjs-bot commented Mar 28, 2026

Failing test suites

Commit: f85e550 | About building and testing Next.js

pnpm test test/integration/next-image-new/app-dir/test/static.test.ts (job)

  • Static Image Component Tests > production mode > Should allow an image with a static src to omit height and width (DD)
  • Static Image Component Tests > production mode > Should use immutable cache-control header for static import (DD)
  • Static Image Component Tests > production mode > Should use immutable cache-control header even when unoptimized (DD)
  • Static Image Component Tests > production mode > should have containing followed by for priority image (DD)
  • Static Image Component Tests > production mode > Should automatically provide an image height and width (DD)
  • Static Image Component Tests > production mode > should use width and height prop to override import (DD)
  • Static Image Component Tests > production mode > should use height prop to adjust both width and height (DD)
  • Static Image Component Tests > production mode > should use width prop to adjust both width and height (DD)
  • Static Image Component Tests > production mode > should add a data URL placeholder to an image (DD)
  • Static Image Component Tests > production mode > should add a blur placeholder a statically imported jpg (DD)
  • Static Image Component Tests > production mode > should add a blur placeholder a statically imported png (DD)
  • Static Image Component Tests > production mode > should add a blur placeholder a statically imported png with fill (DD)
  • Static Image Component Tests > production mode > should add placeholder with blurDataURL and fill (DD)
  • Static Image Component Tests > production mode > should add placeholder even when blurDataURL aspect ratio does not match width/height ratio (DD)
  • Static Image Component Tests > production mode > should load direct imported image (DD)
Expand output

● Static Image Component Tests › production mode › Should allow an image with a static src to omit height and width

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › Should use immutable cache-control header for static import

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › Should use immutable cache-control header even when unoptimized

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should have containing followed by for priority image

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › Should automatically provide an image height and width

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should use width and height prop to override import

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should use height prop to adjust both width and height

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should use width prop to adjust both width and height

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add a data URL placeholder to an image

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add a blur placeholder a statically imported jpg

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add a blur placeholder a statically imported png

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add a blur placeholder a statically imported png with fill

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add placeholder with blurDataURL and fill

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should add placeholder even when blurDataURL aspect ratio does not match width/height ratio

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

● Static Image Component Tests › production mode › should load direct imported image

thrown: "Exceeded timeout of 60000 ms for a hook.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  259 |     'production mode',
  260 |     () => {
> 261 |       beforeAll(async () => {
      |       ^
  262 |         await nextBuild(appDir)
  263 |         appPort = await findPort()
  264 |         app = await nextStart(appDir, appPort)

  at beforeAll (integration/next-image-new/app-dir/test/static.test.ts:261:7)
  at integration/next-image-new/app-dir/test/static.test.ts:258:56
  at Object.describe (integration/next-image-new/app-dir/test/static.test.ts:257:1)

pnpm test-start test/production/app-dir/metadata-static-route-cache/metadata-static-route-cache.test.ts (job)

  • app dir - metadata static routes cache > should generate different content after replace the static metadata file (DD)
Expand output

● app dir - metadata static routes cache › should generate different content after replace the static metadata file

next already started

  63 |   public async start(options: { skipBuild?: boolean } = {}) {
  64 |     if (this.childProcess) {
> 65 |       throw new Error('next already started')
     |             ^
  66 |     }
  67 |
  68 |     this._cliOutput = ''

  at NextStartInstance.start (lib/next-modes/next-start.ts:65:13)
  at Object.start (production/app-dir/metadata-static-route-cache/metadata-static-route-cache.test.ts:17:16)

@nextjs-bot
Copy link
Copy Markdown
Collaborator

nextjs-bot commented Mar 28, 2026

Stats from current PR

✅ No significant changes detected

📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 455ms 455ms █▁▁▁▁
Cold (Ready in log) 439ms 439ms █▁▁▁▁
Cold (First Request) 1.115s 1.134s █▂▂▂▂
Warm (Listen) 456ms 456ms █▁▁▁▁
Warm (Ready in log) 444ms 443ms █▁▁▁▁
Warm (First Request) 344ms 344ms █▁▁▁▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 455ms 455ms █▁▁▁▁
Cold (Ready in log) 437ms 438ms █▁▁▁▁
Cold (First Request) 1.946s 1.936s █▁▃▃▁
Warm (Listen) 456ms 456ms █▁▁▁▁
Warm (Ready in log) 438ms 438ms █▁▁▁▁
Warm (First Request) 1.962s 1.959s █▁▃▃▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 3.873s 3.891s █▁▁▁▁
Cached Build 3.872s 3.906s █▁▁▁▁
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 14.465s 14.439s █▁▁▂▁
Cached Build 14.565s 14.563s █▁▁▁▁
node_modules Size 485 MB 485 MB █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
02fkg8wfh0iju.js gzip 9.19 kB N/A -
050zwt5xh_0tx.js gzip 10.4 kB N/A -
06rvbj82bhyo0.js gzip 13 kB N/A -
087fzjd-gvlzv.js gzip 450 B N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0n_dy402y1-7_.js gzip 156 B N/A -
0ppxcl_z43mad.js gzip 8.52 kB N/A -
0rfpjmgf56q96.js gzip 153 B N/A -
10ra7sic7j_q9.js gzip 65.7 kB N/A -
18io-8oa2n1ne.js gzip 170 B N/A -
19oha6-znmkcv.js gzip 8.55 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1l7x4o3ggu40i.js gzip 156 B N/A -
1r0glxjr_p-lz.js gzip 70.8 kB N/A -
1tfbce4nozgvk.js gzip 157 B N/A -
1yl5jy653a49k.js gzip 13.7 kB N/A -
2524qmz0et54b.js gzip 7.61 kB N/A -
26elcgxnn9zjd.js gzip 8.52 kB N/A -
2900hudr6gvm0.js gzip 2.28 kB N/A -
293sfm6gr995x.js gzip 158 B N/A -
2aytuzfsxs-ng.js gzip 162 B N/A -
2dtal7ljiqtvy.js gzip 158 B N/A -
2ihlsvbo2c9e8.js gzip 215 B 215 B
2lv2js3kmdeho.js gzip 8.48 kB N/A -
2pe03oj3fi47x.js gzip 158 B N/A -
2rehygrd36hqv.js gzip 8.58 kB N/A -
2srwswih0m9_h.js gzip 13.3 kB N/A -
3-p9p9mheqhzx.js gzip 8.55 kB N/A -
31030bryqpolg.js gzip 8.53 kB N/A -
313uw4pi84-nn.js gzip 155 B N/A -
31dx5nmrzzuy7.js gzip 225 B N/A -
3ha7h58bte-tq.js gzip 49 kB N/A -
3iu80eefg23ae.js gzip 9.77 kB N/A -
3k-48b78ys_vy.js gzip 10.1 kB N/A -
3m7-5rfj0avoz.js gzip 12.9 kB N/A -
3oldhmkmh_ttt.js gzip 156 B N/A -
3son74bv6_ukz.js gzip 157 B N/A -
3uqce_6sa526g.js gzip 8.47 kB N/A -
3yurjqk-sjs3y.js gzip 1.46 kB N/A -
421vzwdt9j1b_.js gzip 5.62 kB N/A -
44g0z4do5ybko.js gzip 160 B N/A -
turbopack-0b..p5tq.js gzip 4.16 kB N/A -
turbopack-0i..btad.js gzip 4.14 kB N/A -
turbopack-0r..wket.js gzip 4.17 kB N/A -
turbopack-0y..64ab.js gzip 4.16 kB N/A -
turbopack-1-..0e4u.js gzip 4.16 kB N/A -
turbopack-11..u-7j.js gzip 4.16 kB N/A -
turbopack-1j..jhqp.js gzip 4.16 kB N/A -
turbopack-1n..ih5x.js gzip 4.16 kB N/A -
turbopack-1u..5j9t.js gzip 4.16 kB N/A -
turbopack-1v..moi5.js gzip 4.16 kB N/A -
turbopack-22..gp0k.js gzip 4.16 kB N/A -
turbopack-2y..n7l-.js gzip 4.16 kB N/A -
turbopack-30..wnxd.js gzip 4.16 kB N/A -
turbopack-39..tjse.js gzip 4.16 kB N/A -
03dgzoo-qf3sm.js gzip N/A 9.19 kB -
05tx5f25dlivn.js gzip N/A 8.53 kB -
0c7ez6p2qc57f.js gzip N/A 5.62 kB -
0hh8avilv0ojg.js gzip N/A 157 B -
0k64vlvxmxe37.js gzip N/A 157 B -
0n95_eeqgrhcd.js gzip N/A 13.7 kB -
0o8_7qesyk05v.js gzip N/A 156 B -
0qnwuk92m8i7o.js gzip N/A 10.4 kB -
0r4wrn6n0ue2m.js gzip N/A 8.55 kB -
0rp0fodtbt_6m.js gzip N/A 8.52 kB -
0sfck-km4dl1k.js gzip N/A 8.47 kB -
0x0xuhmxzwkp8.js gzip N/A 8.47 kB -
1-wdvgxnzicj7.js gzip N/A 1.46 kB -
1083kmmn904k-.js gzip N/A 156 B -
11u6nxujb2eg4.js gzip N/A 450 B -
19jz3mojsh446.js gzip N/A 154 B -
1fgcxfy5evsmo.js gzip N/A 65.7 kB -
1h2m6kg4-m7d3.js gzip N/A 7.6 kB -
1hyxrs-fqu4mr.js gzip N/A 160 B -
1r_rhe44k4b7o.js gzip N/A 169 B -
1yshlunbh203u.js gzip N/A 156 B -
29__un8dvi9q7.js gzip N/A 162 B -
2f0isyv74vou4.js gzip N/A 155 B -
2k9ax08cjl2id.js gzip N/A 12.9 kB -
2lms6k76q5-6m.js gzip N/A 13.3 kB -
2p33dcb2dofml.js gzip N/A 158 B -
2q3hz-jtbjs52.js gzip N/A 9.77 kB -
2qx4twi9i3xus.js gzip N/A 2.28 kB -
2srnqic6tvxxd.js gzip N/A 8.52 kB -
2z_xgkr8n426y.js gzip N/A 70.8 kB -
30l7m4nayp73a.js gzip N/A 8.55 kB -
35usk0rt_jbub.js gzip N/A 159 B -
38rr7d3kfutni.js gzip N/A 13 kB -
3axctu0hicx1a.js gzip N/A 49 kB -
3h_ecpiaatwgc.js gzip N/A 10.1 kB -
3ity0aahajapd.js gzip N/A 225 B -
42ip5rlu748dz.js gzip N/A 156 B -
43mlw9dy_8f02.js gzip N/A 8.58 kB -
turbopack-0-..xx31.js gzip N/A 4.14 kB -
turbopack-02..u0m7.js gzip N/A 4.16 kB -
turbopack-05..90-i.js gzip N/A 4.16 kB -
turbopack-13..kqkq.js gzip N/A 4.16 kB -
turbopack-1g..-8ng.js gzip N/A 4.16 kB -
turbopack-1p..x5mn.js gzip N/A 4.16 kB -
turbopack-22..2w9-.js gzip N/A 4.16 kB -
turbopack-22..oq78.js gzip N/A 4.16 kB -
turbopack-28..y___.js gzip N/A 4.16 kB -
turbopack-2p..jy4_.js gzip N/A 4.17 kB -
turbopack-2r..u-us.js gzip N/A 4.16 kB -
turbopack-36..lzmc.js gzip N/A 4.16 kB -
turbopack-3a..9uds.js gzip N/A 4.16 kB -
turbopack-3v..ajfh.js gzip N/A 4.16 kB -
Total 464 kB 464 kB ✅ -8 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 720 B 714 B
Total 720 B 714 B ✅ -6 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 431 B 434 B
Total 431 B 434 B ⚠️ +3 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.54 kB N/A -
6280-HASH.js gzip 60.7 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.59 kB N/A -
e8aec2e4-HASH.js gzip 62.8 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 253 B
main-HASH.js gzip 39.3 kB 39.2 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
262-HASH.js gzip N/A 4.59 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.55 kB -
6948ada0-HASH.js gzip N/A 62.8 kB -
9544-HASH.js gzip N/A 61.4 kB -
Total 235 kB 235 kB ⚠️ +664 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 194 B
_error-HASH.js gzip 183 B 180 B 🟢 3 B (-2%)
css-HASH.js gzip 331 B 330 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB
edge-ssr-HASH.js gzip 256 B 256 B
head-HASH.js gzip 351 B 352 B
hooks-HASH.js gzip 384 B 383 B
image-HASH.js gzip 580 B 581 B
index-HASH.js gzip 260 B 260 B
link-HASH.js gzip 2.51 kB 2.51 kB
routerDirect..HASH.js gzip 320 B 319 B
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.98 kB 7.98 kB ✅ -3 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 125 kB 125 kB
page.js gzip 270 kB 270 kB
Total 395 kB 396 kB ⚠️ +228 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 621 B 613 B 🟢 8 B (-1%)
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 43.9 kB 44 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 45.6 kB 45.6 kB ⚠️ +70 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 715 B 718 B
Total 715 B 718 B ⚠️ +3 B
Build Cache
Canary PR Change
0.pack gzip 4.35 MB 4.34 MB 🟢 5.66 kB (0%)
index.pack gzip 111 kB 110 kB
index.pack.old gzip 110 kB 110 kB
Total 4.57 MB 4.56 MB ✅ -6.75 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 335 kB 335 kB
app-page-exp..prod.js gzip 185 kB 185 kB
app-page-tur...dev.js gzip 335 kB 335 kB
app-page-tur..prod.js gzip 185 kB 185 kB
app-page-tur...dev.js gzip 331 kB 331 kB
app-page-tur..prod.js gzip 183 kB 183 kB
app-page.run...dev.js gzip 332 kB 332 kB
app-page.run..prod.js gzip 184 kB 184 kB
app-route-ex...dev.js gzip 76.2 kB 76.2 kB
app-route-ex..prod.js gzip 51.9 kB 51.9 kB
app-route-tu...dev.js gzip 76.3 kB 76.3 kB
app-route-tu..prod.js gzip 51.9 kB 51.9 kB
app-route-tu...dev.js gzip 75.9 kB 75.9 kB
app-route-tu..prod.js gzip 51.6 kB 51.6 kB
app-route.ru...dev.js gzip 75.8 kB 75.8 kB
app-route.ru..prod.js gzip 51.6 kB 51.6 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 43.5 kB 43.5 kB
pages-api-tu..prod.js gzip 33.1 kB 33.1 kB
pages-api.ru...dev.js gzip 43.4 kB 43.4 kB
pages-api.ru..prod.js gzip 33.1 kB 33.1 kB
pages-turbo....dev.js gzip 52.9 kB 52.9 kB
pages-turbo...prod.js gzip 38.7 kB 38.7 kB
pages.runtim...dev.js gzip 52.8 kB 52.8 kB
pages.runtim..prod.js gzip 38.7 kB 38.7 kB
server.runti..prod.js gzip 62.5 kB 62.5 kB
Total 2.98 MB 2.98 MB ✅ -3 B
📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/f85e550b3bc62bdffa6d843df62ea0da745fb2a0/next

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants