diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 187ac67d8218..882861acee4b 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -1523,6 +1523,10 @@ export default async function build( featureName: 'experimental/optimizeCss', invocationCount: config.experimental.optimizeCss ? 1 : 0, }, + { + featureName: 'experimental/nextScriptWorkers', + invocationCount: config.experimental.nextScriptWorkers ? 1 : 0, + }, { featureName: 'optimizeFonts', invocationCount: config.optimizeFonts ? 1 : 0, diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index c8548f0942f9..e37bea378c70 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -135,6 +135,7 @@ export type EventBuildFeatureUsage = { | 'next/script' | 'next/dynamic' | 'experimental/optimizeCss' + | 'experimental/nextScriptWorkers' | 'optimizeFonts' | 'swcLoader' | 'swcMinify' diff --git a/test/integration/telemetry/next.config.next-script-workers b/test/integration/telemetry/next.config.next-script-workers new file mode 100644 index 000000000000..0d7f87abc139 --- /dev/null +++ b/test/integration/telemetry/next.config.next-script-workers @@ -0,0 +1,5 @@ +module.exports = { + experimental: { + nextScriptWorkers: true + } +} \ No newline at end of file diff --git a/test/integration/telemetry/test/index.test.js b/test/integration/telemetry/test/index.test.js index de7e41d6790f..d70761f98544 100644 --- a/test/integration/telemetry/test/index.test.js +++ b/test/integration/telemetry/test/index.test.js @@ -647,6 +647,7 @@ describe('Telemetry CLI', () => { }) const regex = /NEXT_BUILD_FEATURE_USAGE[\s\S]+?{([\s\S]+?)}/g regex.exec(stderr).pop() // optimizeCss + regex.exec(stderr).pop() // nextScriptWorkers regex.exec(stderr).pop() // build-lint const optimizeFonts = regex.exec(stderr).pop() expect(optimizeFonts).toContain(`"featureName": "optimizeFonts"`) @@ -704,6 +705,7 @@ describe('Telemetry CLI', () => { const regex = /NEXT_BUILD_FEATURE_USAGE[\s\S]+?{([\s\S]+?)}/g regex.exec(stderr).pop() // optimizeCss + regex.exec(stderr).pop() // nextScriptWorkers regex.exec(stderr).pop() // build-lint regex.exec(stderr).pop() // optimizeFonts const swcLoader = regex.exec(stderr).pop() @@ -761,6 +763,32 @@ describe('Telemetry CLI', () => { expect(optimizeCss).toContain(`"invocationCount": 1`) }) + it('emits telemetry for usage of `nextScriptWorkers`', async () => { + await fs.rename( + path.join(appDir, 'next.config.next-script-workers'), + path.join(appDir, 'next.config.js') + ) + + const { stderr } = await nextBuild(appDir, [], { + stderr: true, + env: { NEXT_TELEMETRY_DEBUG: 1 }, + }) + + await fs.rename( + path.join(appDir, 'next.config.js'), + path.join(appDir, 'next.config.next-script-workers') + ) + + const regex = /NEXT_BUILD_FEATURE_USAGE[\s\S]+?{([\s\S]+?)}/g + regex.exec(stderr).pop() // build-lint + regex.exec(stderr).pop() // optimizeCss + const nextScriptWorkers = regex.exec(stderr).pop() + expect(nextScriptWorkers).toContain( + `"featureName": "experimental/nextScriptWorkers"` + ) + expect(nextScriptWorkers).toContain(`"invocationCount": 1`) + }) + it('emits telemetry for usage of _middleware', async () => { await fs.writeFile( path.join(appDir, 'pages/ssg/_middleware.js'),