Skip to content

RUM-9755: Add Jetpack Compose Instrumentation documentation #29110

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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ambushwork
Copy link
Member

What does this PR do? What is the motivation?

Add documentation page to explain how to instrument Jetpack Compose manually or automatically using the Datadog Gradle Plugin.

Merge instructions

Merge readiness:

  • Release of dd-sdk-android 2.21.0
  • Release of dd-sdk-android-gradle-plugin 1.17.0

For Datadog employees:
Merge queue is enabled in this repo. Your branch name MUST follow the <name>/<description> convention and include the forward slash (/). Without this format, your pull request will not pass in CI, the GitLab pipeline will not run, and you won't get a branch preview. Getting a branch preview makes it easier for us to check any issues with your PR, such as broken links.

If your branch doesn't follow this format, rename it or create a new branch and PR.

To have your PR automatically merged after it receives the required reviews, add the following PR comment:

/merge

Additional notes

@github-actions github-actions bot added the Images Images are added/removed with this PR label May 2, 2025
@ambushwork ambushwork force-pushed the ylu/add-compose-instrumentation-doc branch 8 times, most recently from e3fd731 to a831dc4 Compare May 6, 2025 08:18
@github-actions github-actions bot added the Architecture Everything related to the Doc backend label May 6, 2025
@ambushwork ambushwork force-pushed the ylu/add-compose-instrumentation-doc branch 3 times, most recently from 319bef2 to 6fe16fd Compare May 6, 2025 10:23
@ambushwork ambushwork force-pushed the ylu/add-compose-instrumentation-doc branch from 6fe16fd to 91868a1 Compare May 6, 2025 12:02
@ambushwork ambushwork marked this pull request as ready for review May 6, 2025 15:06
@ambushwork ambushwork requested a review from a team as a code owner May 6, 2025 15:06
@maycmlee
Copy link
Contributor

maycmlee commented May 6, 2025

Created docs card for docs review: https://datadoghq.atlassian.net/browse/DOCS-10800

@maycmlee maycmlee added the editorial review Waiting on a more in-depth review label May 6, 2025
Copy link
Member

@0xnm 0xnm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, I left few suggestions

## Overview
If your application uses Jetpack Compose, you can instrument it manually or automatically with the Datadog Gradle Plugin. This enables Real User Monitoring (RUM) similar to what is available for Android Views.

<div class="alert alert-info"><p>Note: The minimum supported Kotlin version is 1.9.23.</p></div>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not 1.9.0?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might be compatible with even earlier version like 1.8, but the version that we've tested starts from 1.9.23.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My point here is that it is probably compatible with at least 1.9.20? Maybe we can check it?

Maybe it is even compatible with 1.9.0.

Not sure if we should check with 1.8.x at this point, but checking in the boundaries of the minor release makes sense imo.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As described in the [Setup section][2], declare the [Datadog Gradle Plugin][3] in your build script and apply it to each module you want to instrument.

<div class="alert alert-info"><p>
The Datadog Gradle Plugin scans @Composable functions and adds Semantics tags to their modifiers. These tags allow Datadog RUM to track user interactions on Compose components with the correct target information. The plugin also detects NavHost usage and listens to Jetpack Compose navigation events.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Datadog Gradle Plugin scans @Composable functions and adds Semantics tags to their modifiers. These tags allow Datadog RUM to track user interactions on Compose components with the correct target information. The plugin also detects NavHost usage and listens to Jetpack Compose navigation events.
The Datadog Gradle Plugin scans `@Composable` functions and adds `Semantics` tags to their modifiers. These tags allow Datadog RUM to track user interactions on Compose components with the correct target information. The plugin also detects `NavHost` usage and listens to Jetpack Compose navigation events.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put it in a "alert-info" which doesn't support Markdown here.

{{< /tabs >}}

## Automatic Instrumentation
As described in the [Setup section][2], declare the [Datadog Gradle Plugin][3] in your build script and apply it to each module you want to instrument.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need this sentence if we should how to setup Datadog Gradle Plugin just below?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it can be a good reminder here.

{{% /tab %}}
{{% tab "Kotlin" %}}
```kotlin
datadog{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
datadog{
datadog {

@ambushwork ambushwork force-pushed the ylu/add-compose-instrumentation-doc branch from 91868a1 to 8d09a89 Compare May 7, 2025 12:05
{{% /tab %}}
{{< /tabs >}}

### Step 2 - Enable actions tracking option in `RumConfiguration`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm slightly confused as to why this is a required step.
What if customer's don't want action tracking and just want view tracking?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More technically speaking, this is a structure limitation of our SDK, we need to make user call this API to let our dd-sdk-android-rum module knows that user has already imported dd-sdk-android-compose module in their app, then dd-sdk-android-rum can use the compose related logic to track actions.

If customer doesn't want Compose action tracking, they can just not call it. should I mention explicitly in this part?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Architecture Everything related to the Doc backend editorial review Waiting on a more in-depth review Images Images are added/removed with this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants