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: 9.8.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: 9.9.0
Choose a head ref
  • 19 commits
  • 123 files changed
  • 9 contributors

Commits on Mar 21, 2025

  1. ref: Avoid some usage of dropUndefinedKeys() (#15757)

    This gets rid of some unnecessary invocations of `dropUndefinedKeys()`
    that we have.
    mydea authored Mar 21, 2025

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    267ebe0 View commit details
  2. Merge branch 'release/9.8.0'

    getsentry-bot committed Mar 21, 2025
    Copy the full SHA
    fb4810c View commit details
  3. feat(browser): Add previous_trace span links (#15569)

    This PR adds logic to set the `previous_trace ` span link on root spans
    (via `browserTracingIntegration`).
    
    - added `linkPreviousTrace` integration option to control the trace
    linking behaviour:
    - everything is implemented within `browserTracingIntegration`, meaning
    there's no bundle size hit for error-only users or users who only send
    manual spans (the latter is a tradeoff but I think it's a fair one)
    - added unit and integration tests for a bunch of scenarios
    
    closes #14992
    
    UPDATE: I rewrote the public API options from having two options
    (`enablePreviousTrace` and `persistPreviousTrace`) to only one which
    controls both aspects.
    Lms24 authored Mar 21, 2025
    Copy the full SHA
    1a4fa0c View commit details
  4. Merge pull request #15778 from getsentry/master

    [Gitflow] Merge master into develop
    github-actions[bot] authored Mar 21, 2025
    Copy the full SHA
    79a3384 View commit details
  5. test(e2e): Fix failing nextjs-t3 e2e test app (#15785)

    trpc/trpc#6617 removed an unstable API we used
    in the app. I just switched it over to use the stable replacement
    Lms24 authored Mar 21, 2025
    Copy the full SHA
    0c21efa View commit details
  6. fix(browser): Fix incorrect previous trace max duration (#15782)

    Lms24 authored Mar 21, 2025
    Copy the full SHA
    e242c17 View commit details
  7. feat(nextjs): Support instrumentation-client.ts (#15705)

    lforst authored Mar 21, 2025
    Copy the full SHA
    67db14b View commit details
  8. feat(core): Optimize dropUndefinedKeys (#15760)

    Updates the implementation of `dropUndefinedKeys`:
    - added early returns
    - used for loops in case of larger data structures
    - handle array case before object case to avoid calls to `isPojo`
    - simplified `isPojo` by checking
    [Object.prototype.constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor#description)
    
    
    ref #15725
    chargome authored Mar 21, 2025
    Copy the full SHA
    ab16123 View commit details
  9. perf(nestjs): Remove usage of addNonEnumerableProperty (#15766)

    ref
    #15725 (comment)
    
    Similar to the work done in
    #15765 we can avoid
    usage of `addNonEnumerableProperty` with usage of a `WeakSet`.
    AbhiPrasad authored Mar 21, 2025
    Copy the full SHA
    75f7b93 View commit details
  10. feat(browser): Add logger.X methods to browser SDK (#15763)

    ref #15526
    
    Continuing off the work from
    #15717, this PR adds
    the logging public API to the Browser SDK. It also adds a basic flushing
    strategy to the SDK that is timeout based. This is done to help save
    bundle size.
    
    The main file added was `log.ts`. This has three areas to look at:
    
    1. The logger methods for `trace`, `debug`, `info`, `warn`, `error`,
    `fatal` (the log severity levels) as well as an internal capture log
    helper all these methods call.
    2. `addFlushingListeners` which adds listeners to flush the logs buffer
    on client flush and document visibility hidden.
    3. a flush timeout that flushes logs after X seconds, which gets
    restarted when new logs are captured.
    
    I also removed any logs logic from the `BrowserClient`, which should
    ensure this stays as bundle size efficient as possible.
    
    Usage:
    
    ```js
    import * as Sentry from "@sentry/browser";
    
    Sentry.init({
      dsn: "your-dsn-here",
      _experiments: {
        enableLogs: true  // This is required to use the logging features
      }
    });
    
    // Trace level (lowest severity)
    Sentry.logger.trace("This is a trace message", { userId: 123 });
    
    // Debug level
    Sentry.logger.debug("This is a debug message", { component: "UserProfile" });
    
    // Info level
    Sentry.logger.info("User logged in successfully", { userId: 123 });
    
    // Warning level
    Sentry.logger.warn("API response was slow", { responseTime: 2500 });
    
    // Error level
    Sentry.logger.error("Failed to load user data", { userId: 123, errorCode: 404 });
    
    // Critical level
    Sentry.logger.critical("Database connection failed", { dbHost: "primary-db" });
    
    // Fatal level (highest severity)
    Sentry.logger.fatal("Application is shutting down unexpectedly", { memory: "exhausted" });
    ```
    AbhiPrasad authored Mar 21, 2025
    Copy the full SHA
    e55b8ee View commit details
  11. feat(core): Add parseStringToURL method (#15768)

    Now that we support ES2020 (aka not IE11 anymore) and Node.js 18+, we
    can get rid of `parseUrl` in favor of a method that just uses the
    built-in URL object. This will save us some bundle size (given we can
    remove that regex), and we get performance benefits from using native
    code.
    
    Instead of just blanket replacing `parseUrl`, we'll slowly convert all
    it's usages to using a new helper, `parseStringToURL`.
    
    Given we are updating the core package, I also went ahead and converted
    `parseUrl` usage in `packages/core/src/fetch.ts`
    AbhiPrasad authored Mar 21, 2025
    Copy the full SHA
    ba5993c View commit details

Commits on Mar 22, 2025

  1. feat(node): Add fastify shouldHandleError (#15771)

    Supercedes #13198
    
    resolves #13197
    
    Aligns fastify error handler with the express one.
    
    1. Adds `shouldHandleError` to allow users to configure if errors should
    be captured
    2. Makes sure the default `shouldHandleError` does not capture errors
    for 4xx and 3xx status codes.
    
    ## Usage
    
    ```js
    setupFastifyErrorHandler(app, {
      shouldHandleError(_error, _request, reply) {
        return statusCode >= 500 || statusCode <= 399;
      },
    });
    ```
    AbhiPrasad authored Mar 22, 2025
    Copy the full SHA
    50d2514 View commit details

Commits on Mar 24, 2025

  1. ref: Remove some usages of dropUndefinedKeys() (#15781)

    In some places this should not really be needed, so we can skip this.
    mydea authored Mar 24, 2025
    Copy the full SHA
    57f04e0 View commit details
  2. ref(nextjs): Fix Next.js vercel-edge runtime package information (#15789

    )
    
    Noticed this was "incorrect" here, for all other places it seems
    correct.
    mydea authored Mar 24, 2025
    Copy the full SHA
    006479c View commit details
  3. fix(nuxt): Delete no longer needed Nitro 'close' hook (#15790)

    Due to PR #15710 the
    Sentry server config is only processed inside the Nitro-part of Nuxt and
    the server config file is emitted through the Rollup plugin.
    
    It is not needed anymore to copy-paste the file manually (this has been
    the case before as the file was added to the `.nuxt` folder - as it was
    processed by Nuxt, not Nitro-only).
    
    This fixes the "no such file" error [posted in this
    comment](#13330 (comment)).
    
    closes #13330
    s1gr1d authored Mar 24, 2025
    Copy the full SHA
    79ff8f2 View commit details
  4. feat(browser): Attach host as part of error message to "Failed to fet…

    …ch" errors (#15729)
    
    Closes #15709
    
    This also adds tests for the various types of TypeErrors that fetch can
    produce.
    mydea authored Mar 24, 2025
    Copy the full SHA
    0cf8ec2 View commit details
  5. meta: Update changelog for 9.9.0

    swap ordering
    Lms24 committed Mar 24, 2025
    Copy the full SHA
    bb358cf View commit details
  6. Merge pull request #15791 from getsentry/prepare-release/9.9.0

    meta: Update changelog for 9.9.0
    Lms24 authored Mar 24, 2025
    Copy the full SHA
    80e19f2 View commit details
  7. release: 9.9.0

    getsentry-bot committed Mar 24, 2025
    Copy the full SHA
    43c4c83 View commit details
Showing with 2,496 additions and 409 deletions.
  1. +2 −2 .size-limit.js
  2. +60 −0 CHANGELOG.md
  3. +2 −2 dev-packages/browser-integration-tests/package.json
  4. +13 −0 dev-packages/browser-integration-tests/suites/errors/fetch/init.js
  5. +45 −0 dev-packages/browser-integration-tests/suites/errors/fetch/subject.js
  6. +288 −0 dev-packages/browser-integration-tests/suites/errors/fetch/test.ts
  7. +15 −0 ...ation-tests/suites/tracing/browserTracingIntegration/previous-trace-links/custom-trace/subject.js
  8. +9 −0 ...on-tests/suites/tracing/browserTracingIntegration/previous-trace-links/custom-trace/template.html
  9. +63 −0 ...egration-tests/suites/tracing/browserTracingIntegration/previous-trace-links/custom-trace/test.ts
  10. +92 −0 ...r-integration-tests/suites/tracing/browserTracingIntegration/previous-trace-links/default/test.ts
  11. +10 −0 ...s/browser-integration-tests/suites/tracing/browserTracingIntegration/previous-trace-links/init.js
  12. +9 −0 ...ion-tests/suites/tracing/browserTracingIntegration/previous-trace-links/interaction-spans/init.js
  13. +8 −0 ...sts/suites/tracing/browserTracingIntegration/previous-trace-links/interaction-spans/template.html
  14. +90 −0 ...ion-tests/suites/tracing/browserTracingIntegration/previous-trace-links/interaction-spans/test.ts
  15. +9 −0 ...ntegration-tests/suites/tracing/browserTracingIntegration/previous-trace-links/meta/template.html
  16. +55 −0 ...wser-integration-tests/suites/tracing/browserTracingIntegration/previous-trace-links/meta/test.ts
  17. +14 −0 ...on-tests/suites/tracing/browserTracingIntegration/previous-trace-links/negatively-sampled/init.js
  18. +39 −0 ...on-tests/suites/tracing/browserTracingIntegration/previous-trace-links/negatively-sampled/test.ts
  19. +9 −0 ...ation-tests/suites/tracing/browserTracingIntegration/previous-trace-links/session-storage/init.js
  20. +40 −0 ...ation-tests/suites/tracing/browserTracingIntegration/previous-trace-links/session-storage/test.ts
  21. +1 −1 dev-packages/bundle-analyzer-scenarios/package.json
  22. +1 −1 dev-packages/clear-cache-gh-action/package.json
  23. +1 −1 dev-packages/e2e-tests/package.json
  24. +12 −2 dev-packages/e2e-tests/test-applications/create-next-app/tests/client-transactions.test.ts
  25. +2 −2 dev-packages/e2e-tests/test-applications/nextjs-t3/src/trpc/react.tsx
  26. +1 −6 dev-packages/e2e-tests/test-applications/nextjs-turbo/app/layout.tsx
  27. +3 −0 dev-packages/e2e-tests/test-applications/nextjs-turbo/app/pageload-transaction/page.tsx
  28. +9 −0 dev-packages/e2e-tests/test-applications/nextjs-turbo/instrumentation-client.ts
  29. +1 −1 dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json
  30. +0 −1 dev-packages/e2e-tests/test-applications/nextjs-turbo/pages/_app.tsx
  31. +0 −17 dev-packages/e2e-tests/test-applications/nextjs-turbo/sentry.client.config.ts
  32. +27 −0 dev-packages/e2e-tests/test-applications/nextjs-turbo/tests/app-router/pageload-transaction.test.ts
  33. +11 −0 ...ages/e2e-tests/test-applications/nextjs-turbo/tests/pages-router/client-trace-propagation.test.ts
  34. +10 −0 dev-packages/e2e-tests/test-applications/node-fastify/src/app.ts
  35. +22 −0 dev-packages/e2e-tests/test-applications/node-fastify/tests/errors.test.ts
  36. +20 −0 dev-packages/e2e-tests/test-applications/react-create-browser-router/tests/transactions.test.ts
  37. +10 −0 dev-packages/e2e-tests/test-applications/react-create-hash-router/tests/transactions.test.ts
  38. +10 −0 dev-packages/e2e-tests/test-applications/react-create-memory-router/tests/transactions.test.ts
  39. +1 −1 dev-packages/external-contributor-gh-action/package.json
  40. +4 −4 dev-packages/node-integration-tests/package.json
  41. +1 −1 dev-packages/rollup-utils/package.json
  42. +1 −1 dev-packages/size-limit-gh-action/package.json
  43. +2 −2 dev-packages/test-utils/package.json
  44. +1 −1 lerna.json
  45. +3 −3 packages/angular/package.json
  46. +4 −4 packages/astro/package.json
  47. +26 −28 packages/astro/src/integration/index.ts
  48. +3 −3 packages/aws-serverless/package.json
  49. +2 −2 packages/browser-utils/package.json
  50. +3 −3 packages/browser-utils/src/metrics/cls.ts
  51. +2 −3 packages/browser-utils/src/metrics/inp.ts
  52. +7 −7 packages/browser/package.json
  53. +0 −4 packages/browser/src/client.ts
  54. +4 −0 packages/browser/src/index.ts
  55. +186 −0 packages/browser/src/log.ts
  56. +49 −0 packages/browser/src/tracing/browserTracingIntegration.ts
  57. +103 −0 packages/browser/src/tracing/previousTrace.ts
  58. +29 −14 packages/browser/test/index.test.ts
  59. +200 −0 packages/browser/test/log.test.ts
  60. +106 −1 packages/browser/test/tracing/browserTracingIntegration.test.ts
  61. +225 −0 packages/browser/test/tracing/previousTrace.test.ts
  62. +4 −4 packages/bun/package.json
  63. +2 −2 packages/cloudflare/package.json
  64. +1 −1 packages/core/package.json
  65. +1 −2 packages/core/src/checkin.ts
  66. +6 −4 packages/core/src/currentScopes.ts
  67. +2 −3 packages/core/src/feedback.ts
  68. +21 −16 packages/core/src/fetch.ts
  69. +1 −1 packages/core/src/index.ts
  70. +1 −1 packages/core/src/logs/index.ts
  71. +12 −0 packages/core/src/semanticAttributes.ts
  72. +3 −3 packages/core/src/session.ts
  73. +1 −1 packages/core/src/tracing/dynamicSamplingContext.ts
  74. +1 −3 packages/core/src/tracing/sentrySpan.ts
  75. +1 −1 packages/core/src/utils-hoist/envelope.ts
  76. +19 −0 packages/core/src/utils-hoist/instrument/fetch.ts
  77. +34 −37 packages/core/src/utils-hoist/object.ts
  78. +27 −0 packages/core/src/utils-hoist/url.ts
  79. +8 −13 packages/core/src/utils/applyScopeDataToEvent.ts
  80. +10 −10 packages/core/test/lib/log/index.test.ts
  81. +48 −0 packages/core/test/lib/utils/applyScopeDataToEvent.test.ts
  82. +18 −1 packages/core/test/utils-hoist/url.test.ts
  83. +2 −2 packages/deno/package.json
  84. +3 −3 packages/ember/package.json
  85. +3 −3 packages/eslint-config-sdk/package.json
  86. +1 −1 packages/eslint-plugin-sdk/package.json
  87. +2 −2 packages/feedback/package.json
  88. +3 −3 packages/gatsby/package.json
  89. +3 −3 packages/google-cloud-serverless/package.json
  90. +2 −2 packages/integration-shims/package.json
  91. +3 −3 packages/nestjs/package.json
  92. +7 −6 packages/nestjs/src/integrations/sentry-nest-instrumentation.ts
  93. +7 −7 packages/nextjs/package.json
  94. +1 −0 packages/nextjs/src/config/types.ts
  95. +39 −3 packages/nextjs/src/config/webpack.ts
  96. +49 −6 packages/nextjs/src/config/withSentryConfig.ts
  97. +1 −1 packages/nextjs/src/edge/index.ts
  98. +3 −3 packages/node/package.json
  99. +86 −17 packages/node/src/integrations/tracing/fastify.ts
  100. +6 −6 packages/nuxt/package.json
  101. +2 −38 packages/nuxt/src/vite/addServerConfig.ts
  102. +2 −2 packages/opentelemetry/package.json
  103. +10 −12 packages/opentelemetry/src/spanExporter.ts
  104. +3 −3 packages/profiling-node/package.json
  105. +4 −4 packages/react-router/package.json
  106. +3 −3 packages/react/package.json
  107. +5 −5 packages/remix/package.json
  108. +3 −3 packages/replay-canvas/package.json
  109. +4 −4 packages/replay-internal/package.json
  110. +3 −3 packages/replay-internal/src/coreHandlers/util/networkUtils.ts
  111. +1 −1 packages/replay-worker/package.json
  112. +3 −3 packages/solid/package.json
  113. +5 −5 packages/solidstart/package.json
  114. +3 −3 packages/svelte/package.json
  115. +6 −6 packages/sveltekit/package.json
  116. +3 −3 packages/sveltekit/src/client/browserTracingIntegration.ts
  117. +6 −6 packages/tanstackstart-react/package.json
  118. +1 −1 packages/tanstackstart/package.json
  119. +2 −2 packages/types/package.json
  120. +1 −1 packages/typescript/package.json
  121. +3 −3 packages/vercel-edge/package.json
  122. +3 −3 packages/vue/package.json
  123. +3 −3 packages/wasm/package.json
4 changes: 2 additions & 2 deletions .size-limit.js
Original file line number Diff line number Diff line change
@@ -40,14 +40,14 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration'),
gzip: true,
limit: '37.5 KB',
limit: '38 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration'),
gzip: true,
limit: '75.5 KB',
limit: '76 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay) - with treeshaking flags',
60 changes: 60 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -10,6 +10,66 @@

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

## 9.9.0

### Important Changes

- **feat(nextjs): Support `instrumentation-client.ts` ([#15705](https://github.com/getsentry/sentry-javascript/pull/15705))**

Next.js recently added a feature to support [client-side (browser) instrumentation via the `experimental.clientInstrumentationHook` flag and the `instrumentation-client.ts` file](https://nextjs.org/docs/app/api-reference/config/next-config-js/clientInstrumentationHook).

To be forwards compatible, the Sentry Next.js SDK will now pick up `instrumentation-client.ts` files even on older Next.js versions and add them to your client bundles.
It is suggested that you either rename your `sentry.client.config.ts` file to `instrumentation-client.ts`, or if you already happen to have a `instrumentation-client.ts` file move the contents of `sentry.client.config.ts` to `instrumentation-client.ts`.

- **feat(browser): Add `previous_trace` span links ([#15569](https://github.com/getsentry/sentry-javascript/pull/15569))**

The `@sentry/browser` SDK and SDKs based on `@sentry/browser` now emits a link from the first root span of a newly started trace to the root span of a previously started trace. You can control this feature via an option in `browserTracingIntegration()`:

```js
Sentry.init({
dsn: 'your-dsn-here'
integrations: [
Sentry.browserTracingIntegration({
// Available settings:
// - 'in-memory' (default): Stores previous trace information in memory
// - 'session-storage': Stores previous trace information in the browser's `sessionStorage`
// - 'off': Disable storing and sending previous trace information
linkPreviousTrace: 'in-memory',
}),
],
});
```

- **feat(browser): Add `logger.X` methods to browser SDK ([#15763](https://github.com/getsentry/sentry-javascript/pull/15763))**

For Sentry's [upcoming logging product](https://github.com/getsentry/sentry/discussions/86804), the SDK now supports sending logs via dedicated

```js
Sentry.init({
dsn: 'your-dsn-here',
_experiments: {
enableLogs: true, // This is required to use the logging features
},
});

Sentry.logger.info('This is a trace message', { userId: 123 });
// See PR for better documentation
```

Please note that the logs product is still in early access. See the link above for more information.

### Other Changes

- feat(browser): Attach host as part of error message to "Failed to fetch" errors ([#15729](https://github.com/getsentry/sentry-javascript/pull/15729))
- feat(core): Add `parseStringToURL` method ([#15768](https://github.com/getsentry/sentry-javascript/pull/15768))
- feat(core): Optimize `dropUndefinedKeys` ([#15760](https://github.com/getsentry/sentry-javascript/pull/15760))
- feat(node): Add fastify `shouldHandleError` ([#15771](https://github.com/getsentry/sentry-javascript/pull/15771))
- fix(nuxt): Delete no longer needed Nitro 'close' hook ([#15790](https://github.com/getsentry/sentry-javascript/pull/15790))
- perf(nestjs): Remove usage of `addNonEnumerableProperty` ([#15766](https://github.com/getsentry/sentry-javascript/pull/15766))
- ref: Avoid some usage of `dropUndefinedKeys()` ([#15757](https://github.com/getsentry/sentry-javascript/pull/15757))
- ref: Remove some usages of `dropUndefinedKeys()` ([#15781](https://github.com/getsentry/sentry-javascript/pull/15781))
- ref(nextjs): Fix Next.js vercel-edge runtime package information ([#15789](https://github.com/getsentry/sentry-javascript/pull/15789))

## 9.8.0

- feat(node): Implement new continuous profiling API spec ([#15635](https://github.com/getsentry/sentry-javascript/pull/15635))
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": "9.8.0",
"version": "9.9.0",
"main": "index.js",
"license": "MIT",
"engines": {
@@ -42,7 +42,7 @@
"@babel/preset-typescript": "^7.16.7",
"@playwright/test": "~1.50.0",
"@sentry-internal/rrweb": "2.34.0",
"@sentry/browser": "9.8.0",
"@sentry/browser": "9.9.0",
"axios": "1.8.2",
"babel-loader": "^8.2.2",
"fflate": "0.8.2",
13 changes: 13 additions & 0 deletions dev-packages/browser-integration-tests/suites/errors/fetch/init.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://public@dsn.ingest.sentry.io/1337',
transportOptions: {
fetchOptions: {
// See: https://github.com/microsoft/playwright/issues/34497
keepalive: false,
},
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Based on possible TypeError exceptions from https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch

// Network error (e.g. ad-blocked, offline, page does not exist, ...)
window.networkError = () => {
fetch('http://sentry-test-external.io/does-not-exist');
};

window.networkErrorSubdomain = () => {
fetch('http://subdomain.sentry-test-external.io/does-not-exist');
};

// Invalid header also produces TypeError
window.invalidHeaderName = () => {
fetch('http://sentry-test-external.io/invalid-header-name', { headers: { 'C ontent-Type': 'text/xml' } });
};

// Invalid header value also produces TypeError
window.invalidHeaderValue = () => {
fetch('http://sentry-test-external.io/invalid-header-value', { headers: ['Content-Type', 'text/html', 'extra'] });
};

// Invalid URL scheme
window.invalidUrlScheme = () => {
fetch('blub://sentry-test-external.io/invalid-scheme');
};

// URL includes credentials
window.credentialsInUrl = () => {
fetch('https://user:password@sentry-test-external.io/credentials-in-url');
};

// Invalid mode
window.invalidMode = () => {
fetch('https://sentry-test-external.io/invalid-mode', { mode: 'navigate' });
};

// Invalid request method
window.invalidMethod = () => {
fetch('http://sentry-test-external.io/invalid-method', { method: 'CONNECT' });
};

// No-cors mode with cors-required method
window.noCorsMethod = () => {
fetch('http://sentry-test-external.io/no-cors-method', { mode: 'no-cors', method: 'PUT' });
};
Loading