Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: getsentry/sentry-javascript
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 8.25.0
Choose a base ref
...
head repository: getsentry/sentry-javascript
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 8.26.0
Choose a head ref

Commits on Aug 9, 2024

  1. Merge branch 'release/8.25.0'

    getsentry-bot committed Aug 9, 2024
    Copy the full SHA
    fd4fa69 View commit details
  2. Merge pull request #13290 from getsentry/master

    [Gitflow] Merge master into develop
    github-actions[bot] authored Aug 9, 2024
    Copy the full SHA
    1c3195a View commit details
  3. Copy the full SHA
    cf63845 View commit details
  4. Copy the full SHA
    2a1d8ee View commit details
  5. feat(tracing): make long animation frames opt-out (#13255)

    Enable long animation frames by default. If long animation frames are
    not supported by the browser, Sentry will fallback to using long tasks
    where enabled.
    KevinL10 authored Aug 9, 2024
    Copy the full SHA
    28a8237 View commit details
  6. Copy the full SHA
    dd0501b View commit details
  7. Copy the full SHA
    a6fda4c View commit details
  8. ref: Add external contributor to CHANGELOG.md (#13298)

    This PR adds the external contributor to the CHANGELOG.md file, so that
    they are credited for their contribution. See #13296
    
    ---------
    
    Co-authored-by: andreiborza <168741329+andreiborza@users.noreply.github.com>
    Co-authored-by: Andrei Borza <andrei.borza@sentry.io>
    3 people authored Aug 9, 2024
    Copy the full SHA
    88fef5b View commit details

Commits on Aug 12, 2024

  1. test: Fix node-integration-test timeouts & cleanup (#13280)

    This PR streamlines and fixes some timing/cleanup issues we had in
    integration tests, which sometimes lead to issues.
    
    One problem was introduced here:
    #13253
    
    This change lead to the server being shut down (because `done` is
    called) before the HTTP requests are finished, leading to error logs.
    
    Another problem was that in some cases we had leaking processes, where
    we did not properly close servers we started - this was everywhere we
    used `createTestServer`.
    
    I also moved some code from the node-integration-tests package to the
    remix package, that was only used there (and not properly
    depended/imported on).
    
    For future debugging, this was shown by running tests with
    `--detectOpenHandles`.
    mydea authored Aug 12, 2024
    Copy the full SHA
    a55e4d5 View commit details
  2. feat(nuxt): Always add tracing meta tags (#13273)

    Making sure tracing without performance works.
    
    ref (SvelteKit):
    #13231
    s1gr1d authored Aug 12, 2024
    Copy the full SHA
    b29d771 View commit details
  3. fix(remix): Ensure origin is correctly set for remix server spans (#…

    …13305)
    
    Noticed here: #13282
    that we are not correctly setting origin for remix spans.
    mydea authored Aug 12, 2024
    Copy the full SHA
    16996bb View commit details
  4. fix(opentelemetry): Do not overwrite http span name if kind is intern…

    …al (#13282)
    
    If the kind of a http span is neither client nor server, it implies it
    is most likely being started with `startSpan()` manually, in which case
    we rather not want to overwrite the name.
    mydea authored Aug 12, 2024
    Copy the full SHA
    51bbf32 View commit details
  5. fix(astro): Only track access request headers in dynamic page requests (

    #13306)
    
    In Astro middleware, we're not allowed to access the `request.headers`
    object if the incoming request is for a statically generated/prerendered
    route. Since we accessed these headers previously, users would get a
    warning as reported multiple times and tracked in
    #13116.
    This patch fixes that by checking for static vs dynamic route
    Lms24 authored Aug 12, 2024
    Copy the full SHA
    38d9689 View commit details
  6. build: Bump node to 22.5.1 (#13118)

    Node 22 brings with it:
    
    - `node --run` to run scripts (fast)
    - stable `node --watch`
    - `glob` in `node:fs`
    
    which should allow us to remove a couple of our dependencies and clean
    up our scripts.
    AbhiPrasad authored Aug 12, 2024
    Copy the full SHA
    345dd74 View commit details
  7. feat(sveltekit): Add bundle size optimizations to plugin options (#13318

    )
    
    Makes it possible to add bundle size optimizations along with source
    maps options to the SvelteKit plugin options like this:
    ```js
          sourceMapsUploadOptions: {
            authToken: 'token',
            org: 'org',
            project: 'project',
          },
          bundleSizeOptimizations: {
            excludePerformanceMonitoring: true,
            excludeTracing: true
          },
    ```
    
    A bit of refactoring was done as well in the PR:
    - exported all types necessary for the plugin from `./types`
    - create a function `generateVitePluginOptions` which merges all
    SvelteKit plugin options correctly to create the Vite Plugin options (+
    tests for this function)
    
    part of #13011
    s1gr1d authored Aug 12, 2024
    Copy the full SHA
    4e6c02c View commit details
  8. docs: Remove alpha message for @sentry/opentelemetry (#13320)

    Noticed that we still called this out as alpha, even though it is not.
    mydea authored Aug 12, 2024
    Copy the full SHA
    bd87457 View commit details
  9. fix(astro): Correctly extract request data (#13315)

    builds on top of #13306, found while working on #13116
    
    This PR ensures that we correctly extract the request data in our Astro
    middleware. Previously we didn't convert the `request.headers` object
    into a `Record<string, string>` but simply passed a `Headers` instance.
    This caused problems with the `requestDataIntegration` which doesn't
    handle the instance correctly.
    Lms24 authored Aug 12, 2024
    Copy the full SHA
    2c24a33 View commit details
  10. feat(browser): Add spotlightBrowser integration (#13263)

    Adds a browser-side integration for sending events and Sentry requests to Spotlight. 
    The integration is not enabled by default but can be added by users if they want 
    to explicitly send browser SDK events to spotlight. This is especially helpful if people
    use spotlight in the electron app or a standalone browser window instead of the overlay.
    
    ---
    
    Co-authored-by: Burak Yigit Kaya <bkaya21@bloomberg.net>
    BYK and Burak Yigit Kaya authored Aug 12, 2024
    Copy the full SHA
    69a5e8e View commit details
  11. feat(nuxt): Set transaction name for server error (#13292)

    Setting the transaction name to display the API route where the error
    happened:
    
    ![image](https://github.com/user-attachments/assets/5954fc45-e710-44ab-b29a-f90e6bd480a4)
    s1gr1d authored Aug 12, 2024
    Copy the full SHA
    0654dd0 View commit details
  12. feat(core): Add OpenTelemetry-specific getTraceData implementation (#…

    …13281)
    
    Add an Otel-specific implementation of `getTraceData` and add the
    `getTraceData` function to the `AsyncContextStrategy` interface. This
    allows us to dynamically choose either the default implementation (which
    works correctly for browser/non-POTEL SDKs) and the Otel-specific
    version.
    Lms24 authored Aug 12, 2024
    Copy the full SHA
    5aef4a0 View commit details
  13. feat(replay): Add a replay-specific logger (#13256)

    Removes the old `logInfo` function and replaces it with a new
    replay-specific
    logger. Configuration is done when the replay integration is first
    initialized
    to avoid needing to pass around configuration options. This also means
    that we cannot select individual log statements to be added as
    breadcrumbs with
    `traceInternals` options.
    
    This also adds a `logger.exception` that wraps `captureException`.
    
    Note that only the following logging levels are supported:
    * `info`
    * `log`
    * `warn`
    * `error`
    
    With two additions:
    * `exception`
    * `infoTick` (needs a better name) - same as `info` but adds the
    breadcrumb in the next tick due to some pre-existing race conditions
    
    There is one method to configure the logger:
    * `setConfig({ traceInternals, captureExceptions })`
    billyvg authored Aug 12, 2024
    Copy the full SHA
    abc7259 View commit details

Commits on Aug 13, 2024

  1. test(browser): Add e2e tests for the @sentry/browser package (#13125)

    Add e2e test app for `@sentry/browser` package, testing
    - error
    - pageload span
    - navigation span
     
    
    ---------
    
    Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
    Zen-cronic and Lms24 authored Aug 13, 2024
    Copy the full SHA
    6aeaf42 View commit details
  2. feat(browser): Allow sentry in safari extension background page (#13209)

    Add `safari-web-extension:` to the list of allowed extension protocols.
    This chage should allow sentry/browser to work in safari browser
    extensions.
    undead-voron authored Aug 13, 2024
    Copy the full SHA
    e03df37 View commit details
  3. chore(ci): Adjust contribution message for multiple contributors (#13335

    )
    
    Use plural "contributions" if multiple contributors are mentioned
    Lms24 authored Aug 13, 2024
    Copy the full SHA
    40a86d5 View commit details
  4. ref: Add external contributor to CHANGELOG.md (#13334)

    This PR adds the external contributor to the CHANGELOG.md file, so that
    they are credited for their contribution. See #13125
    
    ---
    
    Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
    github-actions[bot] and Lms24 authored Aug 13, 2024
    Copy the full SHA
    899c571 View commit details
  5. Copy the full SHA
    0e7c492 View commit details
  6. Copy the full SHA
    70e1815 View commit details
  7. ref: Add external contributor to CHANGELOG.md (#13336)

    This PR adds the external contributor to the CHANGELOG.md file, so that
    they are credited for their contribution. See #13209
    
    ---
    
    Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
    github-actions[bot] and Lms24 authored Aug 13, 2024
    Copy the full SHA
    4311644 View commit details
  8. feat(browser): Send CLS as standalone span (experimental) (#13056)

    Add an experimental feature to `browserTracingIntegration` to
    no longer tie CLS reporting to the ongoing pageload span but instead
    send a standalone CLS span similarly to how we report INP.
    
    The big advantage of this reporting strategy is that layout shifts
    happening after the pageload idle span ended, will also get reported.
    This should give users more accurate CLS values in the web vitals
    performance insights module.
    Lms24 authored Aug 13, 2024
    Copy the full SHA
    5af8eb8 View commit details
  9. fix(nuxt): Add import line for disabled autoImport (#13342)

    Adds explicit imports in case `autoImport` is disabled (Nuxt docs
    [here](https://nuxt.com/docs/guide/concepts/auto-imports#disabling-auto-imports)).
    Disabled `autoImport` in the E2E test to verify.
    
    fixes #13302
    s1gr1d authored Aug 13, 2024
    Copy the full SHA
    e623782 View commit details
  10. feat(nextjs): Update experimental_captureRequestError to reflect `R…

    …equestInfo.path` change in Next.js canary (#13344)
    lforst authored Aug 13, 2024
    Copy the full SHA
    3871892 View commit details
  11. Copy the full SHA
    043ae7e View commit details
  12. docs(vercel-edge): Update @sentry/vercel-edge readme to remove alph…

    …a status and clarify usage recommendations (#13329)
    lforst authored Aug 13, 2024
    Copy the full SHA
    334f869 View commit details
  13. Copy the full SHA
    6c0f01a View commit details
  14. Copy the full SHA
    fd49d0b View commit details
  15. Copy the full SHA
    3fc12c6 View commit details
  16. Copy the full SHA
    2d4e4f5 View commit details
  17. Merge pull request #13351 from getsentry/prepare-release/8.26.0

    meta: Update Changelog for 8.26.0
    Lms24 authored Aug 13, 2024
    Copy the full SHA
    93fe406 View commit details
  18. release: 8.26.0

    getsentry-bot committed Aug 13, 2024
    Copy the full SHA
    bff9dfd View commit details
Showing with 3,923 additions and 1,417 deletions.
  1. +2 −0 .craft.yml
  2. +25 −6 .github/workflows/build.yml
  3. +4 −4 .size-limit.js
  4. +3 −2 .vscode/settings.json
  5. +54 −0 CHANGELOG.md
  6. +2 −2 dev-packages/browser-integration-tests/package.json
  7. +12 −8 dev-packages/browser-integration-tests/suites/tracing/browserTracingIntegration/interactions/test.ts
  8. +3 −1 ...es/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-disabled/init.js
  9. +1 −0 ...ges/browser-integration-tests/suites/tracing/browserTracingIntegration/long-tasks-enabled/init.js
  10. +17 −0 ...packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/init.js
  11. +17 −0 ...kages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/subject.js
  12. +12 −0 ...es/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/template.html
  13. +455 −0 ...packages/browser-integration-tests/suites/tracing/metrics/web-vitals-cls-standalone-spans/test.ts
  14. +1 −1 dev-packages/bundle-analyzer-scenarios/package.json
  15. +1 −1 dev-packages/e2e-tests/package.json
  16. +29 −0 dev-packages/e2e-tests/test-applications/default-browser/.gitignore
  17. +2 −0 dev-packages/e2e-tests/test-applications/default-browser/.npmrc
  18. +49 −0 dev-packages/e2e-tests/test-applications/default-browser/build.mjs
  19. +41 −0 dev-packages/e2e-tests/test-applications/default-browser/package.json
  20. +7 −0 dev-packages/e2e-tests/test-applications/default-browser/playwright.config.mjs
  21. +23 −0 dev-packages/e2e-tests/test-applications/default-browser/public/index.html
  22. +18 −0 dev-packages/e2e-tests/test-applications/default-browser/src/index.js
  23. +6 −0 dev-packages/e2e-tests/test-applications/default-browser/start-event-proxy.mjs
  24. +58 −0 dev-packages/e2e-tests/test-applications/default-browser/tests/errors.test.ts
  25. +118 −0 dev-packages/e2e-tests/test-applications/default-browser/tests/performance.test.ts
  26. +20 −0 dev-packages/e2e-tests/test-applications/default-browser/tsconfig.json
  27. +1 −1 dev-packages/e2e-tests/test-applications/nextjs-15/package.json
  28. +4 −0 dev-packages/e2e-tests/test-applications/nuxt-3/app.vue
  29. +3 −0 dev-packages/e2e-tests/test-applications/nuxt-3/nuxt.config.ts
  30. +13 −0 dev-packages/e2e-tests/test-applications/nuxt-3/pages/fetch-server-error.vue
  31. +13 −0 dev-packages/e2e-tests/test-applications/nuxt-3/pages/test-param/[param].vue
  32. +5 −0 dev-packages/e2e-tests/test-applications/nuxt-3/server/api/param-error/[param].ts
  33. +5 −0 dev-packages/e2e-tests/test-applications/nuxt-3/server/api/server-error.ts
  34. +7 −0 dev-packages/e2e-tests/test-applications/nuxt-3/server/api/test-param/[param].ts
  35. +3 −0 dev-packages/e2e-tests/test-applications/nuxt-3/server/tsconfig.json
  36. +40 −0 dev-packages/e2e-tests/test-applications/nuxt-3/tests/errors.server.test.ts
  37. +1 −1 dev-packages/external-contributor-gh-action/index.mjs
  38. +1 −1 dev-packages/external-contributor-gh-action/package.json
  39. +0 −8 dev-packages/node-integration-tests/README.md
  40. +2 −2 dev-packages/node-integration-tests/jest.setup.js
  41. +5 −5 dev-packages/node-integration-tests/package.json
  42. +6 −2 dev-packages/node-integration-tests/suites/express/multiple-init/server.ts
  43. +11 −0 dev-packages/node-integration-tests/suites/express/multiple-init/test.ts
  44. +3 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/fixtures/.gitignore
  45. +8 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/fixtures/some-file-promises.txt
  46. +8 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/fixtures/some-file-promisify.txt
  47. +8 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/fixtures/some-file.txt
  48. +137 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/server.ts
  49. +260 −0 dev-packages/node-integration-tests/suites/fs-instrumentation/test.ts
  50. +4 −0 dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts
  51. +2 −2 dev-packages/node-integration-tests/suites/tracing/connect/scenario.js
  52. +0 −2 dev-packages/node-integration-tests/suites/tracing/connect/test.ts
  53. +2 −2 dev-packages/node-integration-tests/suites/tracing/hapi/scenario.js
  54. +0 −2 dev-packages/node-integration-tests/suites/tracing/hapi/test.ts
  55. +32 −0 dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/server.js
  56. +31 −0 dev-packages/node-integration-tests/suites/tracing/meta-tags-twp/test.ts
  57. +0 −2 dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts
  58. +0 −2 dev-packages/node-integration-tests/suites/tracing/mongoose/test.ts
  59. +3 −0 dev-packages/node-integration-tests/suites/tracing/mysql2/test.ts
  60. +2 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/scenario.ts
  61. +0 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/test.ts
  62. +2 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-errors/scenario.ts
  63. +0 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-errors/test.ts
  64. +2 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/scenario.ts
  65. +0 −2 dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/test.ts
  66. +6 −3 dev-packages/node-integration-tests/suites/tracing/nestjs/scenario.ts
  67. +6 −3 dev-packages/node-integration-tests/suites/tracing/nestjs/test.ts
  68. +3 −0 dev-packages/node-integration-tests/suites/tracing/postgres/test.ts
  69. +3 −0 dev-packages/node-integration-tests/suites/tracing/redis-cache/test.ts
  70. +3 −0 dev-packages/node-integration-tests/suites/tracing/redis/test.ts
  71. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/fetch-breadcrumbs/test.ts
  72. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/fetch-no-tracing/test.ts
  73. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/fetch-sampled-no-active-span/test.ts
  74. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/fetch-unsampled/test.ts
  75. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/http-breadcrumbs/test.ts
  76. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/http-no-tracing/test.ts
  77. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/http-sampled-no-active-span/test.ts
  78. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/http-sampled/test.ts
  79. +2 −2 dev-packages/node-integration-tests/suites/tracing/requests/http-unsampled/test.ts
  80. +2 −2 dev-packages/node-integration-tests/suites/tracing/spans/test.ts
  81. +2 −2 dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts
  82. +2 −249 dev-packages/node-integration-tests/utils/index.ts
  83. +23 −7 dev-packages/node-integration-tests/utils/runner.ts
  84. +17 −5 dev-packages/node-integration-tests/utils/server.ts
  85. +1 −1 dev-packages/overhead-metrics/package.json
  86. +1 −1 dev-packages/rollup-utils/package.json
  87. +1 −1 dev-packages/size-limit-gh-action/package.json
  88. +3 −3 dev-packages/test-utils/package.json
  89. +1 −1 lerna.json
  90. +1 −1 package.json
  91. +5 −5 packages/angular/package.json
  92. +6 −6 packages/astro/package.json
  93. +1 −0 packages/astro/src/index.server.ts
  94. +1 −1 packages/astro/src/integration/types.ts
  95. +40 −13 packages/astro/src/server/middleware.ts
  96. +105 −43 packages/astro/test/server/middleware.test.ts
  97. +5 −5 packages/aws-serverless/package.json
  98. +1 −0 packages/aws-serverless/src/index.ts
  99. +4 −4 packages/browser-utils/package.json
  100. +33 −17 packages/browser-utils/src/metrics/browserMetrics.ts
  101. +122 −0 packages/browser-utils/src/metrics/cls.ts
  102. +12 −45 packages/browser-utils/src/metrics/inp.ts
  103. +80 −2 packages/browser-utils/src/metrics/utils.ts
  104. +3 −3 packages/browser-utils/src/metrics/web-vitals/README.md
  105. +9 −9 packages/browser/package.json
  106. +1 −0 packages/browser/src/integrations-bundle/index.debug.ts
  107. +91 −0 packages/browser/src/integrations/spotlight.ts
  108. +1 −1 packages/browser/src/sdk.ts
  109. +12 −5 packages/browser/src/tracing/browserTracingIntegration.ts
  110. +1 −1 packages/browser/test/sdk.test.ts
  111. +6 −6 packages/bun/package.json
  112. +1 −0 packages/bun/src/index.ts
  113. +4 −4 packages/cloudflare/package.json
  114. +3 −3 packages/core/package.json
  115. +4 −0 packages/core/src/asyncContext/types.ts
  116. +9 −1 packages/core/src/baseclient.ts
  117. +1 −1 packages/core/src/index.ts
  118. +1 −1 packages/core/src/integration.ts
  119. +2 −3 packages/core/src/utils/meta.ts
  120. +18 −19 packages/core/src/utils/traceData.ts
  121. +65 −59 packages/core/test/lib/utils/traceData.test.ts
  122. +4 −4 packages/deno/package.json
  123. +5 −5 packages/ember/package.json
  124. +6 −2 packages/ember/tests/helpers/utils.ts
  125. +3 −3 packages/eslint-config-sdk/package.json
  126. +1 −1 packages/eslint-plugin-sdk/package.json
  127. +4 −4 packages/feedback/package.json
  128. +5 −5 packages/gatsby/package.json
  129. +5 −5 packages/google-cloud-serverless/package.json
  130. +1 −0 packages/google-cloud-serverless/src/index.ts
  131. +4 −4 packages/integration-shims/package.json
  132. +5 −5 packages/nestjs/package.json
  133. +8 −8 packages/nextjs/package.json
  134. +4 −7 packages/nextjs/src/client/index.ts
  135. +2 −2 packages/nextjs/src/common/captureRequestError.ts
  136. +12 −3 packages/nextjs/src/common/utils/wrapperUtils.ts
  137. +21 −24 packages/nextjs/src/common/wrapAppGetInitialPropsWithSentry.ts
  138. +3 −2 packages/nextjs/src/common/wrapDocumentGetInitialPropsWithSentry.ts
  139. +19 −23 packages/nextjs/src/common/wrapErrorGetInitialPropsWithSentry.ts
  140. +19 −23 packages/nextjs/src/common/wrapGetInitialPropsWithSentry.ts
  141. +14 −22 packages/nextjs/src/common/wrapGetServerSidePropsWithSentry.ts
  142. +1 −3 packages/nextjs/src/common/wrapGetStaticPropsWithSentry.ts
  143. +1 −0 packages/nextjs/src/config/index.ts
  144. +8 −13 packages/nextjs/test/clientSdk.test.ts
  145. +6 −5 packages/node/package.json
  146. +1 −0 packages/node/src/index.ts
  147. +149 −0 packages/node/src/integrations/fs.ts
  148. +5 −1 packages/node/src/integrations/spotlight.ts
  149. +11 −23 packages/node/src/sdk/index.ts
  150. +8 −8 packages/nuxt/package.json
  151. +2 −2 packages/nuxt/src/client/sdk.ts
  152. +4 −2 packages/nuxt/src/common/types.ts
  153. +2 −0 packages/nuxt/src/module.ts
  154. +11 −2 packages/nuxt/src/runtime/plugins/sentry.server.ts
  155. +4 −13 packages/nuxt/src/runtime/utils.ts
  156. +22 −2 packages/nuxt/src/server/sdk.ts
  157. +17 −48 packages/nuxt/test/runtime/plugins/server.test.ts
  158. +40 −0 packages/nuxt/test/server/sdk.test.ts
  159. +2 −2 packages/opentelemetry/README.md
  160. +4 −4 packages/opentelemetry/package.json
  161. +3 −1 packages/opentelemetry/src/asyncContextStrategy.ts
  162. +22 −0 packages/opentelemetry/src/utils/getTraceData.ts
  163. +15 −3 packages/opentelemetry/src/utils/parseSpanDescription.ts
  164. +19 −0 packages/opentelemetry/test/utils/parseSpanDescription.test.ts
  165. +5 −5 packages/profiling-node/package.json
  166. +5 −5 packages/react/package.json
  167. +7 −7 packages/remix/package.json
  168. +8 −8 packages/remix/src/utils/integrations/opentelemetry.ts
  169. +4 −2 packages/remix/test/integration/test/server/instrumentation-otel/loader.test.ts
  170. +258 −1 packages/remix/test/integration/test/server/utils/helpers.ts
  171. +5 −5 packages/replay-canvas/package.json
  172. +6 −6 packages/replay-internal/package.json
  173. +2 −2 packages/replay-internal/src/coreHandlers/handleGlobalEvent.ts
  174. +2 −2 packages/replay-internal/src/coreHandlers/handleNetworkBreadcrumbs.ts
  175. +5 −5 packages/replay-internal/src/coreHandlers/util/fetchUtils.ts
  176. +5 −4 packages/replay-internal/src/coreHandlers/util/networkUtils.ts
  177. +6 −6 packages/replay-internal/src/coreHandlers/util/xhrUtils.ts
  178. +2 −2 packages/replay-internal/src/eventBuffer/EventBufferCompressionWorker.ts
  179. +3 −4 packages/replay-internal/src/eventBuffer/EventBufferProxy.ts
  180. +3 −5 packages/replay-internal/src/eventBuffer/WorkerHandler.ts
  181. +5 −4 packages/replay-internal/src/eventBuffer/index.ts
  182. +33 −45 packages/replay-internal/src/replay.ts
  183. +4 −3 packages/replay-internal/src/session/fetchSession.ts
  184. +5 −6 packages/replay-internal/src/session/loadOrCreateSession.ts
  185. +4 −7 packages/replay-internal/src/util/addEvent.ts
  186. +4 −7 packages/replay-internal/src/util/handleRecordingEmit.ts
  187. +0 −54 packages/replay-internal/src/util/log.ts
  188. +105 −0 packages/replay-internal/src/util/logger.ts
  189. +3 −2 packages/replay-internal/src/util/sendReplayRequest.ts
  190. +7 −5 packages/replay-internal/test/integration/flush.test.ts
  191. +1 −1 packages/replay-worker/package.json
  192. +5 −5 packages/solid/package.json
  193. +1 −6 packages/solidstart/README.md
  194. +7 −7 packages/solidstart/package.json
  195. +5 −5 packages/svelte/package.json
  196. +8 −8 packages/sveltekit/package.json
  197. +5 −7 packages/sveltekit/src/client/sdk.ts
  198. +42 −182 packages/sveltekit/src/vite/sentryVitePlugins.ts
  199. +1 −5 packages/sveltekit/src/vite/sourceMaps.ts
  200. +220 −0 packages/sveltekit/src/vite/types.ts
  201. +1 −13 packages/sveltekit/test/client/sdk.test.ts
  202. +158 −1 packages/sveltekit/test/vite/sentrySvelteKitPlugins.test.ts
  203. +1 −1 packages/types/package.json
  204. +1 −1 packages/types/src/index.ts
  205. +9 −0 packages/types/src/tracing.ts
  206. +1 −1 packages/typescript/package.json
  207. +2 −2 packages/utils/package.json
  208. +1 −1 packages/utils/src/version.ts
  209. +1 −0 packages/utils/src/worldwide.ts
  210. +8 −48 packages/vercel-edge/README.md
  211. +4 −4 packages/vercel-edge/package.json
  212. +5 −5 packages/vue/package.json
  213. +5 −5 packages/wasm/package.json
  214. +89 −0 yarn.lock
2 changes: 2 additions & 0 deletions .craft.yml
Original file line number Diff line number Diff line change
@@ -206,6 +206,8 @@ targets:
onlyIfPresent: /^sentry-remix-\d.*\.tgz$/
'npm:@sentry/solid':
onlyIfPresent: /^sentry-solid-\d.*\.tgz$/
'npm:@sentry/solidstart':
onlyIfPresent: /^sentry-solidstart-\d.*\.tgz$/
'npm:@sentry/svelte':
onlyIfPresent: /^sentry-svelte-\d.*\.tgz$/
'npm:@sentry/sveltekit':
31 changes: 25 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -96,6 +96,8 @@ jobs:
profiling_node:
- 'packages/profiling-node/**'
- 'dev-packages/e2e-tests/test-applications/node-profiling/**'
any_code:
- '!**/*.md'
- name: Get PR labels
@@ -109,6 +111,8 @@ jobs:
is_release: ${{ startsWith(github.ref, 'refs/heads/release/') }}
changed_profiling_node: ${{ steps.changed.outputs.profiling_node == 'true' }}
changed_ci: ${{ steps.changed.outputs.workflow == 'true' }}
changed_any_code: ${{ steps.changed.outputs.any_code == 'true' }}

# When merging into master, or from master
is_gitflow_sync: ${{ github.head_ref == 'master' || github.ref == 'refs/heads/master' }}
has_gitflow_label:
@@ -123,6 +127,7 @@ jobs:
runs-on: ubuntu-20.04
timeout-minutes: 15
if: |
needs.job_get_metadata.outputs.changed_any_code == 'true' &&
(needs.job_get_metadata.outputs.is_gitflow_sync == 'false' && needs.job_get_metadata.outputs.has_gitflow_label == 'false')
steps:
- name: Check out base commit (${{ github.event.pull_request.base.sha }})
@@ -274,24 +279,37 @@ jobs:

job_check_format:
name: Check file formatting
needs: [job_get_metadata, job_build]
needs: [job_get_metadata]
timeout-minutes: 10
runs-on: ubuntu-20.04
steps:
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
uses: actions/checkout@v4
with:
ref: ${{ env.HEAD_COMMIT }}

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'package.json'

# we use a hash of yarn.lock as our cache key, because if it hasn't changed, our dependencies haven't changed,
# so no need to reinstall them
- name: Compute dependency cache key
id: compute_lockfile_hash
run: echo "hash=${{ hashFiles('yarn.lock', '**/package.json') }}" >> "$GITHUB_OUTPUT"

- name: Check dependency cache
uses: actions/cache/restore@v4
uses: actions/cache@v4
id: cache_dependencies
with:
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
key: ${{ needs.job_build.outputs.dependency_cache_key }}
fail-on-cache-miss: true
key: ${{ steps.compute_lockfile_hash.outputs.hash }}

- name: Install dependencies
if: steps.cache_dependencies.outputs.cache-hit != 'true'
run: yarn install --ignore-engines --frozen-lockfile

- name: Check file formatting
run: yarn lint:prettier && yarn lint:biome

@@ -818,10 +836,10 @@ jobs:
pattern: profiling-node-binaries-${{ github.sha }}-*
path: ${{ github.workspace }}/packages/profiling-node/lib/
merge-multiple: true
# End rebuild profiling

- name: Build Profiling tarball
- name: Build tarballs
run: yarn build:tarball
# End rebuild profiling

- name: Stores tarballs in cache
uses: actions/cache/save@v4
@@ -867,6 +885,7 @@ jobs:
'create-remix-app-express',
'create-remix-app-express-legacy',
'create-remix-app-express-vite-dev',
'default-browser',
'node-express-esm-loader',
'node-express-esm-preload',
'node-express-esm-without-loader',
8 changes: 4 additions & 4 deletions .size-limit.js
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'feedbackIntegration'),
gzip: true,
limit: '90 KB',
limit: '91 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay, Feedback, metrics)',
@@ -143,7 +143,7 @@ module.exports = [
name: 'CDN Bundle (incl. Tracing)',
path: createCDNPath('bundle.tracing.min.js'),
gzip: true,
limit: '37 KB',
limit: '38 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay)',
@@ -170,7 +170,7 @@ module.exports = [
path: createCDNPath('bundle.tracing.min.js'),
gzip: false,
brotli: false,
limit: '110 KB',
limit: '111 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay) - uncompressed',
@@ -193,7 +193,7 @@ module.exports = [
import: createImport('init'),
ignore: ['next/router', 'next/constants'],
gzip: true,
limit: '38 KB',
limit: '39 KB',
},
// SvelteKit SDK (ESM)
{
5 changes: 3 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -36,10 +36,11 @@
],
"deno.enablePaths": ["packages/deno/test"],
"editor.codeActionsOnSave": {
"source.organizeImports.biome": "explicit",
"source.organizeImports.biome": "explicit"
},
"editor.defaultFormatter": "biomejs.biome",
"[typescript]": {
"editor.defaultFormatter": "biomejs.biome"
}
},
"cSpell.words": ["arrayify"]
}
54 changes: 54 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -10,6 +10,60 @@

- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott

## 8.26.0

### Important Changes

- **feat(node): Add `fsInstrumentation` (#13291)**

This release adds `fsIntegration`, an integration that instruments the `fs` API to the Sentry Node SDK. The
integration creates spans with naming patterns of `fs.readFile`, `fs.unlink`, and so on.

This integration is not enabled by default and needs to be registered in your `Sentry.init` call. You can configure
via options whether to include path arguments or error messages as span attributes when an fs call fails:

```js
Sentry.init({
integrations: [
Sentry.fsIntegration({
recordFilePaths: true,
recordErrorMessagesAsSpanAttributes: true,
}),
],
});
```

**WARNING:** This integration may add significant overhead to your application. Especially in scenarios with a lot of
file I/O, like for example when running a framework dev server, including this integration can massively slow down
your application.

### Other Changes

- feat(browser): Add spotlightBrowser integration (#13263)
- feat(browser): Allow sentry in safari extension background page (#13209)
- feat(browser): Send CLS as standalone span (experimental) (#13056)
- feat(core): Add OpenTelemetry-specific `getTraceData` implementation (#13281)
- feat(nextjs): Always add `browserTracingIntegration` (#13324)
- feat(nextjs): Always transmit trace data to the client (#13337)
- feat(nextjs): export SentryBuildOptions (#13296)
- feat(nextjs): Update `experimental_captureRequestError` to reflect `RequestInfo.path` change in Next.js canary
(#13344)

- feat(nuxt): Always add tracing meta tags (#13273)
- feat(nuxt): Set transaction name for server error (#13292)
- feat(replay): Add a replay-specific logger (#13256)
- feat(sveltekit): Add bundle size optimizations to plugin options (#13318)
- feat(sveltekit): Always add browserTracingIntegration (#13322)
- feat(tracing): Make long animation frames opt-out (#13255)
- fix(astro): Correctly extract request data (#13315)
- fix(astro): Only track access request headers in dynamic page requests (#13306)
- fix(nuxt): Add import line for disabled `autoImport` (#13342)
- fix(nuxt): Add vue to excludeEsmLoaderHooks array (#13346)
- fix(opentelemetry): Do not overwrite http span name if kind is internal (#13282)
- fix(remix): Ensure `origin` is correctly set for remix server spans (#13305)

Work in this release was contributed by @MonstraG, @undead-voron and @Zen-cronic. Thank you for your contributions!

## 8.25.0

### Important Changes
4 changes: 2 additions & 2 deletions dev-packages/browser-integration-tests/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@sentry-internal/browser-integration-tests",
"version": "8.25.0",
"version": "8.26.0",
"main": "index.js",
"license": "MIT",
"engines": {
@@ -43,7 +43,7 @@
"@babel/preset-typescript": "^7.16.7",
"@playwright/test": "^1.44.1",
"@sentry-internal/rrweb": "2.11.0",
"@sentry/browser": "8.25.0",
"@sentry/browser": "8.26.0",
"axios": "1.6.7",
"babel-loader": "^8.2.2",
"html-webpack-plugin": "^5.5.0",
Original file line number Diff line number Diff line change
@@ -33,9 +33,11 @@ sentryTest('should capture interaction transaction. @firefox', async ({ browserN
expect(eventData.contexts).toMatchObject({ trace: { op: 'ui.action.click' } });
expect(eventData.platform).toBe('javascript');
expect(eventData.type).toBe('transaction');
expect(eventData.spans).toHaveLength(1);

const interactionSpan = eventData.spans![0];
const spans = eventData.spans?.filter(span => !span.op?.startsWith('ui.long-animation-frame'));
expect(spans).toHaveLength(1);

const interactionSpan = spans![0];
expect(interactionSpan.op).toBe('ui.interaction.click');
expect(interactionSpan.description).toBe('body > button.clicked');
expect(interactionSpan.timestamp).toBeDefined();
@@ -63,7 +65,8 @@ sentryTest(
await page.waitForTimeout(1000);
await page.locator('[data-test-id=interaction-button]').click();
const envelope = await envelopePromise;
expect(envelope[0].spans).toHaveLength(1);
const spans = envelope[0].spans?.filter(span => !span.op?.startsWith('ui.long-animation-frame'));
expect(spans).toHaveLength(1);
}
},
);
@@ -89,10 +92,10 @@ sentryTest(
const envelopes = await envelopePromise;
expect(envelopes).toHaveLength(1);
const eventData = envelopes[0];
const spans = eventData.spans?.filter(span => !span.op?.startsWith('ui.long-animation-frame'));
expect(spans).toHaveLength(1);

expect(eventData.spans).toHaveLength(1);

const interactionSpan = eventData.spans![0];
const interactionSpan = spans![0];
expect(interactionSpan.op).toBe('ui.interaction.click');
expect(interactionSpan.description).toBe('body > AnnotatedButton');
},
@@ -120,9 +123,10 @@ sentryTest(
expect(envelopes).toHaveLength(1);

const eventData = envelopes[0];
expect(eventData.spans).toHaveLength(1);
const spans = eventData.spans?.filter(span => !span.op?.startsWith('ui.long-animation-frame'));
expect(spans).toHaveLength(1);

const interactionSpan = eventData.spans![0];
const interactionSpan = spans![0];
expect(interactionSpan.op).toBe('ui.interaction.click');
expect(interactionSpan.description).toBe('body > StyledButton');
},
Original file line number Diff line number Diff line change
@@ -4,6 +4,8 @@ window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [Sentry.browserTracingIntegration({ enableLongTask: false, idleTimeout: 9000 })],
integrations: [
Sentry.browserTracingIntegration({ enableLongTask: false, enableLongAnimationFrame: false, idleTimeout: 9000 }),
],
tracesSampleRate: 1,
});
Original file line number Diff line number Diff line change
@@ -7,6 +7,7 @@ Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
idleTimeout: 9000,
enableLongAnimationFrame: false,
}),
],
tracesSampleRate: 1,
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [
Sentry.browserTracingIntegration({
idleTimeout: 9000,
_experiments: {
enableStandaloneClsSpans: true,
},
}),
],
tracesSampleRate: 1,
debug: true,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { simulateCLS } from '../../../../utils/web-vitals/cls.ts';

// Simulate Layout shift right at the beginning of the page load, depending on the URL hash
// don't run if expected CLS is NaN
const expectedCLS = Number(location.hash.slice(1));
if (expectedCLS && expectedCLS >= 0) {
simulateCLS(expectedCLS).then(() => window.dispatchEvent(new Event('cls-done')));
}

// Simulate layout shift whenever the trigger-cls event is dispatched
// Cannot trigger cia a button click because expected layout shift after
// an interaction doesn't contribute to CLS.
window.addEventListener('trigger-cls', () => {
simulateCLS(0.1).then(() => {
window.dispatchEvent(new Event('cls-done'));
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<div id="content"></div>
<p>
Some content
</p>
</body>
</html>
Loading