Skip to content

meta(changelog): Update changelog for 8.0.0-beta.4 #11770

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 35 commits into from
Apr 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
fce8e8c
test: Port loader tests from karma to playwright (#11688)
AbhiPrasad Apr 19, 2024
19548d2
feat(deps): Bump @opentelemetry/instrumentation-mysql from 0.35.0 to …
dependabot[bot] Apr 19, 2024
7eb000c
Merge pull request #11700 from getsentry/master
github-actions[bot] Apr 19, 2024
a6e7324
feat(feedback): Create async bundles and code to resolve helper inte…
ryan953 Apr 21, 2024
9a7e276
feat(deps): Bump @opentelemetry/instrumentation-fastify from 0.33.0 t…
dependabot[bot] Apr 22, 2024
934943c
ref(nextjs): Remove unnecessary logic to filter symbolification/sentr…
Apr 22, 2024
d679e7c
feat(browser): Add INP support for v8 (#11650)
mydea Apr 22, 2024
d6f722c
feat(deps): Bump @opentelemetry/instrumentation-graphql from 0.37.0 t…
dependabot[bot] Apr 22, 2024
4a6fb04
feat(deps): Bump @opentelemetry/instrumentation-mongoose from 0.35.0 …
dependabot[bot] Apr 22, 2024
a2abb7a
deps(nextjs): Remove unnecessary and faulty `@opentelemetry/api` depe…
Apr 22, 2024
e4ea972
feat(deps): Bump @opentelemetry/sdk-metrics from 1.21.0 to 1.23.0 (#1…
dependabot[bot] Apr 22, 2024
144a5f0
feat(aws): Add OTEL based integrations (#11548)
AbhiPrasad Apr 22, 2024
ea717f4
feat(replay): Add "maxCanvasSize" option for replay canvases (#11617)
billyvg Apr 22, 2024
6a8a410
fix(serverless): Check if cloud event callback is a function (#9044) …
tcoyze Apr 22, 2024
5e69f78
feat(deps): Bump @opentelemetry/instrumentation-http from 0.48.0 to 0…
dependabot[bot] Apr 22, 2024
d2d2e0a
feat(deps): Bump @opentelemetry/instrumentation-nestjs-core from 0.34…
dependabot[bot] Apr 22, 2024
62d6a12
feat(deps): Bump @prisma/instrumentation from 5.9.0 to 5.12.1 (#11724)
dependabot[bot] Apr 22, 2024
aceae05
feat(deps): Bump @opentelemetry/instrumentation-mysql2 from 0.35.0 to…
dependabot[bot] Apr 22, 2024
ca5cb14
fix(browser): Ensure `lazyLoadIntegration` works in NPM mode (#11673)
mydea Apr 23, 2024
06bc8b2
deps: Downgrade `@opentelemetry/instrumentation-http` to `0.48.0` (#1…
Apr 23, 2024
e955925
docs(sveltekit): Vite plugin rewording (#11743)
s1gr1d Apr 23, 2024
2f5c999
ci: Run e2e tests for dependabot PRs (#11746)
mydea Apr 23, 2024
7de7dcc
feat(core): Ensure trace context only includes relevant data (#11713)
mydea Apr 23, 2024
6f63c6a
fix(ember): Do not create rendering spans without transaction (#11749)
mydea Apr 23, 2024
d874b3c
feat(replay): Upgrade rrweb packages to 2.15.0 (#11736)
billyvg Apr 23, 2024
bee0677
fix(browser): Set custom sentry source correctly (#11735)
AbhiPrasad Apr 23, 2024
0a440dd
feat(opentelemetry): use rest args for addOpenTelemetryInstrumentatio…
AbhiPrasad Apr 23, 2024
b61d820
test(browser): Port builtin tests to playwright (#11733)
AbhiPrasad Apr 23, 2024
e88968f
test(e2e): Make proxy server more error resistant (#11763)
Apr 24, 2024
edfea16
feat(core): Increase default transport buffer size from 30 to 64 (#11…
Apr 24, 2024
92bc6c6
feat(nexjs): Sample out low-quality spans on older Next.js versions (…
Apr 24, 2024
de98428
ci(auto-release): Allow pre-releases in auto release (#11769)
s1gr1d Apr 24, 2024
3eea537
test(browser): Port unhandledrejection tests to playwright (#11758)
AbhiPrasad Apr 24, 2024
57d6045
feat(opentelemetry): Support new http method attribute (#11756)
AbhiPrasad Apr 24, 2024
25fcba0
meta(changelog): Update changelog for 8.0.0-beta.4
Apr 24, 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
13 changes: 10 additions & 3 deletions .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,27 @@ jobs:

# https://github.com/actions-ecosystem/action-regex-match
- uses: actions-ecosystem/action-regex-match@v2
id: version
id: version-regex
with:
# Parse version from head branch
text: ${{ github.head_ref }}
# match: preprare-release/xx.xx.xx
regex: '^prepare-release\/(\d+\.\d+\.\d+)(?:-(alpha|beta)\.\d+)?$'

- name: Extract version
id: get_version
run: |
version=${{ steps.version-regex.outputs.match }}
version=${version/'prepare-release/'/''}
echo "version=$version" >> $GITHUB_OUTPUT

- name: Prepare release
uses: getsentry/action-prepare-release@v1
if: github.event.pull_request.merged == true && steps.version.outputs.match != ''
if: github.event.pull_request.merged == true && steps.version-regex.outputs.match != '' && steps.get_version.outputs.version != ''
env:
GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PAT }}
with:
version: ${{ steps.version.outputs.group1 }}
version: ${{ steps.get_version.outputs.version }}
force: false
merge_target: master
craft_config_from_merge_target: true
47 changes: 4 additions & 43 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -768,40 +768,6 @@ jobs:
name: playwright-traces
path: dev-packages/browser-integration-tests/test-results

job_browser_integration_tests:
name: Browser (${{ matrix.browser }}) Tests
needs: [job_get_metadata, job_build]
if: needs.job_get_metadata.outputs.changed_browser == 'true' || github.event_name != 'pull_request'
runs-on: ubuntu-20.04
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
browser:
- ChromeHeadless
- FirefoxHeadless
- WebkitHeadless
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'
- name: Restore caches
uses: ./.github/actions/restore-cache
env:
DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }}
- name: Run integration tests
env:
KARMA_BROWSER: ${{ matrix.browser }}
run: |
cd packages/browser
[[ $KARMA_BROWSER == WebkitHeadless ]] && yarn run playwright install-deps webkit
yarn test:integration

job_browser_build_tests:
name: Browser Build Tests
needs: [job_get_metadata, job_build]
Expand Down Expand Up @@ -942,12 +908,10 @@ jobs:
# We want to run this if:
# - The build job was successful, not skipped
# - AND if the profiling node bindings were either successful or skipped
# AND if this is not a PR from a fork or dependabot
if: |
always() && needs.job_build.result == 'success' &&
(needs.job_compile_bindings_profiling_node.result == 'success' || needs.job_compile_bindings_profiling_node.result == 'skipped') &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]'
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
needs: [job_get_metadata, job_build, job_compile_bindings_profiling_node]
runs-on: ubuntu-20.04-large-js
timeout-minutes: 15
Expand Down Expand Up @@ -1005,13 +969,11 @@ jobs:
job_e2e_tests:
name: E2E ${{ matrix.label || matrix.test-application }} Test
# We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks
# Dependabot PRs sadly also don't have access to secrets, so we skip them as well
# We need to add the `always()` check here because the previous step has this as well :(
# See: https://github.com/actions/runner/issues/2205
if:
always() && needs.job_e2e_prepare.result == 'success' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]'
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
needs: [job_get_metadata, job_build, job_e2e_prepare]
runs-on: ubuntu-20.04
timeout-minutes: 10
Expand Down Expand Up @@ -1141,14 +1103,14 @@ jobs:
job_profiling_e2e_tests:
name: E2E ${{ matrix.label || matrix.test-application }} Test
# We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks
# Dependabot PRs sadly also don't have access to secrets, so we skip them as well
# Dependabot specifically also has access to secrets
# We need to add the `always()` check here because the previous step has this as well :(
# See: https://github.com/actions/runner/issues/2205
if:
# Only run profiling e2e tests if profiling node bindings have changed
always() && needs.job_e2e_prepare.result == 'success' &&
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) &&
github.actor != 'dependabot[bot]' && (
(
(needs.job_get_metadata.outputs.changed_profiling_node_bindings == 'true') ||
(needs.job_get_metadata.outputs.is_release == 'true') ||
(github.event_name != 'pull_request')
Expand Down Expand Up @@ -1240,7 +1202,6 @@ jobs:
job_nextjs_integration_test,
job_node_integration_tests,
job_browser_playwright_tests,
job_browser_integration_tests,
job_browser_loader_tests,
job_remix_integration_tests,
job_e2e_tests,
Expand Down
30 changes: 15 additions & 15 deletions .size-limit.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,35 +52,28 @@ module.exports = [
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'feedbackIntegration'),
gzip: true,
limit: '83 KB',
limit: '87 KB',
},
{
name: '@sentry/browser (incl. Feedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration'),
gzip: true,
limit: '37 KB',
},
{
name: '@sentry/browser (incl. Feedback, Feedback Modal)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration', 'feedbackModalIntegration'),
gzip: true,
limit: '37 KB',
limit: '40 KB',
},
{
name: '@sentry/browser (incl. Feedback, Feedback Modal, Feedback Screenshot)',
name: '@sentry/browser (incl. sendFeedback)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'feedbackIntegration', 'feedbackModalIntegration', 'feedbackScreenshotIntegration'),
import: createImport('init', 'sendFeedback'),
gzip: true,
limit: '40 KB',
limit: '28 KB',
},
{
name: '@sentry/browser (incl. sendFeedback)',
name: '@sentry/browser (incl. FeedbackAsync)',
path: 'packages/browser/build/npm/esm/index.js',
import: createImport('init', 'sendFeedback'),
import: createImport('init', 'feedbackAsyncIntegration'),
gzip: true,
limit: '30 KB',
limit: '33 KB',
},
// React SDK (ESM)
{
Expand Down Expand Up @@ -167,6 +160,13 @@ module.exports = [
brotli: false,
limit: '220 KB',
},
{
name: 'CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed',
path: createCDNPath('bundle.tracing.replay.feedback.min.js'),
gzip: false,
brotli: false,
limit: '264 KB',
},
// Next.js SDK (ESM)
{
name: '@sentry/nextjs (client)',
Expand Down
44 changes: 44 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,50 @@

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

## 8.0.0-beta.4

### Important Changes

- **feat(browser): Add INP support for v8 (#11650)**

INP web vital support was now forward-ported to version 8. Recording of INP data is enabled by default.

- **feat(core): Increase default transport buffer size from 30 to 64 (#11764)**

The default limit of queued events to be sent was increased from 30 to 64 events. You may observe a higher memory
footprint of the SDK. You can override this limit by setting the `transportOptions.bufferSize` option in
`Sentry.init()`.

- **feat(replay): Add "maxCanvasSize" option for replay canvases (#11617)**

A `maxCanvasSize` option was added to the `replayCanvasIntegration` to disallow capturing of canvases larger than a
certain size. This value defaults to `1280` which will not capture canvases bigger than 1280x1280 pixels.

### Other Changes

- deps: Downgrade `@opentelemetry/instrumentation-http` to `0.48.0` (#11745)
- deps(nextjs): Remove unnecessary and faulty `@opentelemetry/api` dependency from Next.js package (#11717)
- feat(aws): Add OTEL based integrations (#11548)
- feat(core): Ensure trace context only includes relevant data (#11713)
- feat(deps): Bump @opentelemetry/instrumentation-fastify from 0.33.0 to 0.35.0 (#11690)
- feat(deps): Bump @opentelemetry/instrumentation-graphql from 0.37.0 to 0.39.0 (#11692)
- feat(deps): Bump @opentelemetry/instrumentation-http from 0.48.0 to 0.50.0 (#11725)
- feat(deps): Bump @opentelemetry/instrumentation-mongoose from 0.35.0 to 0.37.0 (#11693)
- feat(deps): Bump @opentelemetry/instrumentation-mysql2 from 0.35.0 to 0.37.0 (#11726)
- feat(deps): Bump @opentelemetry/instrumentation-nestjs-core from 0.34.0 to 0.36.0 (#11727)
- feat(deps): Bump @opentelemetry/sdk-metrics from 1.21.0 to 1.23.0 (#11695)
- feat(deps): Bump @prisma/instrumentation from 5.9.0 to 5.12.1 (#11724)
- feat(feedback): Create async bundles and code to resolve helper integrations (#11621)
- feat(nextjs): Sample out low-quality spans on older Next.js versions (#11722)
- feat(opentelemetry): Support new http method attribute (#11756)
- feat(opentelemetry): Use rest args for addOpenTelemetryInstrumentation (#11721)
- feat(replay): Upgrade rrweb packages to 2.15.0 (#11736)
- fix(browser): Ensure `lazyLoadIntegration` works in NPM mode (#11673)
- fix(browser): Set custom sentry source correctly (#11735)
- fix(ember): Do not create rendering spans without transaction (#11749)
- fix(serverless): Check if cloud event callback is a function (#9044) (#11701)
- ref(nextjs): Remove unnecessary logic to filter symbolification/sentry spans (#11714)

## 8.0.0-beta.3

### Important Changes
Expand Down
13 changes: 6 additions & 7 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,10 @@ The `Transaction` integration has been removed from `@sentry/integrations`. Ther
#### @sentry/serverless

`@sentry/serverless` has been removed and will no longer be published. The serverless package has been split into two
different packages, `@sentry/aws-serverless` and `@sentry/google-cloud-serverless`. These new packages have smaller
bundle size than `@sentry/serverless`, which should improve your serverless cold-start times.
different packages, `@sentry/aws-serverless` and `@sentry/google-cloud-serverless`.

`@sentry/aws-serverless` and `@sentry/google-cloud-serverless` has also been changed to only emit CJS builds. The ESM
build for the `@sentry/serverless` package was always broken and we decided to remove it entirely. ESM support will be
re-added at a later date.
The `@sentry/google-cloud-serverless` package has also been changed to only emit CJS builds because it can only
instrument CJS. ESM support will be re-added at a later date.

In `@sentry/serverless` you had to use a namespace import to initialize the SDK. This has been removed so that you can
directly import from the SDK instead.
Expand Down Expand Up @@ -875,8 +873,9 @@ Sentry.init({

#### Breaking `sentrySvelteKit()` changes

We upgraded the `@sentry/vite-plugin` which is a dependency of the SvelteKit SDK from version 0.x to 2.x. With this
change, resolving uploaded source maps should work out of the box much more often than before
We upgraded the `@sentry/vite-plugin` from version 0.x to 2.x. This package is internally used by the
`@sentry/sveltekit` SDK. With this change, resolving uploaded source maps should work out of the box much more often
than before
([more information](https://docs.sentry.io/platforms/javascript/sourcemaps/troubleshooting_js/artifact-bundles/)).

To allow future upgrades of the Vite plugin without breaking stable and public APIs in `sentrySvelteKit`, we modified
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Sentry.addBreadcrumb({
category: 'auth',
message: 'testing loader',
level: 'error',
});
Sentry.captureMessage('test');
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';

sentryTest('should add breadcrumb to message', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.message).toBe('test');
expect(eventData.breadcrumbs?.length).toBe(1);
expect(eventData.breadcrumbs).toEqual([
{
category: 'auth',
level: 'error',
message: 'testing loader',
timestamp: expect.any(Number),
},
]);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Sentry.onLoad(function () {
Sentry.init({});
Sentry.addBreadcrumb({
category: 'auth',
message: 'testing loader',
level: 'error',
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Sentry.captureMessage('test');
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expect } from '@playwright/test';

import { sentryTest } from '../../../../utils/fixtures';
import { envelopeRequestParser, waitForErrorRequestOnUrl } from '../../../../utils/helpers';

sentryTest('should add breadcrumb from onLoad callback to message', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.message).toBe('test');
expect(eventData.breadcrumbs?.length).toBe(1);
expect(eventData.breadcrumbs).toEqual([
{
category: 'auth',
level: 'error',
message: 'testing loader',
timestamp: expect.any(Number),
},
]);
});
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,12 @@ sentryTest('captureException works', async ({ getLocalTestUrl, page }) => {

expect(eventData.message).toBe('Test exception');
});

sentryTest('should set SENTRY_SDK_SOURCE value', async ({ getLocalTestUrl, page }) => {
const url = await getLocalTestUrl({ testDir: __dirname });
const req = await waitForErrorRequestOnUrl(page, url);

const eventData = envelopeRequestParser(req);

expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
});
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,20 @@ sentryTest('captureException works inside of onLoad', async ({ getLocalTestUrl,

expect(eventData.message).toBe('Test exception');
});

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

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

const eventData = envelopeRequestParser(req);

expect(eventData.sdk?.packages?.[0].name).toBe('loader:@sentry/browser');
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import * as Sentry from '@sentry/browser';

// So we can use this in subject.js
// We specifically DO NOT set this on window.Sentry as we want to test a non-CDN bundle environment,
// where window.Sentry is usually not available
window._testSentry = { ...Sentry };

Sentry.init({
dsn: 'https://[email protected]/1337',
integrations: [],
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
window._testLazyLoadIntegration = async function run() {
const integration = await window._testSentry.lazyLoadIntegration('httpClientIntegration');

window._testSentry.getClient()?.addIntegration(integration());

window._integrationLoaded = true;
};
Loading