renovate[bot]
f85fcf6a63
fix(deps): update dependency io.sentry:sentry-android to v8.35.0 and enable ANR profiling ( #6331 )
...
* fix(deps): update dependency io.sentry:sentry-android to v8.35.0
* Add profile sampling of ANRs
This *should* help debugging them.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io >
2026-03-16 09:13:08 +00:00
Jorge Martin Espinosa
70d5e1868a
Make 'room list catch-up' analytics transaction network aware ( #6233 )
...
* Make 'room list catch-up' analytics transaction network aware.
* Add `RoomListService.isInitialSyncDone`. Use this to simplify `DefaultAnalyticsRoomListStateWatcher`'s logic.
2026-03-03 13:16:58 +01:00
Jorge Martin Espinosa
2f80b101c5
Add extra analytics for notification performance ( #6237 )
...
* Add extra analytics for notification performance
Add technical spans to track how long a notification fetching work request takes to run, then how long it takes to actually fetch the events for the notifications
* Remove `withContext(io)` for `FetchNotificationsWorker`
The default `Dispatchers.Default` dispatcher used should be good enough and more performant
* Add network check span
2026-02-24 13:39:32 +01:00
Benoit Marty
960884b55b
Fix test compilation
2026-02-12 18:00:33 +01:00
Benoit Marty
48fae51ef0
Ignore fallback notification when the room list is rendered.
...
Add more tests.
2026-02-12 13:30:46 +01:00
Benoit Marty
a651a1cd6f
Improve FakeAppNavigationStateService
2026-02-12 13:30:06 +01:00
Benoit Marty
83fee6d9ba
Remove NavigationState.Space.
...
We do not have the concept of current space.
2026-02-11 20:41:55 +01:00
Jorge Martin Espinosa
f7bfcedd57
Try fixing performance metrics ( #6046 )
...
We've detected outliers in the `Up-to-date room list` and `Open a room` transactions in Sentry.
This commit tries to make sure we're starting/stopping the long running transactions when needed.
2026-01-26 15:41:58 +01:00
Benoit Marty
657a610f53
Metro 0.10.0: Classes annotated with ContributesIntoSet do not need to be annotated with Inject.
2026-01-20 10:13:39 +01:00
Jorge Martin Espinosa
28b63745f4
When a duplicate room list entry is found, report it and remove it ( #6006 )
...
* When a duplicate room list entry is found, report it and remove it
* Fix tests and fixtures
* Simplify how the updates are described in the Sentry reports
2026-01-14 10:56:45 +00:00
Jorge Martin Espinosa
536227883c
Change the title for AnalyticsTransactions.coldStart and .catchUp ( #5998 )
2026-01-12 14:54:13 +00:00
Jorge Martin Espinosa
71031008dd
Adjust metrics to the new specifications ( #5937 )
...
* Add `AnalyticsTransactions` with a set of `TransactionDefinition` items matching those in the user story
* Use that for `AnalyticsLongRunningTransactions`, make sure we send the right fields (name, operation, description)
* Add `AnalyticsSendMessageWatcher` to track how long it takes for an event to be sent and for us to get a call back for that from sync
* Add `Noop` implementation for enterprise
2026-01-05 16:23:26 +01:00
Jorge Martín
dd7649414d
Fix wrong variable being used, improve tests
2025-12-18 14:08:38 +01:00
Jorge Martín
165032ea02
Make sure we don't upload any user ids in tags either
2025-12-18 14:08:38 +01:00
Jorge Martín
515f7f4946
Add more tests to SentryAnalyticsProviderTest
2025-12-18 14:08:38 +01:00
Jorge Martín
b5d6843725
Inject SentryDsn the same way we do with SentrySdkDsn so we can fake it for tests
2025-12-18 14:08:38 +01:00
Jorge Martín
9a9e84f6c8
Add tests for SentryAnalyticsProvider
2025-12-18 14:08:38 +01:00
Jorge Martín
7fe3b18699
Distinguish between indexable and non-indexable extra data
2025-12-18 14:08:38 +01:00
Jorge Martín
20c0d0190e
Add extra code to make sure we can't upload a session/user id as an extra by mistake
2025-12-18 14:08:38 +01:00
Jorge Martín
a4b908bc18
Integrate the new use case with Sentry
...
We'll upload the store sizes as different fields so we can later use them to filter transaction/issues
2025-12-18 14:08:38 +01:00
Jorge Martín
18482a99e3
Add AnalyticsUserData, with keys for several extras we want to upload to Sentry.
...
Add the `HOMESERVER` extra, with a hashed homeserver value. This is only so we can identify devices using a problematic HS (like matrix.org under heavy load).
2025-12-18 14:08:38 +01:00
Jorge Martín
367bbc7e4b
Create addUserData method in the analytics providers
...
This allows us to globally add arbitrary data to the events and transactions
2025-12-18 14:08:38 +01:00
Jorge Martín
7e3acd6b58
Add Sentry transaction so we can check how long it takes to vacuum and if there were any errors when doing it
2025-12-10 15:22:16 +01:00
Jorge Martín
9e997a2fa6
Fix: use the right BuildTimeConfig field for the SDK DSN
...
We were using `SERVICES_SENTRY_SDK_DSN`, but the enterprise template uses `SERVICES_SENTRY_DSN_RUST`
2025-12-04 22:53:39 +01:00
Jorge Martín
739f12d603
Replace AnalyticsSdkSpanFactory with AnalyticsSdkManager.
...
`AnalyticsSdkManager` also enables and disables Sentry logging in the SDK based on analytics user content.
2025-12-04 12:17:52 +01:00
Jorge Martín
b31267d7c7
Make SentrySdkDsn a value class instead of a qualifier
2025-12-04 12:17:52 +01:00
Jorge Martín
c7a5ce152e
Fix providing the Sentry SDK DSN in Element Pro when no analytic modules are enabled
2025-12-04 12:17:52 +01:00
Jorge Martín
6dd6ce1ad4
Add missing doc
2025-12-04 12:17:52 +01:00
Jorge Martín
11f41629c1
Allow bridging Sentry spans to the SDK ones.
...
Add distributed tracing for `Room.timelineWithConfiguration`, so we can inspect the associated Rust trace.
2025-12-04 12:17:52 +01:00
Jorge Martín
53ab38d990
Enable Sentry in the SDK: add SDK Sentry DSN value
...
This is provided to the SDK in `PlatformInitializer`.
2025-12-04 12:17:52 +01:00
Jorge Martín
568c1ae90d
Reuse coroutine in DefaultAnalyticsRoomListStateWatcher instead of creating and cancelling the same one
2025-11-28 14:15:54 +01:00
Jorge Martín
f098c5e027
Add Noop variants for the new watcher interfaces in :analytics:api
2025-11-28 14:15:54 +01:00
Jorge Martín
29117ce93d
Add AnalyticsService.cancelLongRunningTransaction and AnalyticsService.finishLongRunningTransaction
2025-11-28 14:15:54 +01:00
Jorge Martín
884c547123
Extract from_notification extra to a constant in IntentNavigationExtras
...
Allow `IntentProvider` to receive extras and `PendingIntentFactory` to send them.
2025-11-28 14:15:54 +01:00
Jorge Martín
71bfffe58f
Move analytic watchers to :services:analytics
2025-11-28 14:15:54 +01:00
Jorge Martín
93feed38bf
Add transaction trees for opening a room so we can have a nice trace view
2025-11-28 14:15:54 +01:00
Jorge Martín
2a011bf072
Add OpenRoom long running analytic transaction
2025-11-28 14:15:54 +01:00
Jorge Martín
c0e66e9d49
Add another performance check for cold start time until the cached room list is displayed
2025-11-28 14:15:54 +01:00
Jorge Martín
5681d7c611
Add a performance check for notification tap -> populated timeline time
2025-11-28 14:15:54 +01:00
Jorge Martín
1b868e73c7
Add a 'warm' room list performance check:
...
We want to measure how long it takes the SDK to update the room list when the app comes back from being in background.
Note we don't want to check this in cold starts, only warm ones.
2025-11-28 14:15:54 +01:00
Jorge Martín
766c23721e
Have long running analytic transactions return actual transactions.
...
Also add `AnalyticsService.getLongRunningTransaction` and change `AnalyticsService.stopLongRunningTransaction` to `removeLongRunningTransaction`.
2025-11-28 14:15:54 +01:00
Jorge Martin Espinosa
8718bd5239
Add NIGHTLY env for Sentry ( #5779 )
...
Previously, nightly issue reports and performance transactions were uploaded to 'DEBUG', which may make sense for issues, but not for performance traces.
2025-11-20 15:17:32 +01:00
Jorge Martin Espinosa
c6c2f4a267
Add some performance metrics for Sentry ( #5760 )
...
- Add `AnalyticsService.startTransaction(...)` to start a logging transaction that can be uploaded to Sentry if the user enabled the analytics upload.
- Add `AnalyticsTransaction` wrapper to abstract the Sentry ones.
- Added several helper methods to improve the UX around these transactions.
- Then measure:
- Time until the first sync, and how it ended.
- Time until the first rooms are displayed.
- Time to load a room or a preview.
- Time to load a timeline.
2025-11-19 11:42:55 +00:00
Benoit Marty
b3ec256dfa
API modules do not need to setup dependency injection.
...
Move the implementation to the impl modules.
2025-11-12 19:05:39 +01:00
Benoit Marty
1292da2a72
Copyright: Add Element Creations Ltd. copyright
2025-11-10 11:05:05 +01:00
Benoit Marty
b748fcc631
Copyright: Add final period
2025-11-10 10:13:41 +01:00
Benoit Marty
0a0224b586
Copyright: run command uv run license-editor --repository ../element-x-android
2025-11-10 10:09:26 +01:00
Benoit Marty
1b4aeaa79a
Merge pull request #5604 from element-hq/feature/bma/noAnalytics
...
Add missing tests on the analytic modules
2025-10-24 11:03:53 +02:00
Benoit Marty
948c68b1ad
Cleanup
2025-10-24 09:47:04 +02:00
Benoit Marty
b1033c4bf6
Add missing test on DefaultScreenTracker
2025-10-24 09:41:46 +02:00