Skip to content

Commit 2007547

Browse files
authored
Merge branch 'master' into cursor/add-example-image-to-sentry-ios-user-feedback-page-09c2
2 parents 5ff069d + 90bc95b commit 2007547

File tree

107 files changed

+1843
-1306
lines changed

Some content is hidden

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

107 files changed

+1843
-1306
lines changed

develop-docs/integrations/heroku.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
---
22
title: Heroku Plugin
3-
sidebar_title: Heroku
3+
sidebar_title: Heroku (Legacy)
44
---
5+
## Deprecation Warning
6+
Heroku plugin is deprecated and will be removed on October 25, 2025. This plugin automatically tracked releases and deployments from your Heroku apps in Sentry, linking them to error tracking and performance monitoring.
7+
You can still use Sentry with Heroku by setting up [Releases](https://docs.sentry.io/product/releases/). Releases let you track versions, commits, crash-free sessions, and more.
58

69
## Create a Heroku application
710

develop-docs/integrations/slack/index.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ After you update the `config.yml`, `sentry.conf.py`, or `devlocal.py` you need t
3333

3434
Now that you’ve created your app and updated your Sentry config, you can navigate to __Interactivity & Shortcuts__ under __Features__.
3535

36-
Toggle on __Interactivity__.
36+
Toggle on __Interactivity & Shortcuts__.
3737

3838
Now you’ll be able to enter your **Request URL** (this is the location of your self-hosted Sentry) and **Options Load URL**:
3939

@@ -119,7 +119,7 @@ Navigate to __Slash Commands__ under __Features__. Click __Create New Command__
119119

120120

121121
<Alert title="Note">
122-
When creating the slash command, don’t use `/sentry`. Do something like `/{your_name}-sentry`. If multiple apps are installed with the same slash command, the most recently installed one takes over.
122+
If you're a Sentry employee, when creating the slash command avoid using `/sentry`, try something like `/{your_name}-sentry`. If multiple apps are installed with the same slash command, the most recently installed one takes over.
123123
</Alert>
124124

125125
At the bottom of the page, click __Save__.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
title: New Major
3+
description: What to consider when preparing a new major.
4+
sidebar_order: 50
5+
---
6+
7+
Even if we decide to make a new major, it's important to prioritize user-friendliness, ease of migration, and backwards compatibility.
8+
9+
Upgrading requires effort. Every major increases the chances of folks staying on an older version forever.
10+
11+
Don't break existing APIs for a minor maintenance benefit on your end.
12+
13+
14+
## Making Migrating Easier
15+
16+
Create a [migration guide](https://docs.sentry.io/platforms/python/migration/). Include easily understandable and copy-pastable examples wherever possible.
17+
18+
Many folks might try to upgrade using AI. Try it out yourself on an example project. Consider adding rules specifically for migrating.
19+
20+
21+
## Dropping Version Support
22+
23+
When making a new major, consider whether we should drop support for an old Python version. There is data in Looker you can use to make an informed decision.
24+
25+
Investigate if we should drop support for old versions of frameworks and libraries. This is not feasible to do by hand as there's too many. For this purpose there is a small script in `scripts/update_integration_support.py` that automatically detects the effective lowest supported version based on our tests and package metadata. You can run the script after removing support for an old Python version, and it should automatically detect which minimum versions are no longer supported.
26+
27+
In order to fully specify the new minimum versions:
28+
- Update `_MIN_VERSIONS` in `sentry_sdk/integrations/__init__.py`
29+
- Update the lower bounds in `extras_require` in `setup.py`, if specified
30+
- Update the documentation pages for the affected integrations (usually, the lowest supported version is mentioned at the bottom)

develop-docs/sdk/telemetry/traces/index.mdx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,34 @@ Header Format:
128128

129129
The full spec is available in the [W3C Trace Context](https://www.w3.org/TR/trace-context/) specification.
130130

131+
### `traceIgnoreStatusCodes`
132+
133+
This SHOULD be a collection of integers, denoting HTTP status codes.
134+
If suitable for the platform, the collection MAY also admit pairs of integers, denoting inclusive HTTP status code ranges.
135+
136+
The option applies exclusively to incoming requests, and therefore MUST only be implemented in server SDKs.
137+
138+
The SDK MUST honor this option by inspecting the [`http.response.status_code`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#:~:text=1437-,http.response.status_code,-int) attribute on each transaction/root span before it's finished.
139+
If the value of this attribute matches one of the status codes in `traceIgnoreStatusCodes`, the SDK MUST set the transaction's [sampling decision](https://develop.sentry.dev/sdk/telemetry/traces/#sampling) to `not sampled`.
140+
141+
Note that a prerequisite to implement this option is that every HTTP server integration MUST record the [`http.response.status_code`](https://opentelemetry.io/docs/specs/semconv/registry/attributes/http/#:~:text=1437-,http.response.status_code,-int) attribute as defined in the OTEL spec.
142+
143+
The SDK MUST emit a debug log denoting why the transaction was dropped.
144+
If the SDK implements client reports, it MUST record the dropped transaction with the `event_processor` discard reason.
145+
146+
This option MUST default to an empty collection if it's introduced in a release with a minor SemVer bump.
147+
SDKs SHOULD set the default for this option to the following value (or equivalent if the implementation doesn't admit pairs of integers)
148+
```
149+
[[301, 303], [305, 399], [401, 404]]
150+
```
151+
at the earliest release with a major SemVer bump following its introduction.
152+
153+
The rationale for this option and default is to not consume a user's span quota to trace requests that are useless for debugging purposes (and can often be triggered by scanning bots).
154+
155+
Examples:
156+
`[403, 404]`: don't sample transactions corresponding to requests with status code 403 or 404
157+
`[[300, 399], [401, 404]]`: don't sample transactions corresponding to requests with status codes between 300 and 399 (inclusive) or between 401 and 404 (inclusive)
158+
131159
## `Event` Changes
132160

133161
As of writing, transactions are implemented as an extension of the `Event`

docs/cli/releases.mdx

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,17 @@ Because releases work on projects you will need to specify the organization and
1414

1515
## Creating Releases
1616

17-
Releases are created with the `sentry-cli releases new` command. It takes at the very least a version identifier that uniquely identifies the releases. There are a few restrictions -- the release name cannot:
18-
19-
- contain newlines, tabulator characters, forward slashes(/), or back slashes(\\)
20-
- be (in their entirety) period (.), double period (..), or space ( )
21-
- exceed 200 characters
22-
23-
The value can be arbitrary, but for certain platforms, recommendations exist:
24-
25-
- for mobile devices use `package-name@version-number` or `package-name@version-number+build-number`. **Do not** use `VERSION_NUMBER (BUILD_NUMBER)` as the parenthesis are used for display purposes ([email protected]+2 becomes 1.0 (2)), so invoking them will cause an error.
26-
- if you use a DVCS we recommend using the identifying hash (eg: the commit SHA, `da39a3ee5e6b4b0d3255bfef95601890afd80709`). You can let sentry-cli automatically determine this hash for supported version control systems with `sentry-cli releases propose-version`.
27-
- if you tag releases we recommend using the release tag prefixed with a product or package name (for example, `[email protected]`).
17+
Releases are created with the `sentry-cli releases new` command. It takes at the very least a version identifier that uniquely identifies the releases.
2818

2919
```bash
3020
#!/bin/sh
3121
sentry-cli releases new "$VERSION"
3222
```
3323

34-
Releases can also be auto created by different systems. For instance upon uploading a source map a release is automatically created. Likewise releases are created by some clients when an event for a release comes in.
24+
There are some release name restrictions and conventions to be aware of. [Learn more about naming releases](/product/releases/naming-releases/).
25+
26+
Releases can also be auto-created by different systems—for instance, upon uploading a source map, or by some clients when an event that is tagged with a release is ingested. Therefore, it's important to set the release name when building and deploying your application. Learn more in our [Releases](/platform-redirect/?next=/configuration/releases/) documentation.
27+
3528

3629
## Finalizing Releases
3730

docs/concepts/otlp/index.mdx

Lines changed: 215 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ description: "Learn how to send OpenTelemetry trace data directly to Sentry from
55
keywords: ["otlp", "otel", "opentelemetry"]
66
---
77

8-
<Include name="feature-available-alpha-otlp.mdx" />
8+
Sentry can ingest [OpenTelemetry](https://opentelemetry.io) traces and logs directly via the [OpenTelemetry Protocol](https://opentelemetry.io/docs/specs/otel/protocol/). Sentry does not support ingesting OTLP metrics.
99

10-
Sentry can ingest [OpenTelemetry](https://opentelemetry.io) traces directly via the [OpenTelemetry Protocol](https://opentelemetry.io/docs/specs/otel/protocol/). If you have an existing OpenTelemetry trace instrumentation, you can configure your OpenTelemetry exporter to send traces to Sentry directly. Sentry's OTLP ingestion endpoint is currently in development, and has a few known limitations:
10+
## OpenTelemetry Traces
11+
12+
<Include name="feature-available-alpha-tracing.mdx" />
13+
14+
If you have an existing OpenTelemetry trace instrumentation, you can configure your OpenTelemetry exporter to send traces to Sentry directly. Sentry's OTLP ingestion traces endpoint is currently in development, and has a few known limitations:
1115

1216
- Span events are not supported. All span events are dropped during ingestion.
13-
- Span links are partially supported. We ingest and display span links, but they cannot be searched, filtered, or aggregated. Links are are shown in the [Trace View](/concepts/key-terms/tracing/trace-view/).
17+
- Span links are partially supported. We ingest and display span links, but they cannot be searched, filtered, or aggregated. Links are shown in the [Trace View](/concepts/key-terms/tracing/trace-view/).
1418
- Array attributes are partially supported. We ingest and display array attributes, but they cannot be searched, filtered, or aggregated. Array attributes are shown in the [Trace View](/concepts/key-terms/tracing/trace-view/).
15-
- Sentry does not support ingesting OTLP metrics or OTLP logs.
1619

1720
The easiest way to configure an OpenTelemetry exporter is with environment variables. You'll need to configure the trace endpoint URL, as well as the authentication headers. Set these variables on the server where your application is running.
1821

@@ -39,8 +42,215 @@ const sdk = new NodeSDK({
3942
sdk.start();
4043
```
4144

42-
You can find the values of Sentry's OTLP endpoint and public key in your Sentry project settings.
45+
You can find the values of Sentry's OTLP traces endpoint and public key in your Sentry project settings.
46+
47+
1. Go to the [Settings > Projects](https://sentry.io/orgredirect/organizations/:orgslug/settings/projects/) page in Sentry.
48+
2. Select a project from the list.
49+
3. Go to the "Client Keys (DSN)" sub-page for this project under the "SDK Setup" heading.
50+
51+
## OpenTelemetry Logs
52+
53+
<Include name="feature-available-ea-logs.mdx" />
54+
55+
If you have an existing OpenTelemetry log instrumentation, you can configure your OpenTelemetry exporter to send logs to Sentry directly. Sentry's OTLP ingestion logs endpoint has the following known limitations:
56+
57+
- Array attributes are partially supported. We ingest and display array attributes, but they cannot be searched, filtered, or aggregated.
58+
59+
The easiest way to configure an OpenTelemetry exporter is with environment variables. You'll need to configure the trace endpoint URL, as well as the authentication headers. Set these variables on the server where your application is running.
60+
61+
```bash {filename: .env}
62+
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="___OTLP_LOGS_URL___"
63+
export OTEL_EXPORTER_OTLP_LOGS_HEADERS="x-sentry-auth=sentry sentry_key=___PUBLIC_KEY___"
64+
```
65+
66+
Alternatively, you can configure the OpenTelemetry Exporter directly in your application code. Here is an example with the OpenTelemetry Node SDK:
67+
68+
```typescript {filename: app.ts}
69+
import {
70+
LoggerProvider,
71+
BatchLogRecordProcessor,
72+
} from "@opentelemetry/sdk-logs";
73+
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
74+
75+
const logExporter = new OTLPLogExporter({
76+
url: "___OTLP_LOGS_URL___",
77+
headers: {
78+
"x-sentry-auth": "sentry sentry_key=___PUBLIC_KEY___",
79+
},
80+
});
81+
const loggerProvider = new LoggerProvider({
82+
processors: [new BatchLogRecordProcessor(logExporter)],
83+
});
84+
85+
const logger = loggerProvider.getLogger("default", "1.0.0");
86+
```
87+
88+
You can find the values of Sentry's OTLP logs endpoint and public key in your Sentry project settings.
4389

4490
1. Go to the [Settings > Projects](https://sentry.io/orgredirect/organizations/:orgslug/settings/projects/) page in Sentry.
4591
2. Select a project from the list.
4692
3. Go to the "Client Keys (DSN)" sub-page for this project under the "SDK Setup" heading.
93+
94+
## Distributed Tracing between Sentry Instrumentation and OpenTelemetry Instrumentation
95+
96+
If you have a frontend or services instrumented with the Sentry SDK, and you are also instrumenting with OpenTelemetry, you can use the `propagateTraceparent` exposed in the Sentry SDK to propagate the W3C Trace Context `traceparent` header to the OpenTelemetry instrumentation. This will allow you to continue traces from Sentry instrumented services.
97+
98+
The following SDKs support the `propagateTraceparent` option:
99+
100+
### JavaScript
101+
102+
- <LinkWithPlatformIcon
103+
platform="javascript.browser"
104+
label="Browser JavaScript"
105+
url="platforms/javascript/configuration/options/#propagateTraceparent"
106+
/>
107+
- <LinkWithPlatformIcon
108+
platform="javascript.angular"
109+
label="Angular"
110+
url="/platforms/javascript/guides/angular/configuration/options/#propagateTraceparent"
111+
/>
112+
- <LinkWithPlatformIcon
113+
platform="javascript.astro"
114+
label="Astro"
115+
url="/platforms/javascript/guides/astro/configuration/options/#propagateTraceparent"
116+
/>
117+
- <LinkWithPlatformIcon
118+
platform="javascript.aws-lambda"
119+
label="AWS Lambda"
120+
url="/platforms/javascript/guides/aws-lambda/configuration/options/#propagateTraceparent"
121+
/>
122+
- <LinkWithPlatformIcon
123+
platform="javascript.azure-functions"
124+
label="Azure Functions"
125+
url="/platforms/javascript/guides/azure-functions/configuration/options/#propagateTraceparent"
126+
/>
127+
- <LinkWithPlatformIcon
128+
platform="javascript.bun"
129+
label="Bun"
130+
url="/platforms/javascript/guides/bun/configuration/options/#propagateTraceparent"
131+
/>
132+
- <LinkWithPlatformIcon
133+
platform="javascript.cloudflare"
134+
label="Cloudflare"
135+
url="/platforms/javascript/guides/cloudflare/configuration/options/#propagateTraceparent"
136+
/>
137+
- <LinkWithPlatformIcon
138+
platform="javascript.connect"
139+
label="Connect"
140+
url="/platforms/javascript/guides/connect/configuration/options/#propagateTraceparent"
141+
/>
142+
- <LinkWithPlatformIcon
143+
platform="javascript.electron"
144+
label="Electron"
145+
url="/platforms/javascript/guides/electron/configuration/options/#propagateTraceparent"
146+
/>
147+
- <LinkWithPlatformIcon
148+
platform="javascript.ember"
149+
label="Ember"
150+
url="/platforms/javascript/guides/ember/configuration/options/#propagateTraceparent"
151+
/>
152+
- <LinkWithPlatformIcon
153+
platform="javascript.express"
154+
label="Express"
155+
url="/platforms/javascript/guides/express/configuration/options/#propagateTraceparent"
156+
/>
157+
- <LinkWithPlatformIcon
158+
platform="javascript.fastify"
159+
label="Fastify"
160+
url="/platforms/javascript/guides/fastify/configuration/options/#propagateTraceparent"
161+
/>
162+
- <LinkWithPlatformIcon
163+
platform="javascript.gatsby"
164+
label="Gatsby"
165+
url="/platforms/javascript/guides/gatsby/configuration/options/#propagateTraceparent"
166+
/>
167+
- <LinkWithPlatformIcon
168+
platform="javascript.gcp-functions"
169+
label="Google Cloud Functions"
170+
url="/platforms/javascript/guides/gcp-functions/configuration/options/#propagateTraceparent"
171+
/>
172+
- <LinkWithPlatformIcon
173+
platform="javascript.hapi"
174+
label="Hapi"
175+
url="/platforms/javascript/guides/hapi/configuration/options/#propagateTraceparent"
176+
/>
177+
- <LinkWithPlatformIcon
178+
platform="javascript.hono"
179+
label="Hono"
180+
url="/platforms/javascript/guides/hono/configuration/options/#propagateTraceparent"
181+
/>
182+
- <LinkWithPlatformIcon
183+
platform="javascript.koa"
184+
label="Koa"
185+
url="/platforms/javascript/guides/koa/configuration/options/#propagateTraceparent"
186+
/>
187+
- <LinkWithPlatformIcon
188+
platform="javascript.nestjs"
189+
label="Nest.js"
190+
url="/platforms/javascript/guides/nestjs/configuration/options/#propagateTraceparent"
191+
/>
192+
- <LinkWithPlatformIcon
193+
platform="javascript.node"
194+
label="Node.js"
195+
url="/platforms/javascript/guides/node/configuration/options/#propagateTraceparent"
196+
/>
197+
- <LinkWithPlatformIcon
198+
platform="javascript.nextjs"
199+
label="Next.js"
200+
url="/platforms/javascript/guides/nextjs/configuration/options/#propagateTraceparent"
201+
/>
202+
- <LinkWithPlatformIcon
203+
platform="javascript.nuxt"
204+
label="Nuxt"
205+
url="/platforms/javascript/guides/nuxt/configuration/options/#propagateTraceparent"
206+
/>
207+
- <LinkWithPlatformIcon
208+
platform="javascript.react"
209+
label="React"
210+
url="/platforms/javascript/guides/react/configuration/options/#propagateTraceparent"
211+
/>
212+
- <LinkWithPlatformIcon
213+
platform="javascript.react-router"
214+
label="React Router"
215+
url="/platforms/javascript/guides/react-router/configuration/options/#propagateTraceparent"
216+
/>
217+
- <LinkWithPlatformIcon
218+
platform="javascript.remix"
219+
label="Remix"
220+
url="/platforms/javascript/guides/remix/configuration/options/#propagateTraceparent"
221+
/>
222+
- <LinkWithPlatformIcon
223+
platform="javascript.solid"
224+
label="Solid"
225+
url="/platforms/javascript/guides/solid/configuration/options/#propagateTraceparent"
226+
/>
227+
- <LinkWithPlatformIcon
228+
platform="javascript.solidstart"
229+
label="SolidStart"
230+
url="/platforms/javascript/guides/solidstart/configuration/options/#propagateTraceparent"
231+
/>
232+
- <LinkWithPlatformIcon
233+
platform="javascript.svelte"
234+
label="Svelte"
235+
url="/platforms/javascript/guides/svelte/configuration/options/#propagateTraceparent"
236+
/>
237+
- <LinkWithPlatformIcon
238+
platform="javascript.sveltekit"
239+
label="SvelteKit"
240+
url="/platforms/javascript/guides/sveltekit/configuration/options/#propagateTraceparent"
241+
/>
242+
- <LinkWithPlatformIcon
243+
platform="javascript.tanstackstart-react"
244+
label="TanStack Start"
245+
url="/platforms/javascript/guides/tanstackstart-react/configuration/options/#propagateTraceparent"
246+
/>
247+
- <LinkWithPlatformIcon
248+
platform="javascript.vue"
249+
label="Vue"
250+
url="/platforms/javascript/guides/vue/configuration/options/#propagateTraceparent"
251+
/>
252+
- <LinkWithPlatformIcon
253+
platform="javascript.wasm"
254+
label="Wasm"
255+
url="/platforms/javascript/guides/wasm/configuration/options/#propagateTraceparent"
256+
/>

docs/organization/early-adopter-features/index.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ Limitations:
2222
- [Span Summary](/product/insights/overview/transaction-summary/#span-summary)
2323
- [Dynamic Alerts](/product/alerts/create-alerts/metric-alert-config/#dynamic-alerts)
2424
- [New Trace Explorer With Span Metrics](/product/explore/new-trace-explorer/)
25+
- [OpenTelemetry (OTLP) Logs Endpoint](/concepts/otlp/#opentelemetry-logs)

docs/organization/integrations/deployment/heroku/index.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
---
2-
title: Heroku
2+
title: Heroku (Legacy)
33
sidebar_order: 1
44
description: "Learn more about Sentry's Heroku integration, which allows you to create releases in Sentry when your Heroku app is deployed."
55
---
6-
7-
This integration needs to be set up in each project for which you wish to use it. It is maintained and supported by the [Sentry community](https://open.sentry.io/).
6+
## Deprecation Warning
7+
Heroku integration on Sentry is deprecated and will be removed on October 28, 2025. This plugin automatically tracked releases and deployments from your Heroku apps in Sentry, linking them to error tracking and performance monitoring.
8+
You can still install the Sentry Add-on on Heroku and use Sentry with Heroku by setting up [Releases](/product/releases/) yourself. Heroku integration on Sentry will no longer be available.
89

910
### Register the Add-on
1011

0 commit comments

Comments
 (0)