Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: getsentry/sentry-java
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: getsentry/sentry-java
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: feat/standalone-app-start-tracing
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 3 commits
  • 8 files changed
  • 2 contributors

Commits on Apr 2, 2026

  1. feat: Add standalone app start transaction (happy path)

    Introduce experimental `enableStandaloneAppStartTracing` option that creates
    a separate app start transaction instead of attaching app start as a child
    span of the first activity transaction. This is the happy path only (foreground
    importance, activity launch, first frame drawn as end time).
    
    The standalone transaction shares the same trace ID as the activity transaction
    but is not bound to the scope. App start measurements and child spans (process
    init, content providers, application.onCreate) are attached to the standalone
    transaction instead of the activity transaction.
    
    Includes foreground importance check branching to prepare for the non-activity
    launch path (next PR).
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    buenaflor and claude committed Apr 2, 2026
    Configuration menu
    Copy the full SHA
    ddd9bed View commit details
    Browse the repository at this point in the history
  2. feat: Add non-activity app start path with end time resolution

    When the app starts without launching an activity (service, broadcast
    receiver, content provider), create a standalone app start transaction
    with the end time determined by priority:
    
    1. onApplicationPostCreate (Gradle plugin bytecode instrumentation)
    2. ApplicationStartInfo timestamps (API 35+)
    3. firstIdle - main thread idle handler (pre-API 35 fallback)
    
    The non-activity app start transaction stores its trace ID so that if
    an activity is later launched, the activity transaction reuses the same
    trace ID to keep both in the same trace.
    
    Adds OnNoActivityStartedListener callback from AppStartMetrics to
    ActivityLifecycleIntegration, triggered by checkCreateTimeOnMain()
    when no activity was created after Application.onCreate().
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    buenaflor and claude committed Apr 2, 2026
    Configuration menu
    Copy the full SHA
    fdd26df View commit details
    Browse the repository at this point in the history
  3. feat: Support non-activity app start tracing without bytecode instrum…

    …entation
    
    When an app is launched via broadcast receiver, service, or content provider
    (no activity), detect this via Handler.post() and create a standalone app start
    transaction. Resolves app start end time with priority: Gradle plugin >
    ApplicationStartInfo (API 35+) > process init time. Also attaches child spans
    (process init, content providers, Application.onCreate) to standalone
    transactions.
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    buenaflor and claude committed Apr 2, 2026
    Configuration menu
    Copy the full SHA
    e5b7a18 View commit details
    Browse the repository at this point in the history
Loading