Skip to content

Commit c6a3061

Browse files
committed
* 'master' of https://github.com/getsentry/sentry-docs: Add "Data Collected" page for Godot SDK (and more) (#13533) Clarify FK docs (#13562) Clarify db index docs (#13561) Remove non-functioning video embed (#13557) Masinette integrations elba (#13503) Incorporate Uptime Monitors Into The Crons Management Page (#13507) feat(javascript): Add "Data Collected" (#13527) docs(relay): remove entries that are not scrubbed by default (#13555) flutter: Add note to app start integration (#13479) ref(flutter): move custom zone handling code snippet from init to troubleshooting (#13478) docs(python): add uv option to python install instructions (#13510) add docs for supabase integration (#13545) feat(native): add view hierarchy to develop docs (#13544) feat(autofix): Update autofix images (#13540) Ad alerts and dashboard page to new quickstart guide (#13522) Add data enrichment page to new onboarding guide (#13508) Add first onboarding guide to docs (#13462) (feat) Sentry MCP Documentation (#13524) feat(Capacitor): Migration guides for version 2 (#13022) docs(js): move API-related content from Manual Setup to APIs page (#13327)
2 parents 35a845c + 009287a commit c6a3061

File tree

113 files changed

+1236
-419
lines changed

Some content is hidden

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

113 files changed

+1236
-419
lines changed

develop-docs/backend/application-domains/database-migrations/index.mdx

+4-3
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,12 @@ generally prefer that, since it averages the load out over a longer period of ti
135135

136136
### Indexes
137137

138-
We prefer to create indexes on large existing tables with `CREATE INDEX CONCURRENTLY`. Our migration framework will do this automatically when creating
139-
a new index. Note that when `CONCURRENTLY` is used we can't run the migration in a transaction, so it's important to use `atomic = False` to run these.
138+
These are automatically handled by the migration framework, you can just create them on the Django model and generate the migration.
140139

141140
When adding indexes to large tables you should use a `is_post_deployment` migration as creating the index could take longer than the migration statement timeout of 5s.
142141

142+
Note: These are created using `CONCURRENTLY`, so it's important to not set `atomic = True` for migrations that contain indexes. This is disabled by default.
143+
143144
### Deleting columns
144145

145146
This is complicated due to our deploy process. When we deploy, we run migrations, and then push out the application code, which takes a while. This means that if we just delete a column or model, then code in sentry will be looking for those columns/tables and erroring until the deploy completes. In some cases, this can mean Sentry is hard down until the deploy is finished.
@@ -419,7 +420,7 @@ This second PR will contain only the migration and related boilerplate.
419420

420421
### Foreign Keys
421422

422-
Creating foreign keys is mostly fine, but for some large/busy tables like `Project`, `Group` it can cause problems due to difficulties in acquiring a lock. You can still create a Django level foreign key though, without creating a database constraint. To do so, set `db_constraint=False` when defining the key.
423+
Creating foreign keys is mostly fine, but for some large/busy tables like `Project` and `Group` the migration can fail due to difficulties in acquiring a lock on the table. The general procedure here is to retry the migration until it goes through - The migration framework adds a lock acquisition timeout, so it's safe to do this.
423424

424425
### Renaming Tables
425426

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
title: Attachments
3+
sidebar_order: 20
4+
---
5+
6+
## View Hierarchy
7+
The Native SDK allows you to attach a `view-hierarchy.json` file that follows the structure described in [RFC#33](https://github.com/getsentry/rfcs/blob/main/text/0033-view-hierarchy.md). This is mainly meant for downstream SDKs (e.g., [sentry-godot](https://github.com/getsentry/sentry-godot/pull/143)).
8+
9+
10+
To add a view hierarchy attachment, the path to the file has to be configured when initializing the SDK. It will monitor the file and upload it along with any event or crash that is sent to Sentry:
11+
12+
```c
13+
sentry_options_add_view_hierarchy(options, "./view-hierarchy.json");
14+
```
15+
16+
17+
<Alert>
18+
When using `Crashpad` as the crash-capturing backend in the Native SDK, the file must have the exact name `view-hierarchy.json` to be parsed correctly by the ingestion pipeline.
19+
</Alert>
20+
21+
Along with the file appearing in the _Attachments_ tab, it is visualized on the issue as such:
22+
23+
<Include name="common-imgs/viewhierarchy-example" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: Elba
3+
sidebar_order: 1
4+
description: "Learn about Sentry's Elba integration."
5+
---
6+
7+
This integration connects Sentry with Elba's access review platform to provide organizations with a comprehensive solution for managing and reviewing user access within Sentry.
8+
This helps users enhance security, ensure compliance, and improve operational efficiency by providing:
9+
10+
- Risk Reduction: Regular access reviews help identify and eliminate unnecessary or unauthorized access, reducing the risk of data breaches and insider threats.
11+
- Proactive Management: Early detection of permission anomalies allows for prompt corrective actions.
12+
13+
It connects to Sentry's API to fetch detailed information about organization members, including their roles, team memberships, and permission levels. The retrieved data is presented within Elba's platform, where administrators can systematically review each user's access rights. And, The platform analyzes user permissions to identify potential security risks, such as excessive privileges or outdated access, and provides recommendations for remediation.
14+
15+
16+
This integration is maintained and supported by Elba. For more details, or questions, feel free to contact [email protected].
17+
18+
## Install and Configure
19+
20+
<Alert>
21+
22+
Sentry Owner, Manager, or Admin permissions are required to install this integration.
23+
24+
</Alert>
25+
26+
1. Navigate to **Settings > Integrations > Elba**
27+
28+
2. Follow the full [Elba installation instructions](https://sentry.elba.security/install).

docs/organization/integrations/compliance/index.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Compliance
33
sidebar_order: 95
44
description: "Learn more about Sentry's compliance integrations."
55
---
6-
6+
- [Elba](/organization/integrations/compliance/elba/)
77
- [Truto](/organization/integrations/compliance/truto/)
88
- [Vanta](/organization/integrations/compliance/vanta/)
99
- [Vanta EU](/organization/integrations/compliance/vanta-eu/)

docs/organization/integrations/index.mdx

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ For more details, see the [full Integration Platform documentation](/organizatio
124124

125125
| Integration | API |
126126
| ------------------------------------------------ | --- |
127+
| [Elba](/organization/integrations/compliance/elba/) | X |
127128
| [Truto](/organization/integrations/compliance/truto/) | X |
128129
| [Vanta](/organization/integrations/compliance/vanta/) | X |
129130
| [Vanta EU](/organization/integrations/compliance/vanta-eu/) | X |

docs/platforms/dart/guides/flutter/index.mdx

-48
Original file line numberDiff line numberDiff line change
@@ -96,54 +96,6 @@ Future<void> main() async {
9696
}
9797
```
9898

99-
```dart {tabTitle:With custom zone}
100-
import 'package:flutter/widgets.dart';
101-
import 'package:sentry_flutter/sentry_flutter.dart';
102-
103-
Future<void> main() async {
104-
// The SDK creates it's own custom zone on web for automatic error and breadcrumb tracking on web.
105-
// This could lead to zone mismatch errors if you needed to call `WidgetsBinding.ensureInitialized()` before Sentry in a cusom zone.
106-
// With `Sentry.runZonedGuarded` you still get convenient auto error and breadcrumb tracking and can also call `WidgetsBinding.ensureInitialized()` before Sentry.
107-
Sentry.runZonedGuarded(() async {
108-
WidgetsBinding.ensureInitialized();
109-
110-
// Errors before init will not be handled by Sentry
111-
112-
await SentryFlutter.init(
113-
(options) {
114-
options.dsn = '___PUBLIC_DSN___';
115-
// Adds request headers and IP for users, for more info visit:
116-
// https://docs.sentry.io/platforms/dart/guides/flutter/data-management/data-collected/ for more info
117-
options.sendDefaultPii = true;
118-
// ___PRODUCT_OPTION_START___ performance
119-
// Set tracesSampleRate to 1.0 to capture 100% of transactions for tracing.
120-
// We recommend adjusting this value in production.
121-
options.tracesSampleRate = 1.0;
122-
// ___PRODUCT_OPTION_END___ performance
123-
// ___PRODUCT_OPTION_START___ profiling
124-
// The sampling rate for profiling is relative to tracesSampleRate
125-
// Setting to 1.0 will profile 100% of sampled transactions:
126-
// Note: Profiling alpha is available for iOS and macOS since SDK version 7.12.0
127-
options.profilesSampleRate = 1.0;
128-
// ___PRODUCT_OPTION_END___ profiling
129-
},
130-
appRunner: () => runApp(
131-
SentryWidget(
132-
child: MyApp(),
133-
),
134-
),
135-
);
136-
} (error, stackTrace) {
137-
// Automatically sends errors to Sentry, no need to do any
138-
// captureException calls on your part.
139-
// On top of that, you can do your own custom stuff in this callback.
140-
});
141-
142-
// you can also configure SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and
143-
// SENTRY_ENVIRONMENT via Dart environment variable (--dart-define)
144-
}
145-
```
146-
14799
## Verify
148100

149101
Verify that your app is sending events to Sentry by adding the following snippet, which includes an intentional error. You should see the error reported in Sentry within a few minutes.

docs/platforms/dart/guides/flutter/manual-setup.mdx

-48
Original file line numberDiff line numberDiff line change
@@ -62,54 +62,6 @@ Future<void> main() async {
6262
}
6363
```
6464

65-
```dart {tabTitle:With custom zone}
66-
import 'package:flutter/widgets.dart';
67-
import 'package:sentry_flutter/sentry_flutter.dart';
68-
69-
Future<void> main() async {
70-
// The SDK creates it's own custom zone on web for automatic error and breadcrumb tracking on web.
71-
// This could lead to zone mismatch errors if you needed to call `WidgetsBinding.ensureInitialized()` before Sentry in a cusom zone.
72-
// With `Sentry.runZonedGuarded` you still get convenient auto error and breadcrumb tracking and can also call `WidgetsBinding.ensureInitialized()` before Sentry.
73-
Sentry.runZonedGuarded(() async {
74-
WidgetsBinding.ensureInitialized();
75-
76-
// Errors before init will not be handled by Sentry
77-
78-
await SentryFlutter.init(
79-
(options) {
80-
options.dsn = '___PUBLIC_DSN___';
81-
// Adds request headers and IP for users, for more info visit:
82-
// https://docs.sentry.io/platforms/dart/data-management/data-collected/
83-
options.sendDefaultPii = true;
84-
// ___PRODUCT_OPTION_START___ performance
85-
// Set tracesSampleRate to 1.0 to capture 100% of transactions for tracing.
86-
// We recommend adjusting this value in production.
87-
options.tracesSampleRate = 1.0;
88-
// ___PRODUCT_OPTION_END___ performance
89-
// ___PRODUCT_OPTION_START___ profiling
90-
// The sampling rate for profiling is relative to tracesSampleRate
91-
// Setting to 1.0 will profile 100% of sampled transactions:
92-
// Note: Profiling alpha is available for iOS and macOS since SDK version 7.12.0
93-
options.profilesSampleRate = 1.0;
94-
// ___PRODUCT_OPTION_END___ profiling
95-
},
96-
appRunner: () => runApp(
97-
SentryWidget(
98-
child: MyApp(),
99-
),
100-
),
101-
);
102-
} (error, stackTrace) {
103-
// Automatically sends errors to Sentry, no need to do any
104-
// captureException calls on your part.
105-
// On top of that, you can do your own custom stuff in this callback.
106-
});
107-
108-
// you can also configure SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and
109-
// SENTRY_ENVIRONMENT via Dart environment variable (--dart-define)
110-
}
111-
```
112-
11365
## Verify
11466

11567
Verify that your app is sending events to Sentry by adding the following snippet, which includes an intentional error. You should see the error reported in Sentry within a few minutes.

docs/platforms/dart/guides/flutter/troubleshooting.mdx

+33-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ If you need help solving issues with Sentry's Flutter SDK, you can read the edge
88

99
## Support 16 KB Page Sizes on Android
1010

11-
Starting with Android 15, AOSP supports devices with a 16 KB page size. If your app uses NDK libraries (directly or via an SDK), youll need to rebuild it for compatibility with these devices.
11+
Starting with Android 15, AOSP supports devices with a 16 KB page size. If your app uses NDK libraries (directly or via an SDK), you'll need to rebuild it for compatibility with these devices.
1212

1313
Update to Sentry Flutter SDK version `8.11.0` and above order to support 16 KB page sizes on Android devices.
1414

@@ -73,6 +73,38 @@ This is an [issue](https://github.com/flutter/flutter/issues/135245) with Flutte
7373

7474
For prior versions, you can work around this by configuring the SDK only to take screenshots when the app is in the `resumed` state. To do this, set `SentryFlutterOptions.attachScreenshotOnlyWhenResumed` to `true`.
7575

76+
## Zone Mismatch Error on Web
77+
78+
By default, the Sentry Flutter SDK creates a custom zone on web for automatic error and breadcrumb tracking. This can lead to zone mismatch errors when your application calls `WidgetsBinding.ensureInitialized()` before initializing Sentry.
79+
80+
To resolve this issue, use the `Sentry.runZonedGuarded` method to initialize both your application and Sentry within the same zone. This approach ensures proper zone consistency throughout your application:
81+
82+
```dart
83+
import 'package:flutter/widgets.dart';
84+
import 'package:sentry_flutter/sentry_flutter.dart';
85+
86+
Future<void> main() async {
87+
Sentry.runZonedGuarded(() async {
88+
WidgetsBinding.ensureInitialized();
89+
90+
await SentryFlutter.init(
91+
(options) {
92+
// your config...
93+
},
94+
appRunner: () => runApp(
95+
SentryWidget(
96+
child: MyApp(),
97+
),
98+
),
99+
);
100+
} (error, stackTrace) {
101+
// Note: Errors in this zone are already sent to Sentry automatically.
102+
// This callback lets you add your own custom error handling (like logging)
103+
// in addition to Sentry's reporting.
104+
});
105+
}
106+
```
107+
76108
## Using Flutter Multi-view for Web
77109

78110
Multi-view embedding was introduced in Flutter 3.24. You'll find a detailed guide about it in the [Flutter docs](https://docs.flutter.dev/platform-integration/web/embedding-flutter-web) .

docs/platforms/godot/configuration/options.mdx

+6
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ If enabled, the SDK will attach the Godot log file to the event.
9696

9797
</ConfigKey>
9898

99+
<ConfigKey name="attach-screenshot">
100+
101+
If enabled, the SDK will try to take a screenshot and attach it to the event.
102+
103+
</ConfigKey>
104+
99105
## Error Logger Options
100106

101107
<ConfigKey name="logger-enabled">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: Data Collected
3+
description: "See what data is collected by the Sentry SDK."
4+
sidebar_order: 1
5+
---
6+
7+
Sentry takes data privacy very seriously and has default settings in place that prioritize data safety, especially when it comes to personally identifiable information (PII) data. When you add the Sentry SDK to your application, you allow it to collect data and send it to Sentry during the runtime of your application.
8+
9+
The category types and amount of data collected vary, depending on the integrations you've enabled in the Sentry SDK. Here's a list of data categories the Sentry Native SDK collects:
10+
11+
## User Information
12+
13+
By default, the Sentry SDK doesn't send any information about users, such as email address, user ID, or username. However, if the <PlatformLink to="/configuration/options/#send-default-pii">`send_default_pii` option</PlatformLink> is enabled, Sentry backend services will infer the user's IP address based on the incoming request.
14+
15+
You can also set user information from code:
16+
17+
```GDScript
18+
var user := SentryUser.new()
19+
user.id = "custom_id"
20+
user.email = "[email protected]"
21+
user.username = "bob"
22+
user.ip_address = "127.0.0.1"
23+
SentrySDK.set_user(user)
24+
```
25+
26+
## Device Information
27+
28+
The Sentry SDK collects information about the device, such as the name, version and build of your operating system or Linux distribution. This information is sent to Sentry by default.
29+
30+
## Screenshots
31+
32+
The <PlatformLink to="/enriching-events/screenshots">screenshot feature</PlatformLink> is disabled by default. If you choose to enable this feature in options, any screenshots captured may contain sensitive data visible in the application at the time of the error.
33+
34+
## Godot Log File
35+
36+
By default, the Sentry SDK automatically attaches the Godot log file to events it sends. Since this log file contains all messages printed in your code and by the engine itself, it may inadvertently include sensitive information. To enhance privacy protection, you can disable the <PlatformLink to="/configuration/options/#attach-log">`attach_log` option</PlatformLink> in the Godot Project Settings.
37+
38+
## Thread Stack Information
39+
40+
At the time of a crash, the stack of each thread is collected and sent to Sentry as part of the Minidump snapshot for `crashpad` backend. This information is sent to Sentry by default, but dropped after processing the event in the backend.
41+
42+
These files are not stored by default, but you can <PlatformLink to="/data-management/store-minidumps-as-attachments/">enable Minidump Storage</PlatformLink> in the Sentry organization or project settings.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: "Store Minidumps As Attachments"
3+
description: "Learn how to enable storing minidumps as attachments in issue details."
4+
sidebar_order: 90
5+
---
6+
7+
8+
<Include name="store-minidumps-as-attachments-intro" />
9+
<Include name="store-minidumps-as-attachments-configuration" />
Loading
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: "Screenshots"
3+
description: "Learn more about taking screenshots when an error occurs. Sentry pairs the screenshot with the original event, giving you additional insight into issues."
4+
---
5+
6+
Sentry makes it possible to automatically take a screenshot and include it as an attachment when a user experiences an error, an exception or a crash.
7+
8+
This feature is only available for SDKs with a user interface, like the ones for mobile and desktop applications. It's also limited by whether taking a screenshot is possible or not. For example, in some environments, like native iOS, taking a screenshot requires the UI thread, which often isn't available in the event of a crash. Another example where a screenshot might not be available is when the event happens before the screen starts to load. So inherently, this feature is a best effort solution.
9+
10+
## Enabling Screenshots
11+
12+
Because screenshots may contain <PlatformLink to="/data-management/sensitive-data/">PII</PlatformLink>, they are an opt-in feature. To attach screenshots to your events, navigate to **Project Settings > Sentry > Options** and enable the **Attach Screenshot** option:
13+
14+
![Enabling Screenshots in Project Settings](./img/project-settings.png)
15+
16+
Or, like so, if you're <PlatformLink to="/configuration/options/">configuring things programatically</PlatformLink>:
17+
18+
```GDScript
19+
extends SentryConfiguration
20+
21+
func _configure(options: SentryOptions):
22+
options.attach_screenshot = true
23+
```
24+
25+
## Viewing Screenshots
26+
27+
If one is available, you'll see a thumbnail of the screenshot when you click on a specific issue from the [**Issues**](https://demo.sentry.io/issues/) page.
28+
29+
![Screenshot Thumbnail](./img/screenshot-thumbnail.png)
30+
31+
You can see an overview of all the screenshots for the issue as well as associated events by pressing the "View All" button.
32+
33+
![Screenshots List Example](./img/screenshot-list-example.png)

0 commit comments

Comments
 (0)