Skip to content

Commit 977a74e

Browse files
authored
feat(tracing): allow configuring vueRouterInstrumentation options (#614)
1 parent a65cf52 commit 977a74e

File tree

5 files changed

+15
-4
lines changed

5 files changed

+15
-4
lines changed

docs/content/en/configuration/options.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,13 @@ export default function () {
317317
vueOptions: {
318318
trackComponents: true,
319319
},
320+
vueRouterInstrumentationOptions: {
321+
routeLabel: 'name',
322+
},
320323
}
321324
```
322-
- On the browser side the `BrowserTracing` integration is enabled by default and adds automatic instrumentation for monitoring the performance of the application. The [Vue Router Integration](https://docs.sentry.io/platforms/javascript/guides/vue/configuration/integrations/vue-router/) is also automatically enabled. See all available [`BrowserTracing` options](https://docs.sentry.io/platforms/javascript/guides/vue/performance/instrumentation/automatic-instrumentation/).
325+
- On the browser side the `BrowserTracing` integration is enabled by default and adds automatic instrumentation for monitoring the performance of the application. See all available [`BrowserTracing` options](https://docs.sentry.io/platforms/javascript/guides/vue/performance/instrumentation/automatic-instrumentation/).
326+
- The [Vue Router Integration](https://docs.sentry.io/platforms/javascript/guides/vue/configuration/integrations/vue-router/) is also automatically enabled on the browser side and defaults to using route names as labels. [Supported options](https://docs.sentry.io/platforms/javascript/guides/vue/configuration/integrations/vue-router/#configuration) can be passed through the `vueRouterInstrumentationOptions` object.
323327
- On the browser side extra options for [Tracking Vue components](https://docs.sentry.io/platforms/javascript/guides/vue/features/component-tracking/) can be passed through the `vueOptions` object.
324328
- On the server side the `Http` integration is enabled to trace HTTP requests and [tracingHandler](https://docs.sentry.io/platforms/node/guides/express/performance/) is enabled to trace `connect` and `express` routes.
325329
- See also the [Performance Monitoring](/guide/performance) section for more information.

src/options.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ function resolveTracingOptions (options: ModuleConfiguration): void {
137137
vueOptions: {
138138
trackComponents: true,
139139
},
140+
vueRouterInstrumentationOptions: {
141+
routeLabel: 'name',
142+
},
140143
}
141144

142145
options.tracing = defu(options.tracing, defaultTracingOptions)

src/templates/client.shared.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ export<%= (options.clientConfigPath || options.customClientIntegrations) ? ' asy
5656
.join(',\n ') %>,
5757
]
5858
<% if (options.tracing) { %>
59-
const { browserTracing, vueOptions, ...tracingOptions } = <%= serialize(options.tracing) %>
59+
const { browserTracing, vueOptions, vueRouterInstrumentationOptions, ...tracingOptions } = <%= serialize(options.tracing) %>
6060
config.integrations.push(new BrowserTracing({
61-
...(ctx.app.router ? { routingInstrumentation: vueRouterInstrumentation(ctx.app.router) } : {}),
61+
...(ctx.app.router ? { routingInstrumentation: vueRouterInstrumentation(ctx.app.router, vueRouterInstrumentationOptions) } : {}),
6262
...browserTracing,
6363
}))
6464
merge(config, vueOptions, tracingOptions)

src/types/configuration.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Configuration as WebpackOptions } from 'webpack'
22
import { Options as SentryOptions, IntegrationClass } from '@sentry/types'
33
import * as PluggableIntegrations from '@sentry/integrations'
4-
import { BrowserTracing, Integrations as BrowserIntegrations, Replay } from '@sentry/vue'
4+
import { BrowserTracing, Integrations as BrowserIntegrations, Replay, vueRouterInstrumentation } from '@sentry/vue'
55
import { Options as SentryVueOptions, TracingOptions as SentryVueTracingOptions } from '@sentry/vue/types/types'
66
import { SentryCliPluginOptions } from '@sentry/webpack-plugin'
77
import { Integrations as NodeIntegrations, NodeOptions, Handlers } from '@sentry/node'
@@ -29,6 +29,7 @@ export interface LazyConfiguration {
2929
export interface TracingConfiguration extends Pick<SentryOptions, 'tracesSampleRate'> {
3030
browserTracing?: Partial<BrowserTracing['options']>
3131
vueOptions?: Partial<SentryVueTracingOptions>
32+
vueRouterInstrumentationOptions?: Parameters<typeof vueRouterInstrumentation>[1]
3233
}
3334

3435
export interface ModuleConfiguration {

test/options.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ describe('Resolve Server Options', () => {
155155
vueOptions: {
156156
trackComponents: true,
157157
},
158+
vueRouterInstrumentationOptions: {
159+
routeLabel: 'name',
160+
},
158161
},
159162
})
160163
const integrations = Array.isArray(resolvedOptions.config.integrations) ? resolvedOptions.config.integrations : null

0 commit comments

Comments
 (0)