Skip to content

fix(flutter): Send frame delay in seconds#3677

Merged
buenaflor merged 2 commits intomainfrom
buenaflor/fix/frame-delay-seconds
Apr 29, 2026
Merged

fix(flutter): Send frame delay in seconds#3677
buenaflor merged 2 commits intomainfrom
buenaflor/fix/frame-delay-seconds

Conversation

@buenaflor
Copy link
Copy Markdown
Contributor

📜 Description

Send Flutter frame delay metrics in seconds instead of milliseconds.

The frame tracker still computes delays from millisecond timestamps internally,
but converts the accumulated value before writing frames.delay and
frames_delay. This matches the backend convention and the Android SDK
behavior.

💡 Motivation and Context

The backend processes frame delay values as seconds. Flutter was sending
millisecond values directly, which made frame delay data 1000x too large.

💚 How did you test it?

fvm flutter test test/frame_tracking/sentry_delayed_frames_tracker_test.dart test/frame_tracking/span_frame_metrics_test.dart test/frame_tracking/span_frame_metrics_collector_test.dart

fvm flutter analyze lib/src/frames_tracking/sentry_delayed_frames_tracker.dart lib/src/frames_tracking/span_frame_metrics_collector.dart test/frame_tracking/sentry_delayed_frames_tracker_test.dart test/frame_tracking/span_frame_metrics_test.dart test/frame_tracking/span_frame_metrics_collector_test.dart

fvm dart analyze lib/src/sentry_measurement.dart

Pre-commit checks also ran dart analyze --fatal-warnings for sentry and
flutter analyze --fatal-warnings for sentry_flutter.

📝 Checklist

  • I reviewed submitted code
  • I added tests to verify changes
  • No new PII added or SDK only sends newly added PII if sendDefaultPii is enabled
  • I updated the docs if needed
  • All tests passing
  • No breaking changes

🔮 Next steps

None.

Convert accumulated frame delay from milliseconds to seconds before writing frames.delay and frames_delay. This matches the backend convention and the Android SDK behavior.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@buenaflor buenaflor requested a review from denrase as a code owner April 28, 2026 13:50
Copilot AI review requested due to automatic review settings April 28, 2026 13:50
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 28, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.80%. Comparing base (2269f05) to head (ac94509).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3677   +/-   ##
=======================================
  Coverage   86.80%   86.80%           
=======================================
  Files         335      335           
  Lines       11934    11935    +1     
=======================================
+ Hits        10359    10360    +1     
  Misses       1575     1575           
Flag Coverage Δ
sentry 86.66% <ø> (-0.01%) ⬇️
sentry_dio 97.73% <ø> (ø)
sentry_drift 93.57% <ø> (ø)
sentry_file 65.29% <ø> (ø)
sentry_firebase_remote_config 100.00% <ø> (ø)
sentry_flutter 91.17% <100.00%> (+<0.01%) ⬆️
sentry_hive 77.48% <ø> (ø)
sentry_isar 74.37% <ø> (ø)
sentry_link 21.50% <ø> (ø)
sentry_logging 97.01% <ø> (ø)
sentry_sqflite 88.81% <ø> (ø)
sentry_supabase 97.27% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adjusts Flutter frame delay reporting to match backend/Android expectations by emitting frame delay values in seconds (instead of milliseconds), ensuring correct magnitude in performance data.

Changes:

  • Convert accumulated frame delay from milliseconds to seconds before writing span data/measurements (frames.delay / frames_delay).
  • Update streaming span attribute emission to use a double-valued attribute for frames.delay.
  • Update frame tracking tests to assert seconds-based values.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/flutter/lib/src/frames_tracking/sentry_delayed_frames_tracker.dart Converts computed frame delay from ms to seconds and changes SpanFrameMetrics.framesDelay to double.
packages/flutter/lib/src/frames_tracking/span_frame_metrics_collector.dart Emits frames.delay as a double attribute for streaming spans.
packages/dart/lib/src/sentry_measurement.dart Updates documentation for frames_delay measurement to clarify seconds.
packages/flutter/test/frame_tracking/sentry_delayed_frames_tracker_test.dart Updates expected framesDelay values to seconds.
packages/flutter/test/frame_tracking/span_frame_metrics_test.dart Updates span data/measurement expectations for seconds-based delay.
packages/flutter/test/frame_tracking/span_frame_metrics_collector_test.dart Updates collector expectations for seconds-based delay in data/measurements/attributes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/dart/lib/src/sentry_measurement.dart Outdated
@sentry
Copy link
Copy Markdown

sentry Bot commented Apr 28, 2026

📲 Install Builds

Android

🔗 App Name App ID Version Configuration
sentry_flutter_example io.sentry.flutter.sample 9.19.0 (1) Release

⚙️ sentry-flutter Build Distribution Settings

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 28, 2026

iOS Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1260.91 ms 1268.98 ms 8.07 ms
Size 5.73 MiB 6.18 MiB 463.85 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
1fff351 1265.77 ms 1256.06 ms -9.70 ms
d2356d0 1257.04 ms 1257.94 ms 0.89 ms
c002f00 1252.47 ms 1258.78 ms 6.31 ms
cf443d2 1255.79 ms 1248.38 ms -7.40 ms
3f47ea3 1263.90 ms 1263.87 ms -0.02 ms
1ce780b 1252.49 ms 1256.17 ms 3.68 ms
0929dbf 1275.89 ms 1282.22 ms 6.33 ms
6b69699 1254.80 ms 1273.31 ms 18.52 ms
a10aff4 1241.67 ms 1255.02 ms 13.35 ms
fd88186 1255.06 ms 1252.76 ms -2.30 ms

App size

Revision Plain With Sentry Diff
1fff351 5.73 MiB 6.17 MiB 455.43 KiB
d2356d0 5.66 MiB 6.09 MiB 448.38 KiB
c002f00 5.65 MiB 6.09 MiB 448.38 KiB
cf443d2 5.53 MiB 6.00 MiB 479.99 KiB
3f47ea3 5.53 MiB 5.96 MiB 444.81 KiB
1ce780b 5.66 MiB 6.10 MiB 451.58 KiB
0929dbf 7.86 MiB 9.54 MiB 1.69 MiB
6b69699 7.86 MiB 9.44 MiB 1.58 MiB
a10aff4 5.53 MiB 6.00 MiB 486.71 KiB
fd88186 5.53 MiB 6.00 MiB 479.94 KiB

Copy link
Copy Markdown
Collaborator

@denrase denrase left a comment

Choose a reason for hiding this comment

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

Worth checking the unit that was flagged.

Mark frames_delay measurements as seconds when using the public measurement constructor and when applying Flutter frame metrics to root spans.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@buenaflor buenaflor requested a review from denrase April 28, 2026 14:42
@github-actions
Copy link
Copy Markdown
Contributor

Android Performance metrics 🚀

  Plain With Sentry Diff
Startup time 374.17 ms 363.98 ms -10.19 ms
Size 14.31 MiB 15.56 MiB 1.25 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
c97f488 502.43 ms 492.47 ms -9.97 ms
3801d52 397.53 ms 378.87 ms -18.66 ms
0929dbf 462.82 ms 492.76 ms 29.94 ms
426fbfd 368.10 ms 353.23 ms -14.87 ms
0e2b9b0 368.00 ms 356.72 ms -11.28 ms
cf443d2 464.64 ms 479.04 ms 14.40 ms
396cb30 405.70 ms 427.56 ms 21.86 ms
ce5c42b 401.52 ms 394.63 ms -6.90 ms
c8596a6 474.00 ms 492.96 ms 18.96 ms
2d34233 470.54 ms 558.90 ms 88.36 ms

App size

Revision Plain With Sentry Diff
c97f488 14.31 MiB 15.49 MiB 1.19 MiB
3801d52 14.31 MiB 15.49 MiB 1.19 MiB
0929dbf 6.54 MiB 7.70 MiB 1.17 MiB
426fbfd 13.93 MiB 15.06 MiB 1.13 MiB
0e2b9b0 14.30 MiB 15.49 MiB 1.19 MiB
cf443d2 13.93 MiB 15.00 MiB 1.06 MiB
396cb30 13.93 MiB 15.06 MiB 1.13 MiB
ce5c42b 14.31 MiB 15.49 MiB 1.19 MiB
c8596a6 6.54 MiB 7.53 MiB 1015.27 KiB
2d34233 6.54 MiB 7.55 MiB 1.01 MiB

@buenaflor buenaflor merged commit bb17c57 into main Apr 29, 2026
150 checks passed
@buenaflor buenaflor deleted the buenaflor/fix/frame-delay-seconds branch April 29, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants