You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 5feb785
Browse filesBrowse the repository at this point in the historyBrowse files
docs(rum): restore Flutter SDK nav and sync it to the 0.1.3 release
The Flutter pages were hidden from navigation while the console release was
pending. fc-saas-rum #255 is on main and the console has shipped, so restore
the zh/en sidebar groups.
The pages themselves had drifted from what customers now get:
- They pinned 0.1.0 and instructed readers to depend on a git source,
"pending pub.dev publication". The package has been on pub.dev for some
time and is now at 0.1.3, so the install step is a plain hosted
dependency. 0.1.3 is also a floor, not a preference: earlier releases fail
`flutter build apk --release` in R8, which is the first command the
symbolication instructions ask for.
- The HTTP tracking companion was named `datadog_tracking_http_client` and
described as needing `dependency_overrides`. It is published as
`flashcat_tracking_http_client` and resolves normally.
- The symbol upload command passed `--version`, which the CLI does not
accept, so the documented command failed. It is `--release-version`, the
symbols directory is positional, and FLASHCAT_API_KEY is required.
- Three places stated that service and version must match the SDK
initialization or stacks cannot be resolved. Symbol lookup keys on the
build's build ID alone; service and version only affect how the file is
grouped in the console. The old wording sent readers chasing a mismatch
that does not break anything, while omitting the thing that does: a new
build ID on every code change, so symbols must be uploaded per release.
Also removed wording that only makes sense internally -- roadmap phrasing,
references to the upstream project, and the reasoning behind console-side
decisions -- since these pages are read by integrators.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The `version` and `service` used at upload time must exactly match the values in the SDK initialization. Otherwise the console can receive crash events but cannot resolve stack frames back to source locations. Make symbol upload part of your release build process.
104
-
</Warning>
103
+
<Note>
104
+
Symbol files are matched to crash events by the build's **build ID**; `service` and `release-version` take no part in the lookup. Symbolication therefore still works when they differ from the SDK initialization values — the difference only affects how the file is grouped and filtered in the console's Source code mapping list. Keeping them aligned is still recommended, and Flutter's build-number suffix (for example `1.2.3+45`) is an easy way for them to drift apart.
105
+
106
+
What must match is the build ID: the `app.<platform>-<arch>.symbols` file produced by `--split-debug-info`, the `libapp.so` inside the APK, and the Build ID column in the console's Source code mapping → Flutter list must all be identical. Every change to your Dart code produces a new build ID, so **symbol upload has to be part of every release build** — otherwise that version's stacks silently degrade to unresolved.
Copy file name to clipboardExpand all lines: en/rum/sdk/flutter/compatible.mdx
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ This page describes the Flutter SDK support scope and current limits so you can
10
10
11
11
| Item | Support |
12
12
|------|----------|
13
-
| SDK version |`flashcat_flutter_plugin` 0.1.0|
13
+
| SDK version |`flashcat_flutter_plugin` 0.1.3|
14
14
| Target platforms |**iOS and Android** (Flutter Web / Desktop not supported) |
15
15
| Flutter / Dart | Flutter ≥ 3.0, Dart ≥ 3.0 |
16
16
| iOS | Deployment target ≥ 12.0 |
@@ -24,11 +24,11 @@ This page describes the Flutter SDK support scope and current limits so you can
24
24
| Package | pub name | Description |
25
25
|------|------|------|
26
26
| RUM / Core / Crash |`flashcat_flutter_plugin`| Initialization, configuration, RUM (view / action / resource / error / session), and native crash collection |
27
-
| HTTP tracking |`datadog_tracking_http_client`| Automatically records `dart:io` / `http` requests as resources and injects trace headers (requires `dependency_overrides`, not v1 core)|
27
+
| HTTP tracking |`flashcat_tracking_http_client`| Automatically records `dart:io` / `http` requests as resources and injects trace headers |
28
28
| WebView tracking |`flashcat_webview_tracking`| Correlates RUM data inside WebViews |
29
29
30
30
<Note>
31
-
The Dart class names still follow the upstream `Datadog*` naming; only the site enum `FlashcatSite` (`.cn` default / `.staging`) and the package name are rebranded. The `DatadogSdk`, `DatadogConfiguration`, `DatadogRumConfiguration`, `DatadogNavigationObserver`, and other classes in the documentation examples are the actual exported class names.
31
+
Dart class names begin with `Datadog*`, and the site enum is `FlashcatSite` (`.cn` default / `.staging`). The `DatadogSdk`, `DatadogConfiguration`, `DatadogRumConfiguration`, `DatadogNavigationObserver`, and other classes in the documentation examples are the actual exported class names.
32
32
</Note>
33
33
34
34
## Supported automatic collection
@@ -37,7 +37,7 @@ The Dart class names still follow the upstream `Datadog*` naming; only the site
37
37
|------|----------|------|
38
38
| Automatic views | Supported | Requires a `DatadogNavigationObserver` on `MaterialApp`|
39
39
| Automatic actions | Supported | Requires wrapping the subtree with `RumUserActionDetector`; `trackFrustrations` is enabled by default |
40
-
| Automatic resources | Supported (requires companion package) | Through `enableHttpTracking()` from `datadog_tracking_http_client`|
40
+
| Automatic resources | Supported (requires companion package) | Through `enableHttpTracking()` from `flashcat_tracking_http_client`; 0.1.0 has a known issue, see the limits below|
41
41
| Unhandled exceptions | Supported | When using `DatadogSdk.runApp`, automatically takes over `FlutterError.onError` / `PlatformDispatcher.onError`|
| Distributed tracing | Supported | Injects W3C `traceparent` for hosts that match `firstPartyHosts`|
@@ -47,12 +47,12 @@ The Dart class names still follow the upstream `Datadog*` naming; only the site
47
47
| Limit | Description |
48
48
|------|------|
49
49
| Platform scope | iOS / Android only; Flutter Web and Desktop are not supported |
50
-
| Logs |v1 does not support log reporting (`DatadogLoggingConfiguration` is a no-op) |
51
-
| Session Replay | Not supported in v1 (`datadog_session_replay` is a preview, not in the core scope) |
52
-
|Companion package naming|`datadog_tracking_http_client` / `datadog_session_replay` still declare their dependency on `datadog_flutter_plugin: ^3.0.0`, so integrating this fork requires `dependency_overrides`|
53
-
| dio / gql / grpc | The corresponding interceptor packages are not yet adapted to this fork in v1|
54
-
| Page performance metrics |`reportFlutterPerformance` is disabled by default; the console performance page is currently hidden for Flutter to avoid showing zero-value empty data|
55
-
|pub.dev publication|Official publication is being confirmed; git dependencies are currently recommended|
50
+
| Logs |Log reporting is not supported (`DatadogLoggingConfiguration` is a no-op) |
51
+
| Session Replay | Not supported |
52
+
|Known resource-collection issue|In `flashcat_tracking_http_client` 0.1.0, a request whose response body is consumed with `drain()` or `asFuture()` produces no resource event — both replace the `onDone` / `onError` handlers the SDK registers. Use `toList()`, `transform()`, or a `listen()` with your own `onDone` to work around it|
53
+
| dio / gql / grpc | The corresponding interceptor packages are not supported|
54
+
| Page performance metrics |`reportFlutterPerformance` is disabled by default |
55
+
|Minimum version|Use `flashcat_flutter_plugin` 0.1.3 or later; on earlier versions `flutter build apk --release` fails in R8|
56
56
57
57
## Symbolication compatibility
58
58
@@ -65,5 +65,5 @@ Flutter crash stacks can contain both Dart frames and native (iOS / Android) fra
65
65
| Android Native | mapping files |
66
66
67
67
<Tip>
68
-
Symbol files are uploaded through the FlashCat CLI, and the `version` used at upload time must match the `version` in the SDK initialization. Otherwise the console can receive crash events but cannot resolve the stacks.
68
+
Symbol files are uploaded through the FlashCat CLI. Symbols are matched to crash events by the build's build ID, so you need to upload a fresh set of symbol files after every code change.
The Flutter SDK wraps the native iOS / Android SDKs and provides RUM capabilities through `flashcat_flutter_plugin`. After initialization, the SDK reports the application's views, user actions, network requests, errors, and crashes to Flashduty RUM, with `source: "flutter"` identifying the data source.
8
8
9
9
<Info>
10
-
The current SDK version is `0.1.0` and supports only the **iOS and Android** platforms (Flutter Web is not supported). The Dart class names still follow the upstream `Datadog*`naming (such as `DatadogSdk` and `DatadogConfiguration`); only the package name `flashcat_flutter_plugin`and the site enum `FlashcatSite` are rebranded. v1 does not yet include Logs, Session Replay, or the dio / gql / grpc companion packages.
10
+
The current SDK version is `0.1.3` and supports the **iOS and Android** platforms (Flutter Web is not supported). Dart class names begin with `Datadog*` (such as `DatadogSdk` and `DatadogConfiguration`), and the site enum is `FlashcatSite`. Logs, Session Replay, and the dio / gql / grpc interceptor packages are not supported.
11
11
</Info>
12
12
13
13
## Prerequisites
@@ -23,18 +23,15 @@ Before integrating the SDK, complete these steps:
23
23
24
24
Add `flashcat_flutter_plugin` to `pubspec.yaml`, then run `flutter pub get`.
25
25
26
-
<Note>
27
-
The pub.dev publication of `flashcat_flutter_plugin` is still being confirmed. To keep the dependency resolvable, the example below uses a git source. Once it is officially published to pub.dev, you can switch to the hosted form `flashcat_flutter_plugin: ^0.1.0`.
Use `0.1.3` or later. On earlier versions, `flutter build apk --release` — including the `--obfuscate` build that crash symbolication requires — fails in R8 with `Missing class org.bouncycastle.jsse.BCSSLParameters`. From `0.1.3` the required ProGuard rules ship with the package and no app-side configuration is needed.
33
+
</Warning>
34
+
38
35
## Initialize the SDK
39
36
40
37
We recommend initializing in `main()`, before `runApp`. When you start the application with `DatadogSdk.runApp`, the SDK automatically takes over `FlutterError.onError` and `PlatformDispatcher.instance.onError`, so it can collect unhandled exceptions without manual wiring.
Automatic network collection is provided by the separate `datadog_tracking_http_client` package and enabled through the `enableHttpTracking()` extension method on the configuration object. It globally replaces `HttpClient`, records `dart:io` / `http` requests as RUM resources, and injects W3C trace headers for hosts that match `firstPartyHosts`.
119
+
Automatic network collection is provided by the separate `flashcat_tracking_http_client` package and enabled through the `enableHttpTracking()` extension method on the configuration object. It globally replaces `HttpClient`, records `dart:io` / `http` requests as RUM resources, and injects W3C trace headers for hosts that match `firstPartyHosts`.
120
+
121
+
```yaml pubspec.yaml
122
+
dependencies:
123
+
flashcat_tracking_http_client: ^0.1.0
124
+
```
123
125
124
126
```dart
125
127
final configuration = DatadogConfiguration(
@@ -132,7 +134,7 @@ final configuration = DatadogConfiguration(
132
134
```
133
135
134
136
<Warning>
135
-
`datadog_tracking_http_client`currently declares its dependency on `datadog_flutter_plugin` (`^3.0.0`), which cannot be resolved directly with this fork's `flashcat_flutter_plugin` 0.1.0. When you enable network collection, add a `dependency_overrides` entry in `pubspec.yaml` pointing to this fork. This capability is not part of the v1 core scope and can be integrated as needed.
137
+
**Known issue (`flashcat_tracking_http_client` 0.1.0)**: a request produces no resource event if its response body is consumed with `drain()` or `asFuture()`. Both replace the `onDone` / `onError` callbacks the SDK registers on the response stream, so resource collection starts but never finishes — silently, with no error reported. Use `toList()`, `transform()`, or a `listen()` with your own `onDone` instead.
136
138
</Warning>
137
139
138
140
## Identify users
@@ -166,7 +168,7 @@ try {
166
168
```
167
169
168
170
<Note>
169
-
Crash and error stacks require uploaded symbol files to resolve back to source locations. Flutter symbols, iOS dSYM, and Android mapping files are uploaded through the FlashCat CLI, and the `version` used at upload time must match the `version` in the SDK initialization. See <a href="/en/rum/sdk/flutter/advanced-config">Advanced configuration</a>.
171
+
Crash and error stacks require uploaded symbol files to resolve back to source locations. Flutter symbols, iOS dSYM, and Android mapping files are uploaded through the FlashCat CLI; every code change produces a new build, so a fresh set of symbol files has to be uploaded for it. See <a href="/en/rum/sdk/flutter/advanced-config">Advanced configuration</a>.
0 commit comments