Skip to content

feat(android-nav3): Android Nav3 integration - #6128

Merged
0xadam-brown merged 7 commits into
mainfrom
feat/sentry-nav3-effect-stack
Sep 29, 2026
Merged

0xadam-brown merged 7 commits into
mainfrom
feat/sentry-nav3-effect-stack

Conversation

@0xadam-brown

@0xadam-brown 0xadam-brown commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

No code needs to be reviewed for this PR as it's already been reviewed in the PRs stacked on top of it and hasn't been modified since.

PR Stack (Android Nav3)


📜 Description

This is the collection branch for the Android Nav3 stack.

It carries no feature code itself. The implementation is split across the stacked PRs below so the
module scaffold, route modeling, observer layer, and Compose-facing effect can be reviewed
independently and merged forward through the branch chain before this collection branch is
squash-merged into main.

💡 Motivation and Context

Nav3 support is large enough that reviewing it as one PR would hide the architectural boundaries.
This collection branch gives us a stable top-level PR for the whole effort while the stack lands in
reviewable steps.

addresses: JAVA-274

⚠️ Does not make Nav3 support public

Note that this PR stack does not make Nav3 support public. (While API entry points use the public keyword, they remain @ApiStatus.Internal. The former is required so that we can post subsequent PRs for the Nav3 sample app.)

Once approved for public release, we'll remove the @ApiStatus.Internal annotations and include a proper CHANGELOG + cross references to official Sentry Nav3 docs.

💚 How did you test it?

This branch is intentionally empty apart from the collection commit. Each stacked PR contains its
own verification details.

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.
  • Public API changes reviewed by another Mobile SDK team member or implemented according to the develop docs spec.

🔮 Next steps

  • Create PRs for the Nav3 sample app.
  • Remove the @ApiStatus.Internal annotations from SentryNavEffect, SentryNavOptions, RouteNameExtractor, and RouteArgumentsExtractor once we're ready to release publicly + add an appropriate CHANGELOG entry + publish the module via craft (link).
  • sentry-docs

#skip-changelog

@github-actions

github-actions Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor
Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against a4d1f06

@sentry

sentry Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
SDK Size io.sentry.tests.size 8.58.0 (1) release

⚙️ sentry-android Build Distribution Settings

…274) (#6129)

Introduce a new `sentry-android-navigation3` module in connection with our Nav3 support.
…4) (#6130)

Introduce RouteTranslator as part of Nav3 support. It uses host app-provided extractors to convert back stack entries into Routes suitable for use in Sentry Nav3 data.
…ns (JAVA-274) (#6131)

Introduce BackStackObserver, which is responsible for converting Nav3 back stack changes into breadcrumbs, scope state, and navigation transactions.
Introduce SentryNavEffect as our primary entry point for Nav3 support. 

The initial aim is to provide parity with our existing Nav2 support. That means generating nav transactions, breadcrumbs, and screen names as the user navigates through the app. We also record up to N frames of the host app's back stack in current scope context. (N is 10 by default; it and other Sentry data configs can be adjusted via SentryNavOptions.) 

Similar to Nav2, we assume each tracked navigation destination represents the current screen's contents. We don't (yet) support the notion of Scenes (https://developer.android.com/guide/navigation/navigation-3/scenes) or multipane layouts. (Support for each is tracked under [JAVA-590](https://linear.app/getsentry/issue/JAVA-590/nav3-multipane-support).

For more details, see the KDocs to SentryNavEffect, SentryNavOptions, RouteNameExtractor, and RouteArgumentsExtractor.

SentryNavEffect is experimental and (for now) internal. We'll make it public in a later commit when we're ready to release.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit ecb6243. Configure here.

Comment thread sentry-android-navigation3/build.gradle.kts
@0xadam-brown
0xadam-brown force-pushed the feat/sentry-nav3-effect-stack branch from ecb6243 to 668faac Compare September 28, 2026 12:25
#6137)

Make SentryNavEffect and related APIs (technically) public so they can be called from the Nav3 sample app. 

For now, keep them marked as @ApiStatus.Internal until we actually release Nav3 support (at which point we'll include an appropriate CHANGELOG entry).
@0xadam-brown
0xadam-brown force-pushed the feat/sentry-nav3-effect-stack branch from 668faac to da14227 Compare September 28, 2026 12:28
@0xadam-brown

Copy link
Copy Markdown
Member Author

Pushes were me getting my clanker to add #6137 to the commit list. All code is identical to what was previously reviewed + approved.

@0xadam-brown 0xadam-brown added the ship-it PR is ready to merge from a reviewer perspective label Sep 28, 2026
@0xadam-brown
0xadam-brown enabled auto-merge (squash) September 29, 2026 07:21
@0xadam-brown

Copy link
Copy Markdown
Member Author

Re-ran apiDump to pick up the SentryNavOptions.toString() method my clanker missed when rebasing. Otherwise no changes.

@0xadam-brown
0xadam-brown enabled auto-merge (squash) September 29, 2026 07:38
@0xadam-brown
0xadam-brown merged commit 6e8b449 into main Sep 29, 2026
73 of 107 checks passed
@0xadam-brown
0xadam-brown deleted the feat/sentry-nav3-effect-stack branch September 29, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ship-it PR is ready to merge from a reviewer perspective

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants