Skip to content

React Router V5 Integration is not parameterizing transaction names #11815

Closed

Description

@nicholas-codecov

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/react

SDK Version

8.0.0-beta.3

Framework Version

React 18.2.0

Link to Sentry event

https://codecov.sentry.io/performance/?project=5514400&statsPeriod=14d

SDK Setup

export const setupSentry = ({
  history,
}: {
  history: ReturnType<typeof createBrowserHistory>
}) => {
  // no sentry dsn, don't init
  if (!config.SENTRY_DSN) {
    return
  }

  // configure sentry product integrations
  const replay = Sentry.replayIntegration()
  const tracing = Sentry.reactRouterV5BrowserTracingIntegration({
    history,
  })

  const integrations = [replay, tracing]

  // Only show feedback button in production
  // spotlight takes the place of the feedback widget in dev mode
  if (config.NODE_ENV === 'production') {
    const feedback = Sentry.feedbackIntegration({
      colorScheme: 'light',
      showBranding: false,
      formTitle: 'Give Feedback',
      buttonLabel: 'Give Feedback',
      submitButtonLabel: 'Send Feedback',
      nameLabel: 'Username',
      isEmailRequired: true,
    })
    integrations.push(feedback)
  }

  const tracePropagationTargets = ['api.codecov.io', 'stage-api.codecov.dev']
  // wrapped in a silent try/catch incase the URL is invalid
  try {
    const { hostname } = new URL(config.API_URL)
    // add the hostname to the tracePropagationTargets if it's not already there
    if (!tracePropagationTargets.includes(hostname)) {
      tracePropagationTargets.push(hostname)
    }
  } catch {}

  Sentry.init({
    dsn: config.SENTRY_DSN,
    debug: config.NODE_ENV !== 'production',
    release: config.SENTRY_RELEASE,
    environment: config.SENTRY_ENVIRONMENT,
    integrations,
    tracePropagationTargets,
    tracesSampleRate: config?.SENTRY_TRACING_SAMPLE_RATE,
    // Capture n% of all sessions
    replaysSessionSampleRate: config?.SENTRY_SESSION_SAMPLE_RATE,
    // Of the remaining x% of sessions, if an error happens start capturing
    replaysOnErrorSampleRate: config?.SENTRY_ERROR_SAMPLE_RATE,
    beforeSend: (event, _hint) => {
      if (checkForBlockedUserAgents()) {
        return null
      }

      return event
    },
    beforeSendTransaction: (event, _hint) => {
      if (checkForBlockedUserAgents()) {
        return null
      }

      return event
    },
    ...deClutterConfig,
  })

  if (config.NODE_ENV === 'development') {
    Spotlight.init({
      injectImmediately: true,
      integrations: [Spotlight.sentry()],
    })
  }
}

Steps to Reproduce

  1. Installed v8.0.0-beta.3

Just to note, we do currently have two routes that are not wrapped with the Sentry helper.

Expected Result

Screenshot 2024-04-26 at 11 24 56

Actual Result

Screenshot 2024-04-26 at 11 24 31

Activity

  1. added this to the 8.0.0 milestone on Apr 26, 2024
  2. nicholas-codecov commented on Apr 26, 2024

    @nicholas-codecov
    Author

    We have since bumped to beta 4 of V8.

  3. mydea commented on Apr 29, 2024

    @mydea
    Member

    Hey, just to clarify: Are you using withSentryRouting as described here:

    https://docs.sentry.io/platforms/javascript/guides/react/features/react-router/#parameterized-transaction-names

    without this, you wouldn't get parametrized routes.

  4. nicholas-codecov commented on Apr 29, 2024

    @nicholas-codecov
    Author

    Yes sorry, i forgot to include that portion of our Sentry file:

    https://github.com/codecov/gazebo/blob/main/src/sentry.ts#L53

  5. mydea commented on Apr 30, 2024

    @mydea
    Member

    Thanks for bearing with us! I identified the problem and have a fix up here: #11855

  6. nicholas-codecov commented on Apr 30, 2024

    @nicholas-codecov
    Author

    @mydea thanks for the quick fix, wondering if this will also be included with V8?

  7. mydea commented on Apr 30, 2024

    @mydea
    Member

    @mydea thanks for the quick fix, wondering if this will also be included with V8?

    Yes, it will be in the next release - most likely we'll cut v8.0.0-beta.6 early thursday!

  8. nicholas-codecov commented on Apr 30, 2024

    @nicholas-codecov
    Author

    Awesome tysm!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions