Skip to content

Commit

Permalink
Merge pull request #12451 from getsentry/prepare-release/8.9.0
Browse files Browse the repository at this point in the history
meta(changelog): Update Changelog for 8.9.0
  • Loading branch information
andreiborza authored Jun 11, 2024
2 parents 4c48b07 + 332a7ab commit 070e1f9
Show file tree
Hide file tree
Showing 161 changed files with 3,722 additions and 1,027 deletions.
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://public@dsn.ingest.sentry.io/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://public@dsn.ingest.sentry.io/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

0 comments on commit 070e1f9

Please sign in to comment.