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.13.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.14.0
Choose a head ref

Commits on Jun 27, 2024

  1. ref(bug-template): Add reproduction example step (#12671)

    Additional Changes:
    - Updating the versions to more recent ones.
    - Adding `@sentry/solid`
    
    ---------
    
    Co-authored-by: Francesco Novy <francesco.novy@sentry.io>
    s1gr1d and mydea authored Jun 27, 2024
    Copy the full SHA
    7cc5b4e View commit details
  2. Merge branch 'release/8.13.0'

    getsentry-bot committed Jun 27, 2024
    Copy the full SHA
    c1b9e8f View commit details
  3. Merge pull request #12676 from getsentry/master

    [Gitflow] Merge master into develop
    github-actions[bot] authored Jun 27, 2024
    Copy the full SHA
    831e439 View commit details
  4. Copy the full SHA
    96b3f21 View commit details
  5. Copy the full SHA
    36a15fa View commit details
  6. fix(browser): Make sure measure spans have valid start timestamps (#1…

    …2648)
    
    Co-authored-by: Francesco Novy <francesco.novy@sentry.io>
    AbhiPrasad and mydea authored Jun 27, 2024
    Copy the full SHA
    f91b133 View commit details

Commits on Jun 28, 2024

  1. chore: Remove es-check from deps (#12686)

    ref: #12644
    
    We don't use `es-check` anymore, we can remove it. It was previously
    used to validate our es5 builds, but we don't target that anymore.
    
    Extracted from the previous PR because 1 big change was breaking CI and
    I couldn't figure out the root cause.
    AbhiPrasad authored Jun 28, 2024
    Copy the full SHA
    c7b8503 View commit details
  2. Copy the full SHA
    5eafa40 View commit details
  3. feat(node): Add registerEsmLoaderHooks option (#12684)

    Currently the only way to disable ESM loader hook registration is to
    set:
    ```ts
    globalThis._sentryEsmLoaderHookRegistered = true;
    ```
    
    After this PR, you can set the new `registerEsmLoaderHooks` option to
    `false`:
    ```ts
    import * as Sentry from '@sentry/node';
    
    Sentry.init({
      dsn: '__DSN__', 
      registerEsmLoaderHooks: false,
    });
    ```
    
    ---------
    
    Co-authored-by: Francesco Novy <francesco.novy@sentry.io>
    timfish and mydea authored Jun 28, 2024
    Copy the full SHA
    c548c3c View commit details
  4. chore: Remove replace-in-file and inquirer (#12687)

    ref: #12644
    
    We can remove `replace-in-file` with some built-in functions and clean
    up our lockfile even more.
    
    Extracted from the previous PR because 1 big change was breaking CI and
    I couldn't figure out the root cause.
    AbhiPrasad authored Jun 28, 2024
    Copy the full SHA
    24dfc66 View commit details

Commits on Jul 1, 2024

  1. test: Add OTEL E2E test app using sdk-node (#12690)

    This adds an E2E app using a custom OTEL setup with
    `@opentelemetry/sdk-node`.
    
    It tests that data is sent both to sentry as well as to another OTLP
    exporter. For this, I adjusted the event proxy code to also allow to
    spin up a generic event proxy server (which I use for the OTLP
    exporter). I also rewrote this to use fetch as this is a bit easier to
    read IMHO.
    
    This is a decent first step, we should add at least 2 more E2E test apps
    IMHO related to OTEL:
    
    1. An app using `@opentelemetry/sdk-trace-node` and some more custom
    tracing setup (e.g. more instrumentation, custom sampler, ....)
    2. An app using `@opentelemetry/sdk-trace-node` that does not use Sentry
    for performance at all, but only for errors, and only uses OTEL for
    trace monitoring.
    
    Part of #12494
    mydea authored Jul 1, 2024
    Copy the full SHA
    f4a289d View commit details
  2. feat(nuxt): Configure sentry in external config (#12681)

    To be able to differentiate between a browser/client execution context,
    sentry is initialized in an external config file. An import statement in
    `nuxt-root.vue` is added which loads this config file.
    
    Nuxt tracking issue:
    #9095
    
    ---------
    
    Co-authored-by: Abhijeet Prasad <aprasad@sentry.io>
    s1gr1d and AbhiPrasad authored Jul 1, 2024
    Copy the full SHA
    f60aae5 View commit details
  3. test: Fix tsconfig for browser-integration-tests (#12708)

    Not sure how this worked before, but there was a bunch of stuff that
    conflicted with `noUncheckedIndexedAccess` 🤔
    
    Noticed this locally when running browser integration tests now.
    mydea authored Jul 1, 2024
    Copy the full SHA
    de07108 View commit details
  4. Copy the full SHA
    3d4a3e0 View commit details
  5. feat(nestjs): Filter 4xx errors (#12695)

    Small change filtering expected errors from being reported to sentry in
    the nestjs sdk.
    
    Tested manually on my sample app.
    
    Fixes #12523
    nicohrubec authored Jul 1, 2024
    Copy the full SHA
    0d558de View commit details

Commits on Jul 2, 2024

  1. fix(replay): Start replay in afterAllSetup instead of next tick (#1…

    …2709)
    
    This should hopefully fix some race conditions.
    
    Instead of initializing replay in the next tick, do it in the current
    tick but in `afterAllSetup`, to ensure this runs e.g. after the
    replay-canvas integration.
    
    Fixes #12707
    mydea authored Jul 2, 2024
    Copy the full SHA
    968301a View commit details
  2. ci: Refactor/fix external contribution handling (#12724)

    This should fix the old behavior...
    
    previously, we made a PR against a PR branch when we detected that it
    was opened by an external contributor. This is problematic, turns out,
    because external contributors will usually have a fork of the repo and
    thus the action will fail.
    
    Now, instead, we will make a PR against develop when a contributor PR is
    _merged_.
    
    See example PR:
    #12728
    mydea authored Jul 2, 2024
    Copy the full SHA
    a6e2f77 View commit details
  3. Copy the full SHA
    58af1d7 View commit details
  4. chore: Use npm-run-all2 (#12701)

    https://github.com/mysticatea/npm-run-all is no longer maintained, so
    switching to npm-run-all2.
    
    Eliminates some deps from `yarn.lock` and should be faster!
    AbhiPrasad authored Jul 2, 2024
    Copy the full SHA
    f243167 View commit details
  5. fix(deno): Add prepack for deno build (#12700)

    fixes #12698
    
    Adds back prepack script just for deno which was removed in
    #12656 because it's a
    breaking change for the deno package which relies on the directory
    structure for their import path.
    AbhiPrasad authored Jul 2, 2024
    Copy the full SHA
    840dd8f View commit details
  6. feat(deps): bump @prisma/instrumentation from 5.16.0 to 5.16.1 (#12718)

    Bumps
    [@prisma/instrumentation](https://github.com/prisma/prisma/tree/HEAD/packages/instrumentation)
    from 5.16.0 to 5.16.1.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/prisma/prisma/releases"><code>@​prisma/instrumentation</code>'s
    releases</a>.</em></p>
    <blockquote>
    <h2>5.16.1</h2>
    <p>Today, we are issuing the 5.16.1 patch release to fix an issue in
    Prisma client.</p>
    <h2>Fix in Prisma Client</h2>
    <ul>
    <li><a
    href="https://redirect.github.com/prisma/prisma/issues/24634">dotenv
    loading issue with PrismaClient </a></li>
    <li><a
    href="https://redirect.github.com/prisma/prisma/issues/24658">Prisma
    Seed Script Fails After Upgrading to v5.16.0 (DATABASE_URL
    Error)</a></li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li>See full diff in <a
    href="https://github.com/prisma/prisma/commits/5.16.1/packages/instrumentation">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@prisma/instrumentation&package-manager=npm_and_yarn&previous-version=5.16.0&new-version=5.16.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    Dependabot will merge this PR once CI passes on it, as requested by
    @AbhiPrasad.
    
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jul 2, 2024
    Copy the full SHA
    eec98a3 View commit details
  7. fix(remix): add esm export for node (#12663)

    We are running remix in ESM mode, but the exports in package.json is
    pointing to the CommonJS module, which results in the SDK running in
    CommonJS mode instead of ESM.
    
    This lead to the instrumentations not running/detecting properly.
    topaxi authored Jul 2, 2024
    Copy the full SHA
    747e236 View commit details
  8. Copy the full SHA
    11aea16 View commit details
  9. ci(deps): bump oven-sh/setup-bun from 1 to 2

    Bumps [oven-sh/setup-bun](https://github.com/oven-sh/setup-bun) from 1 to 2.
    - [Release notes](https://github.com/oven-sh/setup-bun/releases)
    - [Commits](oven-sh/setup-bun@v1...v2)
    
    ---
    updated-dependencies:
    - dependency-name: oven-sh/setup-bun
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] committed Jul 2, 2024
    Copy the full SHA
    bd484cf View commit details
  10. Copy the full SHA
    8c655e4 View commit details

Commits on Jul 3, 2024

  1. build: Bump yarn to 1.22.22 and pnpm to 9.4.0 (#12731)

    This is just used internally, but we may as well be up to date there.
    mydea authored Jul 3, 2024
    Copy the full SHA
    0c1e877 View commit details
  2. feat(opentelemetry): Expose sampling helper (#12674)

    When users want to use a custom sampler, they can use these new helpers
    to still have sentry working nicely with whatever they decide to do in
    there.
    
    For e.g. trace propagation etc. to work correctly with Sentry, we need
    to attach some things to trace state etc. These helpers encapsulate this
    for the user, while still allowing them to decide however they want if
    the span should be sampled or not.
    
    This was brought up here:
    #12191 (reply in thread)
    mydea authored Jul 3, 2024
    Copy the full SHA
    d5bba58 View commit details
  3. Copy the full SHA
    a8c4db8 View commit details
  4. Copy the full SHA
    071adae View commit details
  5. Copy the full SHA
    13ff71f View commit details

Commits on Jul 4, 2024

  1. Copy the full SHA
    8fe0682 View commit details
  2. Add external contributor

    nicohrubec committed Jul 4, 2024
    Copy the full SHA
    869a0d2 View commit details
  3. Merge pull request #12749 from getsentry/prepare-release/8.14.0

    meta(changelog): Update changelog for 8.14.0
    nicohrubec authored Jul 4, 2024
    Copy the full SHA
    eef19e7 View commit details
  4. release: 8.14.0

    getsentry-bot committed Jul 4, 2024
    Copy the full SHA
    3692a52 View commit details
Showing with 3,357 additions and 988 deletions.
  1. +8 −4 .github/ISSUE_TEMPLATE/bug.yml
  2. +4 −40 .github/workflows/build.yml
  3. +44 −0 .github/workflows/external-contributors.yml
  4. +27 −0 CHANGELOG.md
  5. +4 −1 dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/replay/test.ts
  6. +1 −0 dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/replayError/subject.js
  7. +35 −0 dev-packages/browser-integration-tests/loader-suites/loader/noOnLoad/replayError/test.ts
  8. +2 −0 dev-packages/browser-integration-tests/loader-suites/loader/onLoad/customReplay/init.js
  9. +3 −1 dev-packages/browser-integration-tests/loader-suites/loader/onLoad/replay/init.js
  10. +3 −2 dev-packages/browser-integration-tests/package.json
  11. 0 dev-packages/browser-integration-tests/suites/replay/{bufferMode → bufferModeManual}/init.js
  12. 0 dev-packages/browser-integration-tests/suites/replay/{bufferMode → bufferModeManual}/subject.js
  13. 0 dev-packages/browser-integration-tests/suites/replay/{bufferMode → bufferModeManual}/template.html
  14. 0 dev-packages/browser-integration-tests/suites/replay/{bufferMode → bufferModeManual}/test.ts
  15. +1 −0 dev-packages/browser-integration-tests/suites/replay/errors/immediateError/subject.js
  16. +38 −0 dev-packages/browser-integration-tests/suites/replay/errors/immediateError/test.ts
  17. +21 −0 dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-measure-spans/init.js
  18. +35 −0 dev-packages/browser-integration-tests/suites/tracing/metrics/pageload-measure-spans/test.ts
  19. +2 −1 dev-packages/browser-integration-tests/tsconfig.json
  20. +37 −26 dev-packages/browser-integration-tests/utils/generatePlugin.ts
  21. +16 −4 dev-packages/browser-integration-tests/utils/helpers.ts
  22. +4 −5 dev-packages/bundle-analyzer-scenarios/package.json
  23. +20 −15 dev-packages/bundle-analyzer-scenarios/webpack.cjs
  24. +2 −2 dev-packages/e2e-tests/package.json
  25. +5 −0 dev-packages/e2e-tests/test-applications/nestjs/src/app.controller.ts
  26. +5 −1 dev-packages/e2e-tests/test-applications/nestjs/src/app.service.ts
  27. +26 −1 dev-packages/e2e-tests/test-applications/nestjs/tests/errors.test.ts
  28. +1 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/.gitignore
  29. +2 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/.npmrc
  30. +32 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/package.json
  31. +34 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/playwright.config.mjs
  32. +53 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/src/app.ts
  33. +35 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/src/instrument.ts
  34. +6 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/start-event-proxy.mjs
  35. +6 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/start-otel-proxy.mjs
  36. +29 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/tests/errors.test.ts
  37. +213 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/tests/transactions.test.ts
  38. +10 −0 dev-packages/e2e-tests/test-applications/node-otel-sdk-node/tsconfig.json
  39. +1 −1 dev-packages/e2e-tests/test-applications/vue-3/package.json
  40. +6 −0 dev-packages/e2e-tests/verdaccio-config/config.yaml
  41. +1 −1 dev-packages/external-contributor-gh-action/package.json
  42. +3 −3 dev-packages/node-integration-tests/package.json
  43. +1 −1 dev-packages/overhead-metrics/package.json
  44. +6 −2 dev-packages/rollup-utils/npmHelpers.mjs
  45. +1 −1 dev-packages/rollup-utils/package.json
  46. +15 −0 dev-packages/rollup-utils/plugins/make-esm-plugin.mjs
  47. +0 −1 dev-packages/rollup-utils/plugins/npmPlugins.mjs
  48. +1 −1 dev-packages/size-limit-gh-action/package.json
  49. +3 −3 dev-packages/test-utils/package.json
  50. +146 −98 dev-packages/test-utils/src/event-proxy-server.ts
  51. +2 −0 dev-packages/test-utils/src/index.ts
  52. +1 −1 lerna.json
  53. +11 −6 package.json
  54. +5 −5 packages/angular/package.json
  55. +6 −6 packages/astro/package.json
  56. +5 −5 packages/aws-serverless/package.json
  57. +4 −4 packages/browser-utils/package.json
  58. +39 −27 packages/browser-utils/src/metrics/browserMetrics.ts
  59. +9 −9 packages/browser/package.json
  60. +6 −6 packages/bun/package.json
  61. +3 −3 packages/core/package.json
  62. +7 −7 packages/deno/package.json
  63. +111 −0 packages/deno/scripts/prepack.js
  64. +5 −5 packages/ember/package.json
  65. +3 −3 packages/eslint-config-sdk/package.json
  66. +1 −1 packages/eslint-plugin-sdk/package.json
  67. +4 −4 packages/feedback/package.json
  68. +5 −5 packages/gatsby/package.json
  69. +5 −5 packages/google-cloud-serverless/package.json
  70. +4 −4 packages/integration-shims/package.json
  71. +3 −3 packages/nestjs/package.json
  72. +8 −8 packages/nextjs/package.json
  73. +17 −1 packages/nextjs/src/config/types.ts
  74. +22 −4 packages/nextjs/src/config/webpack.ts
  75. +6 −6 packages/node/package.json
  76. +2 −2 packages/node/src/integrations/tracing/hapi/index.ts
  77. +4 −57 packages/node/src/integrations/tracing/hapi/types.ts
  78. +7 −0 packages/node/src/integrations/tracing/nest.ts
  79. +1 −1 packages/node/src/sdk/index.ts
  80. +10 −0 packages/node/src/types.ts
  81. +17 −11 packages/nuxt/README.md
  82. +34 −18 packages/nuxt/package.json
  83. +7 −0 packages/nuxt/rollup.npm.config.mjs
  84. +4 −4 packages/nuxt/src/client/sdk.ts
  85. +8 −0 packages/nuxt/src/common/debug-build.ts
  86. +47 −0 packages/nuxt/src/common/snippets.ts
  87. +2 −1 packages/nuxt/src/common/types.ts
  88. +1 −1 packages/nuxt/src/index.types.ts
  89. +32 −6 packages/nuxt/src/module.ts
  90. +8 −7 packages/nuxt/src/runtime/plugins/sentry.client.ts
  91. +2 −2 packages/nuxt/test/client/sdk.test.ts
  92. +98 −0 packages/nuxt/test/common/snippets.test.ts
  93. +4 −4 packages/opentelemetry/package.json
  94. +4 −1 packages/opentelemetry/src/index.ts
  95. +48 −19 packages/opentelemetry/src/sampler.ts
  96. +5 −5 packages/profiling-node/package.json
  97. +5 −5 packages/react/package.json
  98. +2 −1 packages/react/src/reactrouter.tsx
  99. +2 −1 packages/react/src/types.ts
  100. +7 −7 packages/remix/package.json
  101. +5 −5 packages/replay-canvas/package.json
  102. +6 −6 packages/replay-internal/package.json
  103. +13 −37 packages/replay-internal/src/integration.ts
  104. +3 −2 packages/replay-internal/test/integration/coreHandlers/handleGlobalEvent.test.ts
  105. +3 −3 packages/replay-internal/test/integration/errorSampleRate.test.ts
  106. +2 −2 packages/replay-internal/test/integration/sampling.test.ts
  107. +7 −11 packages/replay-internal/test/mocks/mockSdk.ts
  108. +3 −2 packages/replay-internal/test/utils/TestClient.ts
  109. +1 −1 packages/replay-worker/package.json
  110. +1 −1 packages/solid/README.md
  111. +6 −6 packages/solid/package.json
  112. +7 −3 packages/solid/test/errorboundary.test.tsx
  113. +1 −1 packages/solid/test/sdk.test.ts
  114. +4 −0 packages/solidstart/.eslintignore
  115. +21 −0 packages/solidstart/.eslintrc.js
  116. +5 −0 packages/solidstart/.gitignore
  117. +21 −0 packages/solidstart/LICENSE
  118. +131 −0 packages/solidstart/README.md
  119. +122 −0 packages/solidstart/package.json
  120. +25 −0 packages/solidstart/rollup.npm.config.mjs
  121. +3 −0 packages/solidstart/src/client/index.ts
  122. +21 −0 packages/solidstart/src/client/sdk.ts
  123. +1 −0 packages/solidstart/src/client/solidrouter.ts
  124. +8 −0 packages/solidstart/src/common/debug-build.ts
  125. +1 −0 packages/solidstart/src/index.client.ts
  126. +1 −0 packages/solidstart/src/index.server.ts
  127. +29 −0 packages/solidstart/src/index.types.ts
  128. +128 −0 packages/solidstart/src/server/index.ts
  129. +20 −0 packages/solidstart/src/server/sdk.ts
  130. +43 −0 packages/solidstart/src/server/solidrouter.ts
  131. +1 −0 packages/solidstart/src/solidrouter.client.ts
  132. +1 −0 packages/solidstart/src/solidrouter.server.ts
  133. +10 −0 packages/solidstart/src/solidrouter.ts
  134. +112 −0 packages/solidstart/test/client/errorboundary.test.tsx
  135. +42 −0 packages/solidstart/test/client/sdk.test.ts
  136. +198 −0 packages/solidstart/test/client/solidrouter.test.tsx
  137. +112 −0 packages/solidstart/test/server/errorboundary.test.tsx
  138. +42 −0 packages/solidstart/test/server/sdk.test.ts
  139. +32 −0 packages/solidstart/test/server/solidrouter.test.tsx
  140. +3 −0 packages/solidstart/test/tsconfig.json
  141. +7 −0 packages/solidstart/tsconfig.json
  142. +21 −0 packages/solidstart/tsconfig.solidrouter-types.json
  143. +14 −0 packages/solidstart/tsconfig.test.json
  144. +19 −0 packages/solidstart/tsconfig.types.json
  145. +14 −0 packages/solidstart/vite.config.ts
  146. +5 −5 packages/svelte/package.json
  147. +7 −7 packages/sveltekit/package.json
  148. +1 −1 packages/types/package.json
  149. +1 −1 packages/typescript/package.json
  150. +2 −2 packages/utils/package.json
  151. +1 −1 packages/utils/src/version.ts
  152. +4 −4 packages/vercel-edge/package.json
  153. +5 −5 packages/vue/package.json
  154. +5 −5 packages/wasm/package.json
  155. +8 −1 scripts/node-unit-tests.ts
  156. +27 −17 scripts/versionbump.js
  157. +420 −363 yarn.lock
12 changes: 8 additions & 4 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -39,10 +39,12 @@ body:
- '@sentry/ember'
- '@sentry/gatsby'
- '@sentry/google-cloud-serverless'
- '@sentry/nestjs'
- '@sentry/nextjs'
- '@sentry/node'
- '@sentry/react'
- '@sentry/remix'
- '@sentry/solid'
- '@sentry/svelte'
- '@sentry/sveltekit'
- '@sentry/vue'
@@ -56,7 +58,7 @@ body:
attributes:
label: SDK Version
description: What version of the SDK are you using?
placeholder: ex. 7.8.0
placeholder: ex. 8.10.0
validations:
required: true
- type: input
@@ -66,7 +68,7 @@ body:
description:
If you're using one of our framework-specific SDKs (`@sentry/react`, for example), what version of the
_framework_ are you using?
placeholder: ex. React 17.0.0
placeholder: ex. React 18.3.0 or Next 14.0.0
- type: input
id: link-to-sentry
attributes:
@@ -78,8 +80,10 @@ body:
- type: textarea
id: sdk-setup
attributes:
label: SDK Setup
description: How do you set up your Sentry SDK? Please show us your `Sentry.init` options.
label: SDK Setup/Reproduction Example
description:
How do you set up your Sentry SDK? Please show us your `Sentry.init` code.
Or even better—share a link to a reproduction example.
placeholder: |-
```javascript
Sentry.init({
44 changes: 4 additions & 40 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -229,44 +229,6 @@ jobs:
message: |
⚠️ This PR is opened against **master**. You probably want to open it against **develop**.
job_external_contributor:
name: External Contributors
needs: job_install_deps
runs-on: ubuntu-20.04
if: |
github.event_name == 'pull_request'
&& (github.event.action == 'opened' || github.event.action == 'reopened')
&& github.event.pull_request.author_association != 'COLLABORATOR'
&& github.event.pull_request.author_association != 'MEMBER'
&& github.event.pull_request.author_association != 'OWNER'
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
- name: Check dependency cache
uses: actions/cache/restore@v4
with:
path: ${{ env.CACHED_DEPENDENCY_PATHS }}
key: ${{ needs.job_install_deps.outputs.dependency_cache_key }}
fail-on-cache-miss: true

- name: Add external contributor to CHANGELOG.md
uses: ./dev-packages/external-contributor-gh-action
with:
name: ${{ github.event.pull_request.user.login }}
- name: Create PR with changes
uses: peter-evans/create-pull-request@v6
with:
commit-message: "ref: Add external contributor to CHANGELOG.md"
title: "ref: Add external contributor to CHANGELOG.md"
branch: 'external-contributor/patch-${{ github.event.pull_request.user.login }}'
delete-branch: true
body: This PR adds the external contributor to the CHANGELOG.md file, so that they are credited for their contribution.

job_build:
name: Build
needs: [job_get_metadata, job_install_deps]
@@ -502,7 +464,7 @@ jobs:
with:
node-version-file: 'package.json'
- name: Set up Bun
uses: oven-sh/setup-bun@v1
uses: oven-sh/setup-bun@v2
- name: Restore caches
uses: ./.github/actions/restore-cache
env:
@@ -761,6 +723,7 @@ jobs:
- loader_debug
- loader_tracing
- loader_replay
- loader_replay_buffer
- loader_tracing_replay

steps:
@@ -1050,6 +1013,7 @@ jobs:
'node-express-esm-preload',
'node-express-esm-without-loader',
'node-express-cjs-preload',
'node-otel-sdk-node',
'nextjs-app-dir',
'nextjs-14',
'nextjs-15',
@@ -1112,7 +1076,7 @@ jobs:
node-version-file: 'dev-packages/e2e-tests/package.json'
- name: Set up Bun
if: matrix.test-application == 'node-exports-test-app'
uses: oven-sh/setup-bun@v1
uses: oven-sh/setup-bun@v2
- name: Restore caches
uses: ./.github/actions/restore-cache
env:
44 changes: 44 additions & 0 deletions .github/workflows/external-contributors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "CI: Mention external contributors"
on:
pull_request:
types:
- closed
branches:
- develop

jobs:
external_contributor:
name: External Contributors
runs-on: ubuntu-20.04
if: |
github.event.pull_request.author_association != 'COLLABORATOR'
&& github.event.pull_request.author_association != 'MEMBER'
&& github.event.pull_request.author_association != 'OWNER'
&& github.actor != 'dependabot[bot]'
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
cache: 'yarn'

- name: Install dependencies
run: yarn install --frozen-lockfile

- name: Add external contributor to CHANGELOG.md
uses: ./dev-packages/external-contributor-gh-action
with:
name: ${{ github.event.pull_request.user.login }}
- name: Create PR with changes
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
commit-message: "ref: Add external contributor to CHANGELOG.md"
title: "ref: Add external contributor to CHANGELOG.md"
branch: 'external-contributor/patch-${{ github.event.pull_request.user.login }}'
base: 'develop'
delete-branch: true
body: This PR adds the external contributor to the CHANGELOG.md file, so that they are credited for their contribution.

27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,36 @@
# Changelog

> [!IMPORTANT]
> If you are upgrading to the `8.x` versions of the SDK from `7.x` or below, make sure you follow our
> [migration guide](https://docs.sentry.io/platforms/javascript/migration/) first.
## Unreleased

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

## 8.14.0

### Important Changes

- **feat(nestjs): Filter 4xx errors (#12695)**

The `@sentry/nestjs` SDK no longer captures 4xx errors automatically.

### Other Changes

- chore(react): Remove private namespace `JSX` (#12691)
- feat(deps): bump @opentelemetry/propagator-aws-xray from 1.25.0 to 1.25.1 (#12719)
- feat(deps): bump @prisma/instrumentation from 5.16.0 to 5.16.1 (#12718)
- feat(node): Add `registerEsmLoaderHooks` option (#12684)
- feat(opentelemetry): Expose sampling helper (#12674)
- fix(browser): Make sure measure spans have valid start timestamps (#12648)
- fix(hapi): Widen type definitions (#12710)
- fix(nextjs): Attempt to ignore critical dependency warnings (#12694)
- fix(react): Fix React jsx runtime import for esm (#12740)
- fix(replay): Start replay in `afterAllSetup` instead of next tick (#12709)

Work in this release was contributed by @quisido. Thank you for your contribution!

## 8.13.0

### Important Changes
Original file line number Diff line number Diff line change
@@ -3,8 +3,11 @@ import { expect } from '@playwright/test';
import { sentryTest } from '../../../../utils/fixtures';
import { getReplayEvent, shouldSkipReplayTest, waitForReplayRequest } from '../../../../utils/replayHelpers';

const bundle = process.env.PW_BUNDLE || '';

sentryTest('should capture a replay', async ({ getLocalTestUrl, page }) => {
if (shouldSkipReplayTest()) {
// When in buffer mode, there will not be a replay by default
if (shouldSkipReplayTest() || bundle === 'loader_replay_buffer') {
sentryTest.skip();
}

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
window.doSomethingWrong();
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';
import { getReplayEvent, shouldSkipReplayTest, waitForReplayRequest } from '../../../../utils/replayHelpers';

sentryTest('should capture a replay & attach an error', async ({ getLocalTestUrl, page }) => {
if (shouldSkipReplayTest()) {
sentryTest.skip();
}

await page.route('https://dsn.ingest.sentry.io/**/*', route => {
return route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ id: 'test-id' }),
});
});

const req = waitForReplayRequest(page);

const url = await getLocalTestUrl({ testDir: __dirname });
const reqError = await waitForErrorRequestOnUrl(page, url);

const errorEventData = envelopeRequestParser(reqError);
expect(errorEventData.exception?.values?.length).toBe(1);
expect(errorEventData.exception?.values?.[0]?.value).toContain('window.doSomethingWrong is not a function');

const eventData = getReplayEvent(await req);

expect(eventData).toBeDefined();
expect(eventData.segment_id).toBe(0);

expect(errorEventData.tags?.replayId).toEqual(eventData.replay_id);
});
Original file line number Diff line number Diff line change
@@ -6,5 +6,7 @@ Sentry.onLoad(function () {
useCompression: false,
}),
],

replaysSessionSampleRate: 1,
});
});
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Sentry.onLoad(function () {
Sentry.init({});
Sentry.init({
replaysSessionSampleRate: 1,
});
});
5 changes: 3 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.13.0",
"version": "8.14.0",
"main": "index.js",
"license": "MIT",
"engines": {
@@ -32,6 +32,7 @@
"test:loader:eager": "PW_BUNDLE=loader_eager yarn test:loader",
"test:loader:tracing": "PW_BUNDLE=loader_tracing yarn test:loader",
"test:loader:replay": "PW_BUNDLE=loader_replay yarn test:loader",
"test:loader:replay_buffer": "PW_BUNDLE=loader_replay_buffer yarn test:loader",
"test:loader:full": "PW_BUNDLE=loader_tracing_replay yarn test:loader",
"test:loader:debug": "PW_BUNDLE=loader_debug yarn test:loader",
"test:ci": "yarn test:all --reporter='line'",
@@ -42,7 +43,7 @@
"@babel/preset-typescript": "^7.16.7",
"@playwright/test": "^1.44.1",
"@sentry-internal/rrweb": "2.11.0",
"@sentry/browser": "8.13.0",
"@sentry/browser": "8.14.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
@@ -0,0 +1 @@
window.doSomethingWrong();
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';
import { getReplayEvent, shouldSkipReplayTest, waitForReplayRequest } from '../../../../utils/replayHelpers';

sentryTest(
'[error-mode] should capture error that happens immediately after init',
async ({ getLocalTestUrl, page }) => {
if (shouldSkipReplayTest()) {
sentryTest.skip();
}

await page.route('https://dsn.ingest.sentry.io/**/*', route => {
return route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ id: 'test-id' }),
});
});

const req = waitForReplayRequest(page);

const url = await getLocalTestUrl({ testDir: __dirname });
const reqError = await waitForErrorRequestOnUrl(page, url);

const errorEventData = envelopeRequestParser(reqError);
expect(errorEventData.exception?.values?.length).toBe(1);
expect(errorEventData.exception?.values?.[0]?.value).toContain('window.doSomethingWrong is not a function');

const eventData = getReplayEvent(await req);

expect(eventData).toBeDefined();
expect(eventData.segment_id).toBe(0);

expect(errorEventData.tags?.replayId).toEqual(eventData.replay_id);
},
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Add measure before SDK initializes
const end = performance.now();
performance.measure('Next.js-before-hydration', {
duration: 1000,
end,
});

import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
debug: true,
dsn: 'https://public@dsn.ingest.sentry.io/1337',
integrations: [
Sentry.browserTracingIntegration({
idleTimeout: 9000,
}),
],
tracesSampleRate: 1,
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { expect } from '@playwright/test';
import type { Event } from '@sentry/types';

import { sentryTest } from '../../../../utils/fixtures';
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';

// Validation test for https://github.com/getsentry/sentry-javascript/issues/12281
sentryTest('should add browser-related spans to pageload transaction', async ({ getLocalTestPath, page }) => {
if (shouldSkipTracingTest()) {
sentryTest.skip();
}

const url = await getLocalTestPath({ testDir: __dirname });

const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
const browserSpans = eventData.spans?.filter(({ op }) => op === 'browser');

// Spans `domContentLoadedEvent`, `connect`, `cache` and `DNS` are not
// always inside `pageload` transaction.
expect(browserSpans?.length).toBeGreaterThanOrEqual(4);

const requestSpan = browserSpans!.find(({ description }) => description === 'request');
expect(requestSpan).toBeDefined();

const measureSpan = eventData.spans?.find(({ op }) => op === 'measure');
expect(measureSpan).toBeDefined();

expect(requestSpan!.start_timestamp).toBeLessThanOrEqual(measureSpan!.start_timestamp);
expect(measureSpan?.data).toEqual({
'sentry.browser.measure_happened_before_request': true,
'sentry.browser.measure_start_time': expect.any(Number),
'sentry.op': 'measure',
'sentry.origin': 'auto.resource.browser.metrics',
});
});
Loading