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: b88ded9
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: f944a75
Choose a head ref
  • 19 commits
  • 130 files changed
  • 13 contributors

Commits on Jun 10, 2026

  1. Configuration menu
    Copy the full SHA
    80fd6ad View commit details
    Browse the repository at this point in the history

Commits on Jun 11, 2026

  1. chore(deps): bump the github-actions group with 2 updates (#5526)

    Bumps the github-actions group with 2 updates: [getsentry/craft/.github/workflows/changelog-preview.yml](https://github.com/getsentry/craft) and [getsentry/craft](https://github.com/getsentry/craft).
    
    
    Updates `getsentry/craft/.github/workflows/changelog-preview.yml` from 2.26.9 to 2.26.10
    - [Release notes](https://github.com/getsentry/craft/releases)
    - [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
    - [Commits](getsentry/craft@6143e76...acdb880)
    
    Updates `getsentry/craft` from 2.26.9 to 2.26.10
    - [Release notes](https://github.com/getsentry/craft/releases)
    - [Changelog](https://github.com/getsentry/craft/blob/master/CHANGELOG.md)
    - [Commits](getsentry/craft@6143e76...acdb880)
    
    ---
    updated-dependencies:
    - dependency-name: getsentry/craft/.github/workflows/changelog-preview.yml
      dependency-version: 2.26.10
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: github-actions
    - dependency-name: getsentry/craft
      dependency-version: 2.26.10
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: github-actions
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jun 11, 2026
    Configuration menu
    Copy the full SHA
    a28ff12 View commit details
    Browse the repository at this point in the history
  2. ref(core): Avoid boxing in DateUtils.nanosToDate (#5523)

    * ref(core): Avoid boxing in DateUtils.nanosToDate
    
    nanosToMillis already returns a primitive double, but the result was
    stored in a boxed Double and then unboxed again via longValue(). Keep
    the value primitive to drop the redundant allocation and unboxing on
    this conversion, which runs whenever a SentryDate is turned into a
    java.util.Date.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * changelog
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    runningcode and claude authored Jun 11, 2026
    Configuration menu
    Copy the full SHA
    8330a1b View commit details
    Browse the repository at this point in the history
  3. perf(core): Use fixed-delay scheduling for performance collector (JAV…

    …A-555) (#5524)
    
    * perf(core): Use fixed-delay scheduling for performance collector
    
    Switch the transaction collection timer from scheduleAtFixedRate to
    schedule. Fixed-rate scheduling fires rapid catch-up executions after a
    delay or GC pause, which the old code guarded against with a 10ms skip
    check. Fixed-delay scheduling spaces each collection 100ms after the
    previous one finishes, so the catch-up bursts cannot happen and the
    guard, its timestamp field, and the stale comment are no longer needed.
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    
    * changelog
    
    * test(core): Verify schedule instead of scheduleAtFixedRate
    
    The performance collector now uses fixed-delay scheduling, so the timer
    verifications assert schedule(...) rather than scheduleAtFixedRate(...).
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    
    * changelog
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 <[email protected]>
    runningcode and claude authored Jun 11, 2026
    Configuration menu
    Copy the full SHA
    b988b37 View commit details
    Browse the repository at this point in the history
  4. ref(core): Use primitive long for EventProcessorAndOrder.order (#5527)

    * ref(core): Use primitive long for EventProcessorAndOrder.order
    
    Avoid boxing by storing the order as a primitive long instead of a
    boxed Long. The constructor already normalizes a null order to
    System.nanoTime(), so the field never needs to represent null.
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
    
    * changelog
    
    * changelog
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 <[email protected]>
    runningcode and claude authored Jun 11, 2026
    Configuration menu
    Copy the full SHA
    46b442b View commit details
    Browse the repository at this point in the history

Commits on Jun 12, 2026

  1. feat(android): Add standalone app start tracing (#5342)

    * 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) <[email protected]>
    
    * 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) <[email protected]>
    
    * feat: Support non-activity app start tracing without bytecode instrumentation
    
    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) <[email protected]>
    
    * refactor: Consolidate non-activity app start time-span resolution
    
    Extract the "try appStartSpan, fall back to sdkInitTimeSpan" logic used for
    standalone (non-activity) app start transactions into a new
    AppStartMetrics.getAppStartTimeSpanDirect() helper, removing the duplicated
    inline fallback in ActivityLifecycleIntegration and the private helper in
    PerformanceAndroidEventProcessor.
    
    Also cache the API 35+ ApplicationStartInfo on registerLifecycleCallbacks so
    onAppStartSpansSent no longer re-queries ActivityManager, and simplify the
    non-activity detection path to always use the main-thread IdleHandler.
    
    Regenerates the sentry-android-core API to include method additions missed in
    prior commits on this branch (standalone-app-start options, trace id accessors,
    OnNoActivityStartedListener).
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
    
    * chore(samples): Register TestBroadcastReceiver in manifest
    
    Wires up the TestBroadcastReceiver added earlier so the sample app can trigger
    a non-activity cold start via `adb shell am broadcast`.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
    
    * fix(app-start): resolve standalone tracing misclassification and duplicate emission
    
    Two pre-merge fixes for the standalone app-start tracing path introduced on
    this branch (issue #5046):
    
    - AppStartMetrics.checkCreateTimeOnMain() now defaults appStartType to COLD
      when UNKNOWN with no active activities. On API < 35 (where
      ApplicationStartInfo is unavailable) non-activity cold starts were stuck
      at UNKNOWN, which both misclassified the standalone transaction as
      App Start Warm and caused PerformanceAndroidEventProcessor.attachAppStartSpans
      to early-return (dropping process.load / application.load / contentprovider.load
      phase spans).
    
    - ActivityLifecycleIntegration.onActivityPreCreated() now skips emitting a
      second standalone App Start transaction when the non-activity path has
      already reported the process's app start (detected via the stashed
      appStartTraceId). Previously a broadcast followed by an activity launch
      produced two standalone transactions (a spurious App Start Warm in addition
      to the broadcast's App Start Cold), violating one-per-process semantics.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
    
    * fix(android): refine standalone app start tracing
    
    * chore: Update generated files
    
    * style(core): Apply spotless formatting
    
    * changelog
    
    * fix(android): Use stable app start transaction name
    
    Rename the standalone app-start transaction to a single App Start name
    so cold and warm starts group consistently while preserving the app.start op.
    
    Co-authored-by: Cursor <[email protected]>
    
    * feat(android): Add standalone app start tracing
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Handle non-activity app starts below API 24
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Guard app start timestamp clock base
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Remove app start reason plumbing
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Clarify no-activity app start handling
    
    Rename the private app start helper to reflect that it conditionally
    handles non-activity starts. Keep comments and tests focused on behavior.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * docs(android): Clarify non-activity app start fallback
    
    Explain why unresolved non-activity starts default to cold when Activity
    signals or ApplicationStartInfo classification are unavailable.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Preserve legacy no-activity app start guard
    
    Only run the no-activity startup check for unresolved app starts or when
    standalone app start tracing registered a listener. This keeps API 35
    ApplicationStartInfo classifications from triggering legacy side effects.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * test(android): Opt into standalone no-activity API 35 tests
    
    Register a no-op no-activity listener for API 35 end-time resolution tests
    so they exercise the standalone path under the restored legacy guard.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Schedule no-activity idle check when standalone listener is set on API 35+
    
    On API 35+, ApplicationStartInfo resolves appStartType before the
    standalone app start listener is installed, causing the idle handler
    condition to be false and skipping the no-activity detection entirely.
    
    Register the idle handler from setOnNoActivityStartedListener when the
    type is already resolved, ensuring onNoActivityStarted() fires for
    standalone app start tracing on API 35+ devices.
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Remove dead foregroundImportance check in standalone app start path
    
    The foregroundImportance guard was always true at that point because
    appStartTime is only set to non-null inside the foregroundImportance
    branch. Remove the redundant check and the misleading else comment
    that described an unreachable code path.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Prevent duplicate standalone app start measurements
    
    Require the app-start pending flag even when standalone app-start transactions bypass foreground checks. Preserve completed non-activity app-start timings so fallback resolution does not overwrite stopped spans.
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Remove unused app start application context
    
    Drop dead AppStartMetrics state that was assigned during lifecycle callback registration but never read.
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Rename getAppStartTimeSpanDirect to getAppStartTimeSpanForStandalone
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Do not set TTID/TTFD contributing flags on standalone app start spans
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Add volatile to noActivityStartedListener for cross-thread visibility
    
    The field is written by setOnNoActivityStartedListener (called during
    Sentry.init(), potentially on a background thread) and read on the main
    thread in handleNoActivityStartIfNeededOnMain. Without volatile, the JMM
    permits the main thread to see a stale null, silently skipping the
    listener and preventing standalone app-start transaction creation.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Clear stale app start sampling decision in non-activity start path
    
    onNoActivityStarted() did not clear the appStartSamplingDecision, which
    could leak to the first ui.load transaction when an activity eventually
    starts after a non-activity process launch.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix: Format adb test commands in TestBroadcastReceiver JavaDoc
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Rename headless app start handling
    
    Use headless terminology for app starts that do not reach an Activity and
    schedule the headless check from lifecycle callback registration. This removes
    listener setter side effects while preserving standalone app-start behavior.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Align foreground app start measurements
    
    Use the foreground app start fallback for foreground standalone app
    start transactions so measurements match the transaction timestamp.
    Keep the headless-only span source limited to true headless starts.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Gate headless app start end time
    
    Resolve the headless app start end timestamp only when standalone
    headless tracing is active. This avoids stopping legacy app start
    spans before a later foreground Activity can finish them.
    
    Co-authored-by: Cursor <[email protected]>
    
    * test(android): Update API 35 headless app start expectation
    
    Make the ApplicationStartInfo headless test install the listener that
    now gates headless end-time resolution, matching the standalone path.
    
    Co-authored-by: Cursor <[email protected]>
    
    * Fix headless app-start idle scheduling
    
    * ref(android): Clarify headless app start state names
    
    Rename private headless app start flags to distinguish the pending
    main-thread check from the one-shot listener invocation guard. No
    behavior change.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): Use app.start origin for headless app start transaction
    
    Set the standalone headless app start transaction origin to
    `auto.app.start` instead of `auto.ui.activity`, which was semantically
    incorrect for non-activity (broadcast/service/content provider) starts.
    
    Also simplify the API 35+ ApplicationStartInfo onCreate timestamp
    resolution by using the reported nanos directly as the uptime base.
    
    Co-authored-by: Cursor <[email protected]>
    
    * ref(android): refine standalone app start trace continuation
    
    Drop the redundant trace-id sharing TransactionContext constructor; the
    ui.load now shares the app.start trace solely through continueTrace.
    
    Don't connect a headless app.start and a following activity's ui.load into
    the same trace when they are more than 1 minute apart, since such a large
    gap means they no longer belong to the same launch.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): align headless app start tests with uptime-based onCreate timestamp
    
    ApplicationStartInfo's START_TIMESTAMP_APPLICATION_ONCREATE is captured via
    SystemClock.uptimeNanos(), the same base as TimeSpan, so no clock re-anchoring
    is needed. Add the missing headless test setup (foreground-importance stubbing)
    and fix the API 35 timestamp test to use uptime semantics.
    
    Co-authored-by: Cursor <[email protected]>
    
    * test(android): add standalone app start E2E harness
    
    Wire the Android sample app for manual standalone app-start validation and add a reusable harness plus notes for the scenarios verified locally. Trim redundant comments around app-start trace continuation while keeping the non-obvious sampling and parentage details.
    
    Co-Authored-By: Claude <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    
    * chore(android): remove standalone app start report
    
    Co-authored-by: Cursor <[email protected]>
    
    * test(android): clarify app start transaction shapes
    
    Co-authored-by: Cursor <[email protected]>
    
    * chore(android): remove standalone app start harness
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Preserve app start activity counter
    
    Keep the foreground headless guard from faking an observed activity so
    late standalone app start init still lets the first real activity classify
    startup and reset warm-start state correctly.
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(android): Finish app start after activity spans
    
    Keep standalone app-start transactions open until activity lifecycle spans
    are attached so early app-start completion does not drop activity spans.
    
    Co-Authored-By: Cursor <[email protected]>
    
    * feat(samples): enable standalone app start tracing and add headless-start broadcast receiver
    
    Co-authored-by: Cursor <[email protected]>
    
    * fix(changelog): resolve merge conflict and keep standalone app start entry under Unreleased
    
    Co-authored-by: Cursor <[email protected]>
    
    * docs(options): Clarify standalone app start javadoc per review
    
    - Use plain quotes for the "App Start" transaction name instead of {@code}
    - Clarify that the API 35 gate refers to the device's runtime OS version
    
    Co-Authored-By: Claude Fable 5 <[email protected]>
    
    * fix(android): Clarify ApplicationStartInfo onCreate timestamp marks onCreate start
    
    START_TIMESTAMP_APPLICATION_ONCREATE is captured right before
    Application.onCreate is invoked (ActivityThread.handleBindApplication),
    so it is the onCreate start, not its end. Rename locals, fix comments
    and javadoc accordingly, and drop the applicationOnCreate.setStoppedAt
    branch which could have recorded a zero-length application.load span.
    
    Co-Authored-By: Claude Fable 5 <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
    Co-authored-by: Cursor <[email protected]>
    3 people authored Jun 12, 2026
    Configuration menu
    Copy the full SHA
    85fd8b1 View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2026

  1. Configuration menu
    Copy the full SHA
    26ddd89 View commit details
    Browse the repository at this point in the history
  2. chore(samples-android): Add optional SAGP build mode (#5538)

    Adds an optional useSagp flag to Android sample app builds that, when true, applies the Sentry Android Gradle Plugin. (Defaults to false, which matches existing build behavior.)
    
    ```
    ./gradlew :sentry-samples:sentry-samples-android:installDebug -PuseSagp=true
    ```
    
    See the Android sample app README for more details.
    0xadam-brown authored Jun 15, 2026
    Configuration menu
    Copy the full SHA
    77e5b0a View commit details
    Browse the repository at this point in the history
  3. fix(samples): allow leak canary for non-debug builds, so the sample a…

    …pp doesn't crash when using AS profiler (#5545)
    markushi authored Jun 15, 2026
    Configuration menu
    Copy the full SHA
    aab75f7 View commit details
    Browse the repository at this point in the history
  4. chore(samples-android): Support mavenLocal for builds that apply the …

    …SAGP (#5539)
    
    chore(samples-android): Support mavenLocal for builds that apply the SAGP
    
    Adds wiring that lets us prefer mavenLocal SAGP artifacts, when present, for Android sample app builds that set -PuseSagp=true. If no local artifact is found, we fall back to libs.versions.toml.
    0xadam-brown authored Jun 15, 2026
    Configuration menu
    Copy the full SHA
    9d2f4e3 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2026

  1. feat(android-sqlite): Add SentrySQLiteDriver (JAVA-275) (#5466)

    feat(android-sqlite): Add SentrySQLiteDriver (JAVA-275)
    
    Introduces support for AndroidX's SQLiteDriver via a new SentrySQLiteDriver wrapper.
    
    SentrySQLiteDriver automatically creates spans for each SQL statement it executes. Its data scheme closely tracks that of SentrySupportSQLiteOpenHelper, which it's designed to replace. (Span duration is an important exception; see the SentrySQLiteStatement KDoc for more details.)
    
    A key motivation behind Google's use of SQLiteDriver with Room 2.7+ was Kotlin Multiplatform support. We're careful to keep the SentrySQLiteDriver KMP-compatible as well, should we one day want to lift it into sentry-kotlin-multiplatform.
    
    ---
    
    Co-authored-by: Angus Holder <[email protected]>
    0xadam-brown and angusholder authored Jun 16, 2026
    Configuration menu
    Copy the full SHA
    3eb7173 View commit details
    Browse the repository at this point in the history
  2. ci: Remove Codecov and code coverage tooling (JAVA-560) (#5547)

    * ci: Remove Codecov and code coverage tooling (JAVA-560)
    
    Remove the Codecov service integration (codecov.yml, the README badge, and the upload steps across all CI workflows) along with the JaCoCo and Kover coverage tooling that only existed to feed it: the plugins, report and verification tasks across all modules, the version catalog entries, the Config.kt coverage threshold, and the createCoverageReports Makefile target.
    
    No SDK code or public API is affected.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * test(sentry): Restore java.lang open after jacoco removal (JAVA-560)
    
    SentryTest reflectively rewrites a class's name to fake the Android environment, which requires --add-opens java.base/java.lang=ALL-UNNAMED. The jacoco test agent was implicitly providing this open; now that jacoco is removed, declare it explicitly so the sentry unit tests keep passing.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    runningcode and claude authored Jun 16, 2026
    Configuration menu
    Copy the full SHA
    773a0df View commit details
    Browse the repository at this point in the history
  3. fix(android): Stop duplicating attachments on native events (JAVA-559) (

    #5548)
    
    * fix(android): Stop duplicating attachments on native events (JAVA-559)
    
    Scope attachments are synced to the native SDK, so native events already
    carry them as envelope items in the outbox. When re-ingesting those
    cached envelopes, SentryClient re-applied the scope attachments on top,
    sending each attachment twice. Skip re-applying scope attachments for
    cached envelopes.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * changelog
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    runningcode and claude authored Jun 16, 2026
    Configuration menu
    Copy the full SHA
    f36e6e3 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    6dff1c9 View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2026

  1. chore(deps): bump actions/setup-java in the github-actions group (#5554)

    Bumps the github-actions group with 1 update: [actions/setup-java](https://github.com/actions/setup-java).
    
    
    Updates `actions/setup-java` from 5.2.0 to 5.3.0
    - [Release notes](https://github.com/actions/setup-java/releases)
    - [Commits](actions/setup-java@be666c2...ad2b381)
    
    ---
    updated-dependencies:
    - dependency-name: actions/setup-java
      dependency-version: 5.3.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: github-actions
    ...
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Jun 17, 2026
    Configuration menu
    Copy the full SHA
    e52b4e4 View commit details
    Browse the repository at this point in the history
  2. perf: Avoid boxing in doubleToBigDecimal timestamp serialization (#5551)

    * perf: Avoid boxing in doubleToBigDecimal timestamp serialization
    
    Change DateUtils.doubleToBigDecimal to take a primitive double instead of a
    boxed Double, and route the four duplicated private copies (ProfileChunk,
    ProfileMeasurementValue, SentrySample, SentrySpan) through it. Callers that
    hold a primitive double timestamp no longer autobox on every serialization,
    and the duplicated helpers are consolidated into one. Behavior is unchanged.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * changelog
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    runningcode and claude authored Jun 17, 2026
    Configuration menu
    Copy the full SHA
    ba01011 View commit details
    Browse the repository at this point in the history
  3. chore(android-sqlite): Repair start times of spans generated by Sentr…

    …ySQLiteDriver (#5543)
    
    chore(android-sqlite): Repair start times of spans generated by SentrySQLiteDriver (JAVA-275)
    
    Repairs the nanoTimetamp of the SentryNanotimeDates used as start times for the spans generated by SentrySQLiteDriver. Without those repairs, all spans within a given wall clock millisecond are displayed by Sentry UI as starting at that same millisecond and are re-ordered arbitrarily. Often that's quite confusing as actual BEGIN -> EXECUTE STATEMENT -> END sequences can appear as EXECUTE STATEMENT -> END -> BEGIN (etc.).
    
    For more details, see the discussion [here](#5504 (comment)).
    0xadam-brown authored Jun 17, 2026
    Configuration menu
    Copy the full SHA
    06b0d80 View commit details
    Browse the repository at this point in the history
  4. perf(android): Replace Date with unix timestamp in SentryNanotimeDate…

    … (JAVA-533) (#5550)
    
    * perf(android): Replace Date with unix timestamp in SentryNanotimeDate (JAVA-533)
    
    SentryNanotimeDate stored a java.util.Date but only ever read its epoch
    millis. Storing the millis directly avoids a Calendar allocation on every
    timestamp, which on Android backs every span/transaction timestamp.
    
    The default constructor now uses System.currentTimeMillis() instead of
    DateUtils.getCurrentDateTime() (Calendar with UTC). This is behavior-
    preserving: the UTC TimeZone only affects calendar field access, not the
    epoch-millis value the class used.
    
    BREAKING: the public SentryNanotimeDate(Date, long) constructor is
    replaced by SentryNanotimeDate(long unixDate, long nanos).
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * changelog
    
    * ref(android): Mark SentryNanotimeDate as @ApiStatus.Internal
    
    SentryNanotimeDate is the legacy Date+nanoTime precision workaround and is
    not intended for direct use by consumers. Marking it @ApiStatus.Internal
    signals this and means the constructor change in this PR is not a public
    API break per the repo's API policy.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * refactor(sentry): Rename unixDate field to unixDateMillis
    
    Name the long field for its unit so it is clear it holds the unix
    timestamp in milliseconds since the epoch.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * docs(changelog): Reword SentryNanotimeDate entry
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * feat(sentry): Restore deprecated SentryNanotimeDate Date constructor (JAVA-533)
    
    The previous change replaced the (Date, long) constructor with a
    (long, long) constructor, which was a breaking API change. Add the
    Date constructor back, delegating to the millis-based one, and mark
    it deprecated to steer callers toward the new constructor.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * fix(sentry): Suppress InlineMeSuggester on deprecated constructor (JAVA-533)
    
    Error Prone flagged the deprecated (Date, long) constructor as
    inlineable, failing the build. Suppress the suggestion to match the
    existing convention in Sentry.java, keeping the constructor available
    for backwards compatibility.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * fix(sentry): Suppress JavaUtilDate on deprecated constructor (JAVA-533)
    
    Error Prone's JavaUtilDate check flagged date.getTime() in the
    deprecated constructor, failing the build. Suppress it, matching the
    existing suppression used elsewhere in this class.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
    runningcode and claude authored Jun 17, 2026
    Configuration menu
    Copy the full SHA
    3a7603a View commit details
    Browse the repository at this point in the history
  5. release: 8.44.0

    runningcode committed Jun 17, 2026
    Configuration menu
    Copy the full SHA
    f944a75 View commit details
    Browse the repository at this point in the history
Loading