Skip to content

Restore default-enabled Server Function logging#89407

Merged
unstubbable merged 1 commit intocanaryfrom
hl/server-function-logging-flip-default
Feb 2, 2026
Merged

Restore default-enabled Server Function logging#89407
unstubbable merged 1 commit intocanaryfrom
hl/server-function-logging-flip-default

Conversation

@unstubbable
Copy link
Contributor

Restores Server Function logging to be enabled by default during development, as originally implemented in #88277. The change to opt-in in #89321 was overly conservative. The implicit default in #88277 was an intentional design decision.

Users can still opt out via next.config.js:

module.exports = {
  logging: {
    serverFunctions: false,
  },
}

For 'use cache' Server Functions called from the client, the logging still needs more work. We'll disable it for those in a follow-up PR rather than gating the entire feature.

Also fixes a pre-existing error where 'verbose' from the deprecated experimental.browserDebugInfoInTerminal config wasn't properly normalized to logging.browserToTerminal. This was now surfaced because the default logging value object was not typed as LoggingConfig.

Restores Server Function logging to be enabled by default during
development, as originally implemented in #88277. The change to opt-in
in #89321 was overly conservative. The implicit default in #88277 was an
intentional design decision.

Users can still opt out via `next.config.js`:

```js
module.exports = {
  logging: {
    serverFunctions: false,
  },
}
```

For `'use cache'` Server Functions called from the client, the logging
still needs more work. We'll disable it for those in a follow-up PR
rather than gating the entire feature.

Also fixes a pre-existing error where `'verbose'` from the deprecated
`experimental.browserDebugInfoInTerminal` config wasn't properly
normalized to `logging.browserToTerminal`. This was now surfaced because
the default `logging` value object was not typed as `LoggingConfig`.
@nextjs-bot nextjs-bot added created-by: Next.js team PRs by the Next.js team. Documentation Related to Next.js' official documentation. tests type: next labels Feb 2, 2026
@vercel
Copy link
Contributor

vercel bot commented Feb 2, 2026

Notifying the following users due to files changed in this PR based on this repo's notify modifiers:

@timneutkens, @ijjk, @shuding, @huozhi:

packages/next/src/server/config.ts

@unstubbable unstubbable requested a review from huozhi February 2, 2026 18:10
@nextjs-bot
Copy link
Collaborator

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) 457ms 455ms ▁▁▁▁▁
Cold (Ready in log) 438ms 437ms ▂▂▂▂▂
Cold (First Request) 1.157s 1.137s ▄▄▂▅▅
Warm (Listen) 456ms 457ms ▁▁▁▁▁
Warm (Ready in log) 441ms 444ms ▁▁▁▁▁
Warm (First Request) 338ms 340ms ▁▂▂▁▁
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 455ms 456ms ▅▅▅▁█
Cold (Ready in log) 434ms 437ms ▆▅▁▇▆
Cold (First Request) 1.825s 1.779s ▃▄▁▄▃
Warm (Listen) 455ms 455ms ▅▅▅▅▅
Warm (Ready in log) 435ms 434ms ▃▄▁▇▆
Warm (First Request) 1.772s 1.853s ▃▃▁▅▄

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 3.889s 3.953s ▁▁▃▁▁
Cached Build 3.979s 3.989s ▁▁▃▁▁
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 13.616s 13.668s ▁▂▁▁▁
Cached Build 13.858s 13.892s ▁▂▁▁▁
node_modules Size 464 MB 464 MB █▁▁▁▁
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles: **434 kB** → **434 kB** ✅ -2 B

81 files with content-based hashes (individual files not comparable between builds)

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 762 B 768 B
Total 762 B 768 B ⚠️ +6 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 450 B 451 B
Total 450 B 451 B ⚠️ +1 B

📦 Webpack

Client

Main Bundles
Canary PR Change
5528-HASH.js gzip 5.47 kB N/A -
6280-HASH.js gzip 54.5 kB N/A -
6335.HASH.js gzip 169 B N/A -
912-HASH.js gzip 4.53 kB N/A -
e8aec2e4-HASH.js gzip 62.5 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 255 B 254 B
main-HASH.js gzip 39 kB 39 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
262-HASH.js gzip N/A 4.52 kB -
2889.HASH.js gzip N/A 169 B -
5602-HASH.js gzip N/A 5.48 kB -
6948ada0-HASH.js gzip N/A 62.5 kB -
9544-HASH.js gzip N/A 55.2 kB -
Total 228 kB 228 kB ⚠️ +672 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.49 kB 2.49 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.97 kB 7.97 kB ✅ -1 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 126 kB 126 kB
page.js gzip 249 kB 249 kB
Total 375 kB 375 kB ⚠️ +136 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 613 B 613 B
middleware-r..fest.js gzip 156 B 155 B
middleware.js gzip 33.1 kB 33.1 kB
edge-runtime..pack.js gzip 842 B 842 B
Total 34.7 kB 34.8 kB ⚠️ +77 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 732 B 736 B
Total 732 B 736 B ⚠️ +4 B
Build Cache
Canary PR Change
0.pack gzip 3.79 MB 3.81 MB 🔴 +16.3 kB (+0%)
index.pack gzip 103 kB 103 kB
index.pack.old gzip 103 kB 102 kB
Total 4 MB 4.01 MB ⚠️ +15.8 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 311 kB 311 kB
app-page-exp..prod.js gzip 166 kB 166 kB
app-page-tur...dev.js gzip 311 kB 311 kB
app-page-tur..prod.js gzip 166 kB 166 kB
app-page-tur...dev.js gzip 308 kB 308 kB
app-page-tur..prod.js gzip 164 kB 164 kB
app-page.run...dev.js gzip 308 kB 308 kB
app-page.run..prod.js gzip 164 kB 164 kB
app-route-ex...dev.js gzip 70.4 kB 70.4 kB
app-route-ex..prod.js gzip 48.9 kB 48.9 kB
app-route-tu...dev.js gzip 70.4 kB 70.4 kB
app-route-tu..prod.js gzip 49 kB 49 kB
app-route-tu...dev.js gzip 70 kB 70 kB
app-route-tu..prod.js gzip 48.7 kB 48.7 kB
app-route.ru...dev.js gzip 70 kB 70 kB
app-route.ru..prod.js gzip 48.7 kB 48.7 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.1 kB 43.1 kB
pages-api-tu..prod.js gzip 32.9 kB 32.9 kB
pages-api.ru...dev.js gzip 43.1 kB 43.1 kB
pages-api.ru..prod.js gzip 32.8 kB 32.8 kB
pages-turbo....dev.js gzip 52.4 kB 52.4 kB
pages-turbo...prod.js gzip 39.4 kB 39.4 kB
pages.runtim...dev.js gzip 52.4 kB 52.4 kB
pages.runtim..prod.js gzip 39.3 kB 39.3 kB
server.runti..prod.js gzip 62.6 kB 62.6 kB
Total 2.77 MB 2.77 MB ⚠️ +1 B
📝 Changed Files (1 file)

Files with changes:

  • server.runtime.prod.js
View diffs
server.runtime.prod.js

Diff too large to display

@unstubbable unstubbable merged commit 286e243 into canary Feb 2, 2026
160 checks passed
@unstubbable unstubbable deleted the hl/server-function-logging-flip-default branch February 2, 2026 18:13
unstubbable added a commit that referenced this pull request Feb 2, 2026
Follow-up to #89407.

Disables Server Function logging for `'use cache'` functions called from
the client.

The logging output for these Server Functions needs more work to be
useful. Currently it shows internal details like `$$RSC_SERVER_CACHE_0`
instead of the actual function name, and the encoded bound args promise.
unstubbable added a commit that referenced this pull request Feb 2, 2026
Follow-up to #89407.

Disables Server Function logging for `'use cache'` functions called from
the client.

The logging output for these Server Functions needs more work to be
useful. Currently it shows internal details like `$$RSC_SERVER_CACHE_0`
instead of the actual function name, as well as the encoded bound args
promise.
unstubbable added a commit that referenced this pull request Feb 2, 2026
Follow-up to #89407.

Disables Server Function logging for `'use cache'` functions called from
the client.

The logging output for these Server Functions needs more work to be
useful. Currently it shows internal details like `$$RSC_SERVER_CACHE_0`
instead of the actual function name, as well as the encoded bound args
promise.
unstubbable added a commit that referenced this pull request Feb 2, 2026
Follow-up to #89407.

Disables Server Function logging for `'use cache'` functions called from
the client.

The logging output for these Server Functions needs more work to be
useful. Currently it shows internal details like `$$RSC_SERVER_CACHE_0`
instead of the actual function name, as well as the encoded bound args
promise.
bgub pushed a commit to bgub/next.js that referenced this pull request Feb 5, 2026
Restores Server Function logging to be enabled by default during
development, as originally implemented in vercel#88277. The change to opt-in
in vercel#89321 was overly conservative. The implicit default in vercel#88277 was an
intentional design decision.

Users can still opt out via `next.config.js`:

```js
module.exports = {
  logging: {
    serverFunctions: false,
  },
}
```

For `'use cache'` Server Functions called from the client, the logging
still needs more work. We'll disable it for those in a follow-up PR
rather than gating the entire feature.

Also fixes a pre-existing error where `'verbose'` from the deprecated
`experimental.browserDebugInfoInTerminal` config wasn't properly
normalized to `logging.browserToTerminal`. This was now surfaced because
the default `logging` value object was not typed as `LoggingConfig`.

<!-- Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible we request that
you follow the checklist sections below.
Choose the right checklist for the change(s) that you're making:

## For Contributors

### Improving Documentation

- Run `pnpm prettier-fix` to fix formatting issues before opening the
PR.
- Read the Docs Contribution Guide to ensure your contribution follows
the docs guidelines:
https://nextjs.org/docs/community/contribution-guide

### Fixing a bug

- Related issues linked using `fixes #number`
- Tests added. See:
https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md

### Adding a feature

- Implements an existing feature request or RFC. Make sure the feature
request has been accepted for implementation before opening a PR. (A
discussion must be opened, see
https://github.com/vercel/next.js/discussions/new?category=ideas)
- Related issues/discussions are linked using `fixes #number`
- e2e tests added
(https://github.com/vercel/next.js/blob/canary/contributing/core/testing.md#writing-tests-for-nextjs)
- Documentation added
- Telemetry added. In case of a feature if it's used or not.
- Errors have a helpful link attached, see
https://github.com/vercel/next.js/blob/canary/contributing.md


## For Maintainers

- Minimal description (aim for explaining to someone not on the team to
understand the PR)
- When linking to a Slack thread, you might want to share details of the
conclusion
- Link both the Linear (Fixes NEXT-xxx) and the GitHub issues
- Add review comments if necessary to explain to the reviewer the logic
behind a change

### What?

### Why?

### How?

Closes NEXT-
Fixes #

-->
bgub pushed a commit to bgub/next.js that referenced this pull request Feb 5, 2026
Follow-up to vercel#89407.

Disables Server Function logging for `'use cache'` functions called from
the client.

The logging output for these Server Functions needs more work to be
useful. Currently it shows internal details like `$$RSC_SERVER_CACHE_0`
instead of the actual function name, as well as the encoded bound args
promise.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by: Next.js team PRs by the Next.js team. Documentation Related to Next.js' official documentation. tests type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants