Skip to content

feat: Set app start vitals on standalone children - #8888

Merged
buenaflor merged 2 commits into
mainfrom
feat/app-start-child-vitals
Aug 28, 2026
Merged

feat: Set app start vitals on standalone children#8888
buenaflor merged 2 commits into
mainfrom
feat/app-start-child-vitals

Conversation

@buenaflor

@buenaflor buenaflor commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

📜 Description

Set app.vitals.start.type and app.vitals.start.screen on standalone app.start children — including app.start.extended and user descendants. The ui.load-attached app start path is unchanged.

💡 Motivation and Context

Mobile vitals app start breakdown groups app.start children using these attributes. They were only on the root, so child spans did not group. Matches Android (getsentry/sentry-java#6005) and Flutter (getsentry/sentry-dart#3988).

Related to getsentry/sentry#122577
Closes #8889

💚 How did you test it?

Unit tests covering foreground and headless standalone children (AppStartReportingStrategyTests), user descendants under app.start.extended (SentryExtendedAppLaunchTests), and the nested ui.load path not receiving these attributes (SentryBuildAppStartSpansTests). Also ran SentryTracerTests.

📝 Checklist

You have to check all boxes before merging:

  • 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.
  • If I added a new public API, I also added it to the SentryObjC wrapper.

buenaflor and others added 2 commits August 27, 2026 14:13
Copy type and screen onto every child of a standalone
app.start transaction so mobile vitals grouping works.
Include app.start.extended and user descendants.
Headless starts omit screen. Nested ui.load is unchanged.

Matches getsentry/sentry-java#6005.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Aug 27, 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 ef464e0

@buenaflor
buenaflor marked this pull request as ready for review August 27, 2026 12:56
Copilot AI lite review requested due to automatic review settings August 27, 2026 12:56
@buenaflor buenaflor added the run-full-ci Allows gated GitHub Action workflows to run for a labelled pull request label Aug 27, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Propagates app start vitals grouping attributes (app.vitals.start.type and app.vitals.start.screen) from standalone app.start transactions onto their child spans (including app.start.extended and user-created descendants), while keeping the nested ui.load-attached app start path unchanged.

Changes:

  • Copy app.vitals.start.type (always) and app.vitals.start.screen (when present) onto all spans of standalone app start transactions at finish time.
  • Add/extend unit tests to validate propagation for standalone app start children (including extended + user descendants) and validate no propagation for the ui.load path.
  • Add a changelog entry under Unreleased → Features documenting the behavior change.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Sources/Sentry/SentryTracer.m Copies app start vitals type/screen onto standalone app start transaction child spans during transaction finalization.
Tests/SentryTests/Transaction/SentryBuildAppStartSpansTests.swift Asserts ui.load-path spans do not get vitals attributes; asserts standalone spans get expected vitals type (and screen omission when headless).
Tests/SentryTests/Integrations/Performance/AppStartTracking/AppStartReportingStrategyTests.swift Adds coverage for vitals propagation to child spans with and without screen set.
Tests/SentryTests/Integrations/Performance/AppStartTracking/SentryExtendedAppLaunchTests.swift Verifies vitals propagation to app.start.extended and user-created descendants (child + grandchild).
CHANGELOG.md Adds Unreleased feature entry describing vitals propagation to standalone app start children.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread Sources/Sentry/SentryTracer.m
@sentry

sentry Bot commented Aug 27, 2026

Copy link
Copy Markdown

📲 Install Builds

iOS

🔗 App Name App ID Version Configuration
SDK-Size io.sentry.sample.SDK-Size 9.26.1 (1) Release

⚙️ sentry-cocoa Build Distribution Settings

@itaybre itaybre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@buenaflor
buenaflor merged commit df8dfc8 into main Aug 28, 2026
321 of 343 checks passed
@buenaflor
buenaflor deleted the feat/app-start-child-vitals branch August 28, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved run-full-ci Allows gated GitHub Action workflows to run for a labelled pull request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Propagate app start vitals onto standalone app.start children

3 participants