diff --git a/src/runtime/composables/useScript.ts b/src/runtime/composables/useScript.ts index 68d2aea2..35572ae1 100644 --- a/src/runtime/composables/useScript.ts +++ b/src/runtime/composables/useScript.ts @@ -25,7 +25,7 @@ export function useScript>(input: UseScri if (!nuxtApp._scripts?.[id]) { performance?.mark?.('mark_feature_usage', { detail: { - feature: `nuxt-scripts:${id}`, + feature: options.performanceMarkFeature ?? `nuxt-scripts:${id}`, }, }) } diff --git a/src/runtime/types.ts b/src/runtime/types.ts index 2a9aceed..8d24e525 100644 --- a/src/runtime/types.ts +++ b/src/runtime/types.ts @@ -45,6 +45,10 @@ export type NuxtUseScriptOptions = Omit, 'trigger'> * loading the actual script and not getting warnings. */ skipValidation?: boolean + /** + * @internal + */ + performanceMarkFeature?: string } export type NuxtUseScriptOptionsSerializable = Omit & { trigger?: 'client' | 'server' | 'onNuxtReady' } diff --git a/src/tpc/google-analytics.ts b/src/tpc/google-analytics.ts index ff1ad0cf..e06cb1c2 100644 --- a/src/tpc/google-analytics.ts +++ b/src/tpc/google-analytics.ts @@ -20,6 +20,7 @@ export default function googleAnalitycsRegistry() { }, tpcKey: 'gtag', tpcTypeImport: 'GoogleAnalyticsApi', + featureDetectionName: 'nuxt-third-parties-ga', }) }, filename: 'nuxt-scripts/tpc/google-analytics.ts', diff --git a/src/tpc/google-tag-manager.ts b/src/tpc/google-tag-manager.ts index c63ce19d..f21f7175 100644 --- a/src/tpc/google-tag-manager.ts +++ b/src/tpc/google-tag-manager.ts @@ -21,6 +21,7 @@ export default function googleTagManagerRegistry() { }, tpcKey: 'gtm', tpcTypeImport: 'GoogleTagManagerApi', + featureDetectionName: 'nuxt-third-parties-gtm', }) }, filename: 'nuxt-scripts/tpc/google-tag-manager.ts', diff --git a/src/tpc/utils.ts b/src/tpc/utils.ts index 0eb9cac6..356c80f4 100644 --- a/src/tpc/utils.ts +++ b/src/tpc/utils.ts @@ -16,6 +16,7 @@ export interface ScriptContentOpts { * This will be stringified. The function must be pure. */ stub: (params: { fn: string }) => any + featureDetectionName?: string } const HEAD_VAR = '__head' @@ -94,6 +95,7 @@ ${functionBody.join('\n')} scriptOptions: { use: ${input.use.toString()}, stub: import.meta.client ? undefined : ${input.stub.toString()}, + ${input.featureDetectionName ? `performanceMarkFeature: ${JSON.stringify(input.featureDetectionName)},` : ''} ${mainScriptOptions ? `...(${JSON.stringify(mainScriptOptions)})` : ''} }, ${clientInitCode.length ? `clientInit: import.meta.server ? undefined : () => {${clientInitCode.join('\n')}},` : ''}