-
-
Notifications
You must be signed in to change notification settings - Fork 220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Automatic Performance Instrumentation for MAUI (includes mobile vitals) #1837
Comments
Kotlin Multiplatform version of it: |
Any updates on these tasks? We would really make use of the 'mobile vitals' in our app |
Hey @de-preut sorry for the late reply. I'd ask @bitsandfoxes and @jamescrosswell , when they are prioritizing it. I'd love to see it land too ;) |
Having at least |
I'll let you slot it into our priorities board somewhere @bitsandfoxes 👍🏻 |
This would be huge for us. Thanks ! |
came up again from a sales led org |
I've bumped up the priority on this to "Must Have". @aritchie probably a good one for you to pick up eventually. It probably starts with creating auto transactions for common UI events (like click). I think once we have those, we get tracing on DB requests and outbound HttpRequests for free from the other/separate integrations we have for those things already... but needs testing/verifying. |
Excellent news if this gets pushed forward. |
There's also a bunch of new features that we got in native Android and iOS as well as Flutter and React Native. Just MAUI is lagging behind. This issue, and Session Replay are the highest priority features for MAUI now. |
@bruno-garcia @jamescrosswell Thoughts/questions/etc on implementing the features listed.
What is the thinking here regarding MAUI? Sentry can't really get involved until setup the MauiProgram. Do we consider startup to the first PageAppearing?
Frame rate is a value we can capture. Just not sure how we'll record it. The value does seem to bounce around a lot. Thoughts?
Should be doable using the MauiEventsBinder by watching Application.PageAppearing & Application.PageDisappearing. "Time to full display" vs "Time to initial display" I'm not sure we can differentiate.
It isn't advisable for users to use EF on MAUI. Most users from my experience are using one of the following libraries https://github.com/praeclarum/sqlite-net Both of these libraries could have their corresponding connections wrapped in a Sentry provider. Thoughts?
This can be accomplished with HTTP client factory, but will require docs on the setup.
This should be fairly straight forward to accomplish. I can start here. |
Can we read the actual startup time from the Process?
The distinction between those two seems more relevant for Web applications.... I reckon for MAUI apps we could just store one of these (TTFD perhaps).
Maybe do that in a separate follow up PR - if we do all of these in the same ticket the diff will be huge and hard to review/merge. But, we might get the second one for free (it's ADO.NET so might be instrumented via DiagnosticSource - would need to experiment to confirm that). If there was enough demand for the first one, that repo accepts contributions. We could add the instrumentation that we want to capture using the MS Activity classes... and we've got an OpenTelemetry integration that we could use to capture the resulting spans.
🎉 🙌🏻 |
@bruno-garcia @jamescrosswell I did some testing on the two big sqlite mechanisms. https://www.nuget.org/packages/sqlite-net-pcl - has absolutely zero extensibility points at this time and nothing is marked virtual. There isn't much that can be done here. https://www.nuget.org/packages/Microsoft.Data.Sqlite - Doesn't have any instrumentation plug points, but we could wrap the sqlconnection and move down the execution graph from there. I think this particular feature point is something that can be moved to the backlog for a future time. Thoughts? |
Lots of other stuff we can do instead then, lets leave Sqlite out for now. Auto transactions is n1 IMO. Then with that you can add "vitals" (the first 4). Docs here. Meaning: When the app starts as early as we can, we |
SentryHttpMessageHandler
)The complete list of modules now lives here:
https://develop.sentry.dev/sdk/telemetry/traces/modules/
The text was updated successfully, but these errors were encountered: