Skip to content

meta(changelog): Update Changelog for 8.9.0 #12451

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 32 commits into from
Jun 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5e1adf8
feat(deps): Bump @opentelemetry/sdk-metrics from 1.23.0 to 1.25.0 (#1…
dependabot[bot] Jun 6, 2024
cecb0d7
feat(node): add continuous profiling mode (#12124)
JonasBa Jun 6, 2024
d6ec881
fix(browser): Fix INP span creation & transaction tagging (#12372)
mydea Jun 7, 2024
2eb4c3e
Merge pull request #12401 from getsentry/master
github-actions[bot] Jun 7, 2024
1f82e47
fix(aws-serverless): Only auto-patch handler in CJS when loading `aws…
Lms24 Jun 7, 2024
273e5e4
test(e2e): Add ESM http instrumentation test (#12379)
Lms24 Jun 7, 2024
28da802
fix(nextjs): correct types conditional export ordering (#12355)
jpulec Jun 7, 2024
77b47e1
fix: Fix types export order (#12404)
mydea Jun 7, 2024
c8e9f84
build: Cleanup dependencies (#12405)
mydea Jun 7, 2024
1df9c69
fix(vue): Handle span name assignment for nested routes in VueRouter …
soch4n Jun 7, 2024
691e5de
feat(replay): Replay Web Vital Breadcrumbs (#12296)
c298lee Jun 7, 2024
34455c9
docs: Add external contributors to 8.8.0 changelog note (#12413)
AbhiPrasad Jun 10, 2024
8b07998
test(e2e): Update nextjs-app-dir E2E tests to avoid sending to Sentry…
mydea Jun 10, 2024
51bc570
test: Remove unneeded E2E test app dependencies (#12406)
mydea Jun 10, 2024
d2363cc
chore(changelog): Add external contributor credit message to unreleas…
Lms24 Jun 10, 2024
71f2062
feat(nextjs): Allow for suppressing warning about missing global erro…
lforst Jun 10, 2024
30f0c55
feat(solidjs): Add sourcemap instructions to README (#12425)
andreiborza Jun 10, 2024
2149597
docs: Update contributing docs to mention volta (#12431)
mydea Jun 10, 2024
a238fff
fix(aws-serverless): Only start root span in Sentry wrapper if Otel d…
Lms24 Jun 10, 2024
fee7f68
fix(aws-serverless): Add `op` to Otel-generated lambda function root …
Lms24 Jun 10, 2024
54c26cd
feat(solidjs): Add `withSentryErrorBoundary` HOC (#12421)
andreiborza Jun 10, 2024
b3a7086
feat(solid): Rename solidjs package to solid (#12436)
andreiborza Jun 10, 2024
1d8a8fe
feat(solidjs): Add entry for Solid SDK to .craft.yml (#12426)
andreiborza Jun 10, 2024
bbe4532
feat(deps): bump @opentelemetry/propagator-aws-xray from 1.24.1 to 1.…
dependabot[bot] Jun 10, 2024
31e4cda
fix(replay): Fix guard for exception event (#12441)
mydea Jun 10, 2024
5b67683
feat(deps): bump @opentelemetry/instrumentation-mongodb from 0.44.0 t…
dependabot[bot] Jun 10, 2024
ceaeeba
feat(deps): bump @opentelemetry/instrumentation-express from 0.40.0 t…
dependabot[bot] Jun 10, 2024
ce6fbcd
feat(redis): Add cache logic for redis-4 (#12429)
s1gr1d Jun 11, 2024
e8e86d0
feat(solid): Update README to indicate alpha release (#12448)
andreiborza Jun 11, 2024
1014da2
feat(utils): Backfill stack trace on fetch errors if it is missing (#…
lforst Jun 11, 2024
cc7db73
fix(astro): Ensure server-side exports work correctly (#12453)
Lms24 Jun 11, 2024
332a7ab
meta(changelog): Update changelog for 8.9.0
andreiborza Jun 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .craft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ targets:
- name: npm
id: '@sentry/react'
includeNames: /^sentry-react-\d.*\.tgz$/
- name: npm
id: '@sentry/solid'
includeNames: /^sentry-solid-\d.*\.tgz$/
- name: npm
id: '@sentry/svelte'
includeNames: /^sentry-svelte-\d.*\.tgz$/
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -993,7 +993,7 @@ jobs:
[
'angular-17',
'angular-18',
'aws-lambda-layer',
'aws-lambda-layer-cjs',
'cloudflare-astro',
'node-express',
'create-react-app',
Expand All @@ -1014,7 +1014,7 @@ jobs:
'react-router-6-use-routes',
'react-router-5',
'react-router-6',
'solidjs',
'solid',
'svelte-5',
'sveltekit',
'sveltekit-2',
Expand Down
20 changes: 10 additions & 10 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration'),
gzip: true,
limit: '34 KB',
limit: '35 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration'),
gzip: true,
limit: '71 KB',
limit: '72 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay) - with treeshaking flags',
Expand All @@ -48,14 +48,14 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'replayCanvasIntegration'),
gzip: true,
limit: '75 KB',
limit: '76 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay, Feedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'feedbackIntegration'),
gzip: true,
limit: '87 KB',
limit: '89 KB',
},
{
name: '@sentry/browser (incl. Tracing, Replay, Feedback, metrics)',
Expand All @@ -69,21 +69,21 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'metrics'),
gzip: true,
limit: '40 KB',
limit: '30 KB',
},
{
name: '@sentry/browser (incl. Feedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration'),
gzip: true,
limit: '40 KB',
limit: '41 KB',
},
{
name: '@sentry/browser (incl. sendFeedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'sendFeedback'),
gzip: true,
limit: '28 KB',
limit: '29 KB',
},
{
name: '@sentry/browser (incl. FeedbackAsync)',
Expand All @@ -107,7 +107,7 @@ module.exports = [
import: createImport('init', 'ErrorBoundary', 'reactRouterV6BrowserTracingIntegration'),
ignore: ['react/jsx-runtime'],
gzip: true,
limit: '37 KB',
limit: '38 KB',
},
// Vue SDK (ESM)
{
Expand Down Expand Up @@ -143,7 +143,7 @@ module.exports = [
name: 'CDN Bundle (incl. Tracing)',
path: createCDNPath('bundle.tracing.min.js'),
gzip: true,
limit: '36 KB',
limit: '37 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay)',
Expand Down Expand Up @@ -193,7 +193,7 @@ module.exports = [
import: createImport('init'),
ignore: ['next/router', 'next/constants'],
gzip: true,
limit: '37 KB',
limit: '38 KB',
},
// SvelteKit SDK (ESM)
{
Expand Down
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,37 @@

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

## 8.9.0

### Important changes

- **feat(solid): Add Solid SDK**

This release adds a dedicated SDK for [Solid JS](https://www.solidjs.com/) in alpha state with instrumentation for
[Solid Router](https://docs.solidjs.com/solid-router) and a custom `ErrorBoundary`. See the
[package README](https://github.com/getsentry/sentry-javascript/blob/develop/packages/solid/README.md) for how to use
the SDK.

### Other changes

- feat(deps): bump @opentelemetry/instrumentation-express from 0.40.0 to 0.40.1 (#12438)
- feat(deps): bump @opentelemetry/instrumentation-mongodb from 0.44.0 to 0.45.0 (#12439)
- feat(deps): bump @opentelemetry/propagator-aws-xray from 1.24.1 to 1.25.0 (#12437)
- feat(nextjs): Allow for suppressing warning about missing global error handler file (#12369)
- feat(redis): Add cache logic for redis-4 (#12429)
- feat(replay): Replay Web Vital Breadcrumbs (#12296)
- fix: Fix types export order (#12404)
- fix(astro): Ensure server-side exports work correctly (#12453)
- fix(aws-serverless): Add `op` to Otel-generated lambda function root span (#12430)
- fix(aws-serverless): Only auto-patch handler in CJS when loading `awslambda-auto` (#12392)
- fix(aws-serverless): Only start root span in Sentry wrapper if Otel didn't wrap handler (#12407)
- fix(browser): Fix INP span creation & transaction tagging (#12372)
- fix(nextjs): correct types conditional export ordering (#12355)
- fix(replay): Fix guard for exception event (#12441)
- fix(vue): Handle span name assignment for nested routes in VueRouter (#12398)

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

## 8.8.0

- **feat: Upgrade OTEL dependencies (#12388)**
Expand Down Expand Up @@ -48,6 +79,8 @@ If you are still encountering issues with OpenTelemetry instrumentation and ESM,
- ref(browser): Ensure idle span ending is consistent (#12310)
- ref(profiling): unref timer (#12340)

Work in this release contributed by @dohooo, @mohd-akram, and @ykzts. Thank you for your contributions!

## 8.7.0

### Important Changes
Expand Down
5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ Developer Documentation.

## Setting up an Environment

To run the test suite and our code linter, node.js and yarn are required.
We use [Volta](https://volta.sh/) to ensure we use consistent versions of node, yarn and pnpm.

[`node` download](https://nodejs.org/download) [`yarn` download](https://yarnpkg.com/en/docs/install)
Make sure to also enable [pnpm support in Volta](https://docs.volta.sh/advanced/pnpm) if you want to run the E2E tests
locally.

`sentry-javascript` is a monorepo containing several packages, and we use `lerna` to manage them. To get started,
install all dependencies, and then perform an initial build, so TypeScript can read all of the linked type definitions.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const config: PlaywrightTestConfig = {
testMatch: /test.ts/,

use: {
trace: process.env.CI ? 'retain-on-failure' : 'off',
trace: 'retain-on-failure',
},

projects: [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fetch('http://localhost:123/fake/endpoint/that/will/fail');
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { expect } from '@playwright/test';
import type { Event } from '@sentry/types';

import { sentryTest } from '../../../../utils/fixtures';
import { getMultipleSentryEnvelopeRequests } from '../../../../utils/helpers';

sentryTest('should create errors with stack traces for failing fetch calls', async ({ getLocalTestPath, page }) => {
const url = await getLocalTestPath({ testDir: __dirname });

const envelopes = await getMultipleSentryEnvelopeRequests<Event>(page, 3, { url, timeout: 10000 });
const errorEvent = envelopes.find(event => !event.type)!;
expect(errorEvent?.exception?.values?.[0].stacktrace?.frames?.length).toBeGreaterThan(0);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://[email protected]/1337',
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ import { expect } from '@playwright/test';

import { sentryTest } from '../../../utils/fixtures';
import {
expectedCLSPerformanceSpan,
expectedClickBreadcrumb,
expectedFCPPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedLCPPerformanceSpan,
expectedMemoryPerformanceSpan,
Expand Down Expand Up @@ -62,6 +64,8 @@ sentryTest(
expect.arrayContaining([
expectedNavigationPerformanceSpan,
expectedLCPPerformanceSpan,
expectedCLSPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedFCPPerformanceSpan,
expectedMemoryPerformanceSpan, // two memory spans - once per flush
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ import { expect } from '@playwright/test';

import { sentryTest } from '../../../utils/fixtures';
import {
expectedCLSPerformanceSpan,
expectedClickBreadcrumb,
expectedFCPPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedLCPPerformanceSpan,
expectedMemoryPerformanceSpan,
Expand Down Expand Up @@ -78,11 +80,13 @@ sentryTest(
const collectedPerformanceSpans = [...recording0.performanceSpans, ...recording1.performanceSpans];
const collectedBreadcrumbs = [...recording0.breadcrumbs, ...recording1.breadcrumbs];

expect(collectedPerformanceSpans.length).toEqual(6);
expect(collectedPerformanceSpans.length).toEqual(8);
expect(collectedPerformanceSpans).toEqual(
expect.arrayContaining([
expectedNavigationPerformanceSpan,
expectedLCPPerformanceSpan,
expectedCLSPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedFCPPerformanceSpan,
expectedMemoryPerformanceSpan, // two memory spans - once per flush
Expand Down Expand Up @@ -116,11 +120,13 @@ sentryTest(
const collectedPerformanceSpansAfterReload = [...recording2.performanceSpans, ...recording3.performanceSpans];
const collectedBreadcrumbsAdterReload = [...recording2.breadcrumbs, ...recording3.breadcrumbs];

expect(collectedPerformanceSpansAfterReload.length).toEqual(6);
expect(collectedPerformanceSpansAfterReload.length).toEqual(8);
expect(collectedPerformanceSpansAfterReload).toEqual(
expect.arrayContaining([
expectedReloadPerformanceSpan,
expectedLCPPerformanceSpan,
expectedCLSPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedFCPPerformanceSpan,
expectedMemoryPerformanceSpan,
Expand Down Expand Up @@ -188,6 +194,8 @@ sentryTest(
expect.arrayContaining([
expectedNavigationPerformanceSpan,
expectedLCPPerformanceSpan,
expectedCLSPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedFCPPerformanceSpan,
expectedMemoryPerformanceSpan,
Expand Down Expand Up @@ -304,11 +312,13 @@ sentryTest(
];
const collectedBreadcrumbsAfterIndexNavigation = [...recording8.breadcrumbs, ...recording9.breadcrumbs];

expect(collectedPerformanceSpansAfterIndexNavigation.length).toEqual(6);
expect(collectedPerformanceSpansAfterIndexNavigation.length).toEqual(8);
expect(collectedPerformanceSpansAfterIndexNavigation).toEqual(
expect.arrayContaining([
expectedNavigationPerformanceSpan,
expectedLCPPerformanceSpan,
expectedCLSPerformanceSpan,
expectedFIDPerformanceSpan,
expectedFPPerformanceSpan,
expectedFCPPerformanceSpan,
expectedMemoryPerformanceSpan,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import * as Sentry from '@sentry/browser';

window.Sentry = Sentry;

Sentry.init({
dsn: 'https://[email protected]/1337',
integrations: [
Sentry.browserTracingIntegration({
idleTimeout: 1000,
enableLongTask: false,
enableInp: true,
instrumentPageLoad: false,
instrumentNavigation: false,
}),
],
tracesSampleRate: 1,
});

const client = Sentry.getClient();

// Force page load transaction name to a testable value
Sentry.startBrowserTracingPageLoadSpan(client, {
name: 'test-url',
attributes: {
[Sentry.SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url',
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const blockUI = (delay = 70) => e => {
const startTime = Date.now();

function getElasped() {
const time = Date.now();
return time - startTime;
}

while (getElasped() < delay) {
//
}

e.target.classList.add('clicked');
};

document.querySelector('[data-test-id=not-so-slow-button]').addEventListener('click', blockUI(300));
document.querySelector('[data-test-id=slow-button]').addEventListener('click', blockUI(450));
document.querySelector('[data-test-id=normal-button]').addEventListener('click', blockUI());
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>Rendered Before Long Task</div>
<button data-test-id="slow-button" data-sentry-element="SlowButton">Slow</button>
<button data-test-id="not-so-slow-button" data-sentry-element="NotSoSlowButton">Not so slow</button>
<button data-test-id="normal-button" data-sentry-element="NormalButton">Click Me</button>
</body>
</html>
Loading
Loading