-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
feat(nuxt): Automatically add BrowserTracing #13005
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,11 @@ | ||
import { init as initBrowser } from '@sentry/browser'; | ||
import { applySdkMetadata } from '@sentry/core'; | ||
import type { Client } from '@sentry/types'; | ||
import { | ||
type BrowserOptions, | ||
browserTracingIntegration, | ||
getDefaultIntegrations as getBrowserDefaultIntegrations, | ||
init as initBrowser, | ||
} from '@sentry/browser'; | ||
import { applySdkMetadata, hasTracingEnabled } from '@sentry/core'; | ||
import type { Client, Integration } from '@sentry/types'; | ||
import type { SentryNuxtOptions } from '../common/types'; | ||
|
||
/** | ||
|
@@ -10,10 +15,26 @@ import type { SentryNuxtOptions } from '../common/types'; | |
*/ | ||
export function init(options: SentryNuxtOptions): Client | undefined { | ||
const sentryOptions = { | ||
defaultIntegrations: getDefaultIntegrations(options), | ||
...options, | ||
}; | ||
|
||
applySdkMetadata(sentryOptions, 'nuxt', ['nuxt', 'vue']); | ||
|
||
return initBrowser(sentryOptions); | ||
} | ||
|
||
// Tree-shakable guard to remove all code related to tracing | ||
declare const __SENTRY_TRACING__: boolean; | ||
|
||
function getDefaultIntegrations(options: BrowserOptions): Integration[] | undefined { | ||
// This evaluates to true unless __SENTRY_TRACING__ is text-replaced with "false", | ||
// in which case everything inside will get tree-shaken away | ||
if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) { | ||
if (hasTracingEnabled(options)) { | ||
return [...getBrowserDefaultIntegrations(options), browserTracingIntegration()]; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As discussed today, let's remove this guard and later, once we have a vite plugin setup, add an easy-to-use option to configure the |
||
} | ||
} | ||
|
||
return undefined; | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, I checked and this logic is identical to next, sveltekit and astro. So far so good but there is a flaw here that we probably were not aware of:
hasTracingEnabled
returns false if neithertracesSampleRate
,tracesSampler
norenableTracing
are set. So in this case, we'd not add the integration here. However, the only way to enable "Tracing without Performance" in browser land is to addbrowserTracingIntegration
but not set any of the three options.Before we merge this PR, let's discuss if we change this behaviour in all SDKs or continue with it.