Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
ddd9bed
feat: Add standalone app start transaction (happy path)
buenaflor Apr 2, 2026
fdd26df
feat: Add non-activity app start path with end time resolution
buenaflor Apr 2, 2026
e5b7a18
feat: Support non-activity app start tracing without bytecode instrum…
buenaflor Apr 2, 2026
11898dc
refactor: Consolidate non-activity app start time-span resolution
buenaflor Apr 23, 2026
5efab1d
chore(samples): Register TestBroadcastReceiver in manifest
buenaflor Apr 23, 2026
f6c070d
Merge remote-tracking branch 'origin/main' into feat/standalone-app-s…
buenaflor Apr 23, 2026
215a549
fix(app-start): resolve standalone tracing misclassification and dupl…
buenaflor Apr 24, 2026
50a2f41
fix(android): refine standalone app start tracing
buenaflor Apr 28, 2026
26a83cc
chore: Update generated files
buenaflor Apr 28, 2026
a60d966
style(core): Apply spotless formatting
buenaflor Apr 28, 2026
09bac52
changelog
buenaflor Apr 28, 2026
5387e76
Merge branch 'main' into feat/standalone-app-start-tracing
buenaflor Apr 28, 2026
f7c9c62
fix(android): Use stable app start transaction name
buenaflor May 4, 2026
9adfa01
feat(android): Add standalone app start tracing
buenaflor May 7, 2026
87ff0d6
fix(android): Handle non-activity app starts below API 24
buenaflor May 7, 2026
706adad
fix(android): Guard app start timestamp clock base
buenaflor May 11, 2026
9bf80c4
Merge branch 'main' into feat/standalone-app-start-tracing
buenaflor May 11, 2026
5d6174e
ref(android): Remove app start reason plumbing
buenaflor May 11, 2026
dfb5aea
Merge remote-tracking branch 'origin/feat/standalone-app-start-tracin…
buenaflor May 11, 2026
e8be515
ref(android): Clarify no-activity app start handling
buenaflor May 11, 2026
b5a6336
docs(android): Clarify non-activity app start fallback
buenaflor May 11, 2026
f3ef6ce
fix(android): Preserve legacy no-activity app start guard
buenaflor May 11, 2026
9da8369
test(android): Opt into standalone no-activity API 35 tests
buenaflor May 11, 2026
72268a3
fix(android): Schedule no-activity idle check when standalone listene…
buenaflor May 11, 2026
cbaebe2
ref(android): Remove dead foregroundImportance check in standalone ap…
buenaflor May 11, 2026
b1d738b
fix(android): Prevent duplicate standalone app start measurements
buenaflor May 11, 2026
9f5cac5
ref(android): Remove unused app start application context
buenaflor May 11, 2026
51c2bff
ref(android): Rename getAppStartTimeSpanDirect to getAppStartTimeSpan…
buenaflor May 12, 2026
b7fabc6
fix(android): Do not set TTID/TTFD contributing flags on standalone a…
buenaflor May 12, 2026
b871644
fix(android): Add volatile to noActivityStartedListener for cross-thr…
buenaflor May 12, 2026
e681be9
fix(android): Clear stale app start sampling decision in non-activity…
buenaflor May 12, 2026
cdc6178
fix: Format adb test commands in TestBroadcastReceiver JavaDoc
buenaflor May 12, 2026
38ac42c
ref(android): Rename headless app start handling
buenaflor May 18, 2026
d1262c2
fix(android): Align foreground app start measurements
buenaflor May 18, 2026
be261f6
fix(android): Gate headless app start end time
buenaflor May 18, 2026
41ebd25
test(android): Update API 35 headless app start expectation
buenaflor May 18, 2026
e0d714c
Fix headless app-start idle scheduling
buenaflor May 18, 2026
58dda40
ref(android): Clarify headless app start state names
buenaflor May 27, 2026
12719e6
Merge remote-tracking branch 'origin/main' into feat/standalone-app-s…
buenaflor Jun 1, 2026
2bc059f
ref(android): Use app.start origin for headless app start transaction
buenaflor Jun 1, 2026
cf623f3
ref(android): refine standalone app start trace continuation
buenaflor Jun 2, 2026
17a9c68
fix(android): align headless app start tests with uptime-based onCrea…
buenaflor Jun 2, 2026
467d0ce
test(android): add standalone app start E2E harness
buenaflor Jun 2, 2026
6e264d6
chore(android): remove standalone app start report
buenaflor Jun 2, 2026
e3ef325
test(android): clarify app start transaction shapes
buenaflor Jun 2, 2026
b94ac3a
chore(android): remove standalone app start harness
buenaflor Jun 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

## Unreleased

### Features
Comment thread
buenaflor marked this conversation as resolved.

- Add `enableStandaloneAppStartTracing` option to send app start as a standalone transaction instead of attaching it as a child span of the first activity transaction ([#5342](https://github.com/getsentry/sentry-java/pull/5342))
- Disabled by default; opt in via `options.isEnableStandaloneAppStartTracing = true` or manifest meta-data `io.sentry.standalone-app-start-tracing.enable`
- Emits a transaction named `App Start` with op `app.start`, carrying the existing app start measurements and phase spans (`process.load`, `contentprovider.load`, `application.load`, activity lifecycle spans) as direct children of the root
- The standalone transaction shares the same `traceId` as the first `ui.load` activity transaction so they remain linked in the trace view
- Also covers non-activity starts (broadcast receivers, services, content providers)

### Fixes

- Session Replay: Populate `trace_ids` in replay events to enable searching replays by trace ID ([#5473](https://github.com/getsentry/sentry-java/pull/5473))
Expand Down
17 changes: 17 additions & 0 deletions sentry-android-core/api/sentry-android-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
public fun isEnablePerformanceV2 ()Z
public fun isEnableRootCheck ()Z
public fun isEnableScopeSync ()Z
public fun isEnableStandaloneAppStartTracing ()Z
public fun isEnableSystemEventBreadcrumbs ()Z
public fun isEnableSystemEventBreadcrumbsExtras ()Z
public fun isReportHistoricalAnrs ()Z
Expand Down Expand Up @@ -423,6 +424,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
public fun setEnablePerformanceV2 (Z)V
public fun setEnableRootCheck (Z)V
public fun setEnableScopeSync (Z)V
public fun setEnableStandaloneAppStartTracing (Z)V
public fun setEnableSystemEventBreadcrumbs (Z)V
public fun setEnableSystemEventBreadcrumbsExtras (Z)V
public fun setFrameMetricsCollector (Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector;)V
Expand Down Expand Up @@ -740,11 +742,16 @@ public class io/sentry/android/core/performance/AppStartMetrics : io/sentry/andr
public fun clear ()V
public fun createProcessInitSpan ()Lio/sentry/android/core/performance/TimeSpan;
public fun getActivityLifecycleTimeSpans ()Ljava/util/List;
public fun getAppStartBaggageHeader ()Ljava/lang/String;
public fun getAppStartContinuousProfiler ()Lio/sentry/IContinuousProfiler;
public fun getAppStartEndTime ()Lio/sentry/SentryDate;
public fun getAppStartProfiler ()Lio/sentry/ITransactionProfiler;
public fun getAppStartSamplingDecision ()Lio/sentry/TracesSamplingDecision;
public fun getAppStartSentryTraceHeader ()Ljava/lang/String;
public fun getAppStartTimeSpan ()Lio/sentry/android/core/performance/TimeSpan;
public fun getAppStartTimeSpanForHeadless ()Lio/sentry/android/core/performance/TimeSpan;
public fun getAppStartTimeSpanWithFallback (Lio/sentry/android/core/SentryAndroidOptions;)Lio/sentry/android/core/performance/TimeSpan;
public fun getAppStartTraceId ()Lio/sentry/protocol/SentryId;
public fun getAppStartType ()Lio/sentry/android/core/performance/AppStartMetrics$AppStartType;
public fun getApplicationOnCreateTimeSpan ()Lio/sentry/android/core/performance/TimeSpan;
public fun getClassLoadedUptimeMs ()J
Expand All @@ -765,12 +772,18 @@ public class io/sentry/android/core/performance/AppStartMetrics : io/sentry/andr
public static fun onContentProviderPostCreate (Landroid/content/ContentProvider;)V
public fun registerLifecycleCallbacks (Landroid/app/Application;)V
public fun setAppLaunchedInForeground (Z)V
public fun setAppStartBaggageHeader (Ljava/lang/String;)V
public fun setAppStartContinuousProfiler (Lio/sentry/IContinuousProfiler;)V
public fun setAppStartEndTime (Lio/sentry/SentryDate;)V
public fun setAppStartProfiler (Lio/sentry/ITransactionProfiler;)V
public fun setAppStartSamplingDecision (Lio/sentry/TracesSamplingDecision;)V
public fun setAppStartSentryTraceHeader (Ljava/lang/String;)V
public fun setAppStartTraceId (Lio/sentry/protocol/SentryId;)V
public fun setAppStartType (Lio/sentry/android/core/performance/AppStartMetrics$AppStartType;)V
public fun setClassLoadedUptimeMs (J)V
public fun setHeadlessAppStartListener (Lio/sentry/android/core/performance/AppStartMetrics$HeadlessAppStartListener;)V
public fun shouldSendStartMeasurements ()Z
public fun shouldSendStartMeasurements (Z)Z
}

public final class io/sentry/android/core/performance/AppStartMetrics$AppStartType : java/lang/Enum {
Expand All @@ -781,6 +794,10 @@ public final class io/sentry/android/core/performance/AppStartMetrics$AppStartTy
public static fun values ()[Lio/sentry/android/core/performance/AppStartMetrics$AppStartType;
}

public abstract interface class io/sentry/android/core/performance/AppStartMetrics$HeadlessAppStartListener {
public abstract fun onHeadlessAppStart ()V
}

public class io/sentry/android/core/performance/TimeSpan : java/lang/Comparable {
public fun <init> ()V
public fun compareTo (Lio/sentry/android/core/performance/TimeSpan;)I
Expand Down
Loading
Loading