Skip to content

Commit 89f0048

Browse files
authored
Merge branch 'develop' into sig/nuxt-4
2 parents 11df292 + 35bdc87 commit 89f0048

File tree

106 files changed

+1326
-575
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+1326
-575
lines changed

.github/workflows/build.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,7 @@ jobs:
902902
'nextjs-13',
903903
'nextjs-14',
904904
'nextjs-15',
905+
'nextjs-t3',
905906
'react-17',
906907
'react-19',
907908
'react-create-hash-router',
@@ -1068,6 +1069,10 @@ jobs:
10681069
'react-send-to-sentry',
10691070
'node-express-send-to-sentry',
10701071
'debug-id-sourcemaps',
1072+
'nextjs-app-dir',
1073+
'nextjs-13',
1074+
'nextjs-14',
1075+
'nextjs-15',
10711076
]
10721077
build-command:
10731078
- false
@@ -1082,6 +1087,30 @@ jobs:
10821087
- test-application: 'create-remix-app-legacy'
10831088
assert-command: 'test:assert-sourcemaps'
10841089
label: 'create-remix-app-legacy (sourcemaps)'
1090+
- test-application: 'nextjs-app-dir'
1091+
build-command: 'test:build-canary'
1092+
label: 'nextjs-app-dir (canary)'
1093+
- test-application: 'nextjs-app-dir'
1094+
build-command: 'test:build-latest'
1095+
label: 'nextjs-app-dir (latest)'
1096+
- test-application: 'nextjs-13'
1097+
build-command: 'test:build-canary'
1098+
label: 'nextjs-13 (canary)'
1099+
- test-application: 'nextjs-13'
1100+
build-command: 'test:build-latest'
1101+
label: 'nextjs-13 (latest)'
1102+
- test-application: 'nextjs-14'
1103+
build-command: 'test:build-canary'
1104+
label: 'nextjs-14 (canary)'
1105+
- test-application: 'nextjs-14'
1106+
build-command: 'test:build-latest'
1107+
label: 'nextjs-14 (latest)'
1108+
- test-application: 'nextjs-15'
1109+
build-command: 'test:build-canary'
1110+
label: 'nextjs-15 (canary)'
1111+
- test-application: 'nextjs-15'
1112+
build-command: 'test:build-latest'
1113+
label: 'nextjs-15 (latest)'
10851114

10861115
steps:
10871116
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})

.github/workflows/release-comment-issues.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,13 @@ jobs:
1515
runs-on: ubuntu-20.04
1616
name: 'Notify issues'
1717
steps:
18-
- name: Check out code
19-
uses: actions/checkout@v4
20-
21-
- name: Install dependencies
22-
run: yarn install --frozen-lockfile
23-
2418
- name: Get version
2519
id: get_version
2620
run: echo "version=${{ github.event.inputs.version || github.event.release.tag_name }}" >> $GITHUB_OUTPUT
2721

2822
- name: Comment on linked issues that are mentioned in release
2923
if: steps.get_version.outputs.version != ''
30-
uses: ./dev-packages/release-comment-issues-gh-action
24+
uses: getsentry/release-comment-issues-gh-action@v1
3125
with:
3226
github_token: ${{ secrets.GITHUB_TOKEN }}
3327
version: ${{ steps.get_version.outputs.version }}

CHANGELOG.md

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,39 @@
99
## Unreleased
1010

1111
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
12-
- Moved description of `browser` spans into the operation, e.g. `browser - cache` -> `browser.cache` and set the URL as
13-
the description
12+
13+
## 8.32.0
14+
15+
### Important Changes
16+
17+
- **ref(browser): Move navigation span descriptions into op
18+
([#13527](https://github.com/getsentry/sentry-javascript/pull/13527))**
19+
20+
Moves the description of navigation related browser spans into the op, e.g. browser - cache -> browser.cache and sets
21+
the description to the performanceEntry objects' names (in this context it is the URL of the page).
22+
23+
- **feat(node): Add amqplibIntegration ([#13714](https://github.com/getsentry/sentry-javascript/pull/13714))**
24+
25+
- **feat(nestjs): Add `SentryGlobalGenericFilter` and allow specifying application ref in global filter
26+
([#13673](https://github.com/getsentry/sentry-javascript/pull/13673))**
27+
28+
Adds a `SentryGlobalGenericFilter` that filters both graphql and http exceptions depending on the context.
29+
30+
- **feat: Set log level for Fetch/XHR breadcrumbs based on status code
31+
([#13711](https://github.com/getsentry/sentry-javascript/pull/13711))**
32+
33+
Sets log levels in breadcrumbs for 5xx to error and 4xx to warning.
34+
35+
### Other Changes
36+
37+
- chore(nextjs): Bump rollup to 3.29.5 ([#13761](https://github.com/getsentry/sentry-javascript/pull/13761))
38+
- fix(core): Remove `sampled` flag from dynamic sampling context in Tracing without Performance mode
39+
([#13753](https://github.com/getsentry/sentry-javascript/pull/13753))
40+
- fix(node): Ensure node-fetch does not emit spans without tracing
41+
([#13765](https://github.com/getsentry/sentry-javascript/pull/13765))
42+
- fix(nuxt): Use Nuxt error hooks instead of errorHandler to prevent 500
43+
([#13748](https://github.com/getsentry/sentry-javascript/pull/13748))
44+
- fix(test): Unflake LCP test ([#13741](https://github.com/getsentry/sentry-javascript/pull/13741))
1445

1546
Work in this release was contributed by @Zen-cronic and @Sjoertjuh. Thank you for your contributions!
1647

dev-packages/browser-integration-tests/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/browser-integration-tests",
3-
"version": "8.31.0",
3+
"version": "8.32.0",
44
"main": "index.js",
55
"license": "MIT",
66
"engines": {
@@ -43,7 +43,7 @@
4343
"@babel/preset-typescript": "^7.16.7",
4444
"@playwright/test": "^1.44.1",
4545
"@sentry-internal/rrweb": "2.11.0",
46-
"@sentry/browser": "8.31.0",
46+
"@sentry/browser": "8.32.0",
4747
"axios": "1.6.7",
4848
"babel-loader": "^8.2.2",
4949
"html-webpack-plugin": "^5.5.0",

dev-packages/bundle-analyzer-scenarios/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/bundle-analyzer-scenarios",
3-
"version": "8.31.0",
3+
"version": "8.32.0",
44
"description": "Scenarios to test bundle analysis with",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/dev-packages/bundle-analyzer-scenarios",

dev-packages/clear-cache-gh-action/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@sentry-internal/clear-cache-gh-action",
33
"description": "An internal Github Action to clear GitHub caches.",
4-
"version": "8.31.0",
4+
"version": "8.32.0",
55
"license": "MIT",
66
"engines": {
77
"node": ">=18"

dev-packages/e2e-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/e2e-tests",
3-
"version": "8.31.0",
3+
"version": "8.32.0",
44
"license": "MIT",
55
"private": true,
66
"scripts": {

dev-packages/e2e-tests/test-applications/nextjs-14/app/generation-functions/page.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,31 @@ export default function Page() {
77
return <p>Hello World!</p>;
88
}
99

10-
export async function generateMetadata({
11-
searchParams,
12-
}: {
13-
searchParams: { [key: string]: string | string[] | undefined };
14-
}) {
10+
export async function generateMetadata({ searchParams }: { searchParams: any }) {
11+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
12+
const normalizedSearchParams = await searchParams;
13+
1514
Sentry.setTag('my-isolated-tag', true);
1615
Sentry.setTag('my-global-scope-isolated-tag', getDefaultIsolationScope().getScopeData().tags['my-isolated-tag']); // We set this tag to be able to assert that the previously set tag has not leaked into the global isolation scope
1716

18-
if (searchParams['shouldThrowInGenerateMetadata']) {
17+
if (normalizedSearchParams['shouldThrowInGenerateMetadata']) {
1918
throw new Error('generateMetadata Error');
2019
}
2120

2221
return {
23-
title: searchParams['metadataTitle'] ?? 'not set',
22+
title: normalizedSearchParams['metadataTitle'] ?? 'not set',
2423
};
2524
}
2625

27-
export function generateViewport({
28-
searchParams,
29-
}: {
30-
searchParams: { [key: string]: string | undefined };
31-
}) {
32-
if (searchParams['shouldThrowInGenerateViewport']) {
26+
export async function generateViewport({ searchParams }: { searchParams: any }) {
27+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
28+
const normalizedSearchParams = await searchParams;
29+
30+
if (normalizedSearchParams['shouldThrowInGenerateViewport']) {
3331
throw new Error('generateViewport Error');
3432
}
3533

3634
return {
37-
themeColor: searchParams['viewportThemeColor'] ?? 'black',
35+
themeColor: normalizedSearchParams['viewportThemeColor'] ?? 'black',
3836
};
3937
}

dev-packages/e2e-tests/test-applications/nextjs-14/app/propagation/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export function makeHttpRequest(url: string) {
2626
});
2727
}
2828

29-
export function checkHandler() {
30-
const headerList = headers();
29+
export async function checkHandler() {
30+
const headerList = await headers();
3131

3232
const headerObj: Record<string, unknown> = {};
3333
headerList.forEach((value, key) => {

dev-packages/e2e-tests/test-applications/nextjs-15/app/ppr-error/[param]/page.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ import * as Sentry from '@sentry/nextjs';
33
export default async function Page({
44
searchParams,
55
}: {
6-
searchParams: { id?: string };
6+
searchParams: any;
77
}) {
8+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
9+
const normalizedSearchParams = await searchParams;
10+
811
try {
9-
console.log(searchParams.id); // Accessing a field on searchParams will throw the PPR error
12+
console.log(normalizedSearchParams.id); // Accessing a field on searchParams will throw the PPR error
1013
} catch (e) {
1114
Sentry.captureException(e); // This error should not be reported
1215
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait for any async event processors to run

dev-packages/e2e-tests/test-applications/nextjs-app-dir/app/client-component/parameter/[...parameters]/page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
import { use } from 'react';
12
import { ClientErrorDebugTools } from '../../../../components/client-error-debug-tools';
23

3-
export default function Page({ params }: { params: Record<string, string> }) {
4+
export default function Page({ params }: any) {
5+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
6+
const normalizedParams = 'then' in params ? use(params) : params;
7+
48
return (
59
<div style={{ border: '1px solid lightgrey', padding: '12px' }}>
610
<h2>Page (/client-component/[...parameters])</h2>
7-
<p>Params: {JSON.stringify(params['parameters'])}</p>
11+
<p>Params: {JSON.stringify(normalizedParams['parameters'])}</p>
812
<ClientErrorDebugTools />
913
</div>
1014
);

dev-packages/e2e-tests/test-applications/nextjs-app-dir/app/client-component/parameter/[parameter]/page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
import { use } from 'react';
12
import { ClientErrorDebugTools } from '../../../../components/client-error-debug-tools';
23

3-
export default function Page({ params }: { params: Record<string, string> }) {
4+
export default function Page({ params }: any) {
5+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
6+
const normalizedParams = 'then' in params ? use(params) : params;
7+
48
return (
59
<div style={{ border: '1px solid lightgrey', padding: '12px' }}>
610
<h2>Page (/client-component/[parameter])</h2>
7-
<p>Parameter: {JSON.stringify(params['parameter'])}</p>
11+
<p>Parameter: {JSON.stringify(normalizedParams['parameter'])}</p>
812
<ClientErrorDebugTools />
913
</div>
1014
);

dev-packages/e2e-tests/test-applications/nextjs-app-dir/app/server-component/parameter/[...parameters]/page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
import { use } from 'react';
12
import { ClientErrorDebugTools } from '../../../../components/client-error-debug-tools';
23

34
export const dynamic = 'force-dynamic';
45

5-
export default async function Page({ params }: { params: Record<string, string> }) {
6+
export default function Page({ params }: any) {
7+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
8+
const normalizedParams = 'then' in params ? use(params) : params;
9+
610
return (
711
<div style={{ border: '1px solid lightgrey', padding: '12px' }}>
812
<h2>Page (/server-component/[...parameters])</h2>
9-
<p>Params: {JSON.stringify(params['parameters'])}</p>
13+
<p>Params: {JSON.stringify(normalizedParams['parameters'])}</p>
1014
<ClientErrorDebugTools />
1115
</div>
1216
);

dev-packages/e2e-tests/test-applications/nextjs-app-dir/app/server-component/parameter/[parameter]/page.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
import { use } from 'react';
12
import { ClientErrorDebugTools } from '../../../../components/client-error-debug-tools';
23

34
export const dynamic = 'force-dynamic';
45

5-
export default async function Page({ params }: { params: Record<string, string> }) {
6+
export default function Page({ params }: any) {
7+
// We need to dynamically check for this because Next.js made the API async for Next.js 15 and we use this test in canary tests
8+
const normalizedParams = 'then' in params ? use(params) : params;
9+
610
return (
711
<div style={{ border: '1px solid lightgrey', padding: '12px' }}>
812
<h2>Page (/server-component/[parameter])</h2>
9-
<p>Parameter: {JSON.stringify(params['parameter'])}</p>
13+
<p>Parameter: {JSON.stringify(normalizedParams['parameter'])}</p>
1014
<ClientErrorDebugTools />
1115
</div>
1216
);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
8+
# testing
9+
/coverage
10+
11+
# next.js
12+
/.next/
13+
/out/
14+
15+
# production
16+
/build
17+
18+
# misc
19+
.DS_Store
20+
*.pem
21+
22+
# debug
23+
npm-debug.log*
24+
yarn-debug.log*
25+
yarn-error.log*
26+
.pnpm-debug.log*
27+
28+
# local env files
29+
.env*.local
30+
31+
# vercel
32+
.vercel
33+
34+
# typescript
35+
*.tsbuildinfo
36+
next-env.d.ts
37+
38+
!*.d.ts
39+
40+
# Sentry
41+
.sentryclirc
42+
43+
.vscode
44+
45+
test-results
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@sentry:registry=http://127.0.0.1:4873
2+
@sentry-internal:registry=http://127.0.0.1:4873
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/// <reference types="next" />
2+
/// <reference types="next/image-types/global" />
3+
4+
// NOTE: This file should not be edited
5+
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
await import('./src/env.js');
2+
3+
/** @type {import("next").NextConfig} */
4+
const config = {};
5+
6+
import { withSentryConfig } from '@sentry/nextjs';
7+
8+
export default withSentryConfig(config, {
9+
disableLogger: true,
10+
silent: true,
11+
});

0 commit comments

Comments
 (0)