Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Use resource to detect feature usage in telemetry #75917

Conversation

eps1lon
Copy link
Member

@eps1lon eps1lon commented Feb 11, 2025

This is required for when we start using layers in Pages Router.

@ijjk
Copy link
Member

ijjk commented Feb 11, 2025

Tests Passed

@ijjk
Copy link
Member

ijjk commented Feb 11, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
buildDuration 17.7s 15.5s N/A
buildDurationCached 14.6s 12.3s N/A
nodeModulesSize 393 MB 393 MB N/A
nextStartRea..uration (ms) 416ms 423ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
5306-HASH.js gzip 55.1 kB 55.1 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.46 kB 5.47 kB N/A
bccd1874-HASH.js gzip 53 kB 53 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 245 B 245 B
main-HASH.js gzip 34.7 kB 34.7 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 245 B 245 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.59 kB 4.59 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.35 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
_buildManifest.js gzip 748 B 748 B
Overall change 748 B 748 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
index.html gzip 525 B 523 B N/A
link.html gzip 539 B 538 B N/A
withRouter.html gzip 520 B 520 B
Overall change 520 B 520 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
edge-ssr.js gzip 130 kB 130 kB N/A
page.js gzip 211 kB 211 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
middleware-b..fest.js gzip 676 B 672 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 844 B 844 B
Next Runtimes
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
app-page-exp...dev.js gzip 394 kB 394 kB
app-page-exp..prod.js gzip 132 kB 132 kB
app-page-tur..prod.js gzip 145 kB 145 kB
app-page-tur..prod.js gzip 141 kB 141 kB
app-page.run...dev.js gzip 382 kB 382 kB
app-page.run..prod.js gzip 129 kB 129 kB
app-route-ex...dev.js gzip 39.4 kB 39.4 kB
app-route-ex..prod.js gzip 25.7 kB 25.7 kB
app-route-tu..prod.js gzip 25.7 kB 25.7 kB
app-route-tu..prod.js gzip 25.5 kB 25.5 kB
app-route.ru...dev.js gzip 41 kB 41 kB
app-route.ru..prod.js gzip 25.5 kB 25.5 kB
dist_client_...dev.js gzip 356 B 356 B
dist_client_...dev.js gzip 349 B 349 B
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.8 kB 11.8 kB
pages-api.ru..prod.js gzip 9.69 kB 9.69 kB
pages-turbo...prod.js gzip 22 kB 22 kB
pages.runtim...dev.js gzip 31.6 kB 31.6 kB
pages.runtim..prod.js gzip 22 kB 22 kB
server.runti..prod.js gzip 61.1 kB 61.1 kB
Overall change 1.67 MB 1.67 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry Change
0.pack gzip 2.11 MB 2.12 MB ⚠️ +2.42 kB
index.pack gzip 76.6 kB 76 kB N/A
Overall change 2.11 MB 2.12 MB ⚠️ +2.42 kB
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 554d372

@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch 4 times, most recently from feea839 to d0ad09c Compare February 12, 2025 07:36
@eps1lon eps1lon changed the base branch from canary to graphite-base/75917 February 12, 2025 08:57
@eps1lon eps1lon force-pushed the graphite-base/75917 branch from f2dd61d to 83b64e9 Compare February 12, 2025 08:57
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from d0ad09c to 0ee9728 Compare February 12, 2025 08:57
@eps1lon eps1lon changed the base branch from graphite-base/75917 to sebbie/telemetry-app-router-test February 12, 2025 08:57
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from 0ee9728 to eb75315 Compare February 12, 2025 10:20
@eps1lon eps1lon marked this pull request as ready for review February 12, 2025 11:42
@eps1lon eps1lon requested review from huozhi and gaojude February 12, 2025 11:42
for (const [feature, path] of FEATURE_MODULE_MAP) {
if (normalizedIdentifier.endsWith(path)) {
for (const [feature, rawRequest] of FEATURE_MODULE_MAP) {
if ((module as webpack.NormalModule).rawRequest === rawRequest) {
Copy link
Member

Choose a reason for hiding this comment

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

qq: if a library using import xx from 'next/image.js' due to ESM module requirement, will this get effected?

Copy link
Member Author

Choose a reason for hiding this comment

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

Good point. Let me check if there's a better field that gives me the resolved module.

Copy link
Member Author

Choose a reason for hiding this comment

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

Using resource now which allows us to retain the endsWith(path) check.

@eps1lon eps1lon marked this pull request as draft February 12, 2025 16:23
@eps1lon eps1lon changed the title Use raw requests to detect feature usage in telemetry Use resource to detect feature usage in telemetry Feb 12, 2025
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from eb75315 to 7377e6b Compare February 12, 2025 16:23
@eps1lon eps1lon force-pushed the sebbie/telemetry-app-router-test branch from 44e62ce to 4f8c59d Compare February 12, 2025 16:23
@eps1lon eps1lon requested a review from huozhi February 12, 2025 17:17
for (const [feature, path] of FEATURE_MODULE_MAP) {
if (normalizedIdentifier.endsWith(path)) {
if ((module as webpack.NormalModule).resource.endsWith(path)) {
Copy link
Member Author

Choose a reason for hiding this comment

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

module.identifier() includes the layer e.g. next/image.js|some-layer so the old matching approach didn't work. resource does not contain just the path.

Copy link
Member

@huozhi huozhi Feb 12, 2025

Choose a reason for hiding this comment

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

resource could contain resourceQuery ?xxx, maybe use resourcePath? not blocking, very rare case

Copy link
Member Author

Choose a reason for hiding this comment

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

I don't see resourcePath on the module. There's resourceResolveData?.path? but this is untyped so I don't trust it. Probably best to wait for a concrete case.

Was the resource query not part of the module identifier?

Copy link
Member

Choose a reason for hiding this comment

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

oh sorry I got it wrong with the loader API, module.resource should be enough

@eps1lon eps1lon marked this pull request as ready for review February 12, 2025 17:20
@eps1lon eps1lon changed the base branch from sebbie/telemetry-app-router-test to graphite-base/75917 February 12, 2025 17:29
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from 7377e6b to 28a6d63 Compare February 12, 2025 17:30
@eps1lon eps1lon force-pushed the graphite-base/75917 branch from 4f8c59d to 99bf5e9 Compare February 12, 2025 17:30
@eps1lon eps1lon changed the base branch from graphite-base/75917 to canary February 12, 2025 17:30
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from 28a6d63 to e55e149 Compare February 12, 2025 17:30
This is required for when we start using layers in Pages Router.
It's also required to fix telemetry of certain features in App Router which makes extensive usage of layers.
That isn't working just yet though a test was kept in place.
@eps1lon eps1lon force-pushed the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch from e55e149 to 554d372 Compare February 12, 2025 17:40
@eps1lon eps1lon merged commit 319a338 into canary Feb 12, 2025
131 checks passed
Copy link
Member Author

eps1lon commented Feb 12, 2025

Merge activity

  • Feb 12, 8:52 PM GMT+1: A user merged this pull request with Graphite.

@eps1lon eps1lon deleted the sebbie/02-11-use_raw_requests_to_detect_feature_usage_in_telemetry branch February 12, 2025 19:52
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants