Benoit Marty
5c5a5ad7fc
Fix tests
2026-04-09 09:32:52 +02:00
Benoit Marty
ef97d135cc
Move AppErrorView to the api module so that :appnav:root does not have to depend on a impl module.
2026-04-08 17:32:21 +02:00
renovate[bot]
82eebae6f2
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
8fab22ec7d
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
ce3df764ba
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
d1d5fb9cd6
Fix test compilation
2026-02-12 18:00:33 +01:00
Benoit Marty
50264a9ab0
Ignore fallback notification when the room list is rendered.
...
Add more tests.
2026-02-12 13:30:46 +01:00
Benoit Marty
73c3ffac2d
Improve FakeAppNavigationStateService
2026-02-12 13:30:06 +01:00
Benoit Marty
f93dfbdae4
Remove NavigationState.Space.
...
We do not have the concept of current space.
2026-02-11 20:41:55 +01:00
Jorge Martin Espinosa
7d731e192a
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
c901772145
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
3ef5e76e99
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
d292058a63
Change the title for AnalyticsTransactions.coldStart and .catchUp ( #5998 )
2026-01-12 14:54:13 +00:00
Jorge Martin Espinosa
06c4b9488b
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
fba32a2938
Fix wrong variable being used, improve tests
2025-12-18 14:08:38 +01:00
Jorge Martín
7864066f9a
Make sure we don't upload any user ids in tags either
2025-12-18 14:08:38 +01:00
Jorge Martín
425a694564
Add more tests to SentryAnalyticsProviderTest
2025-12-18 14:08:38 +01:00
Jorge Martín
480376ef9b
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
2cc18fa735
Add tests for SentryAnalyticsProvider
2025-12-18 14:08:38 +01:00
Jorge Martín
fe9224b807
Distinguish between indexable and non-indexable extra data
2025-12-18 14:08:38 +01:00
Jorge Martín
c864fbac8c
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
c9b904e606
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
8d0cc3fd41
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
5ca108c526
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
607b1d9023
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
33441d9d40
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
342ee0c10b
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
942eae94ad
Make SentrySdkDsn a value class instead of a qualifier
2025-12-04 12:17:52 +01:00
Jorge Martín
890b6111ea
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
6c82393bcb
Add missing doc
2025-12-04 12:17:52 +01:00
Jorge Martín
bd427735ff
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
883397e9dc
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
c6e0686dec
Reuse coroutine in DefaultAnalyticsRoomListStateWatcher instead of creating and cancelling the same one
2025-11-28 14:15:54 +01:00
Jorge Martín
ed020114dc
Add Noop variants for the new watcher interfaces in :analytics:api
2025-11-28 14:15:54 +01:00
Jorge Martín
1c576fd42d
Add AnalyticsService.cancelLongRunningTransaction and AnalyticsService.finishLongRunningTransaction
2025-11-28 14:15:54 +01:00
Jorge Martín
1d77aa447d
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
04feea5d25
Move analytic watchers to :services:analytics
2025-11-28 14:15:54 +01:00
Jorge Martín
4b3796844f
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
10b31e3e72
Add OpenRoom long running analytic transaction
2025-11-28 14:15:54 +01:00
Jorge Martín
daf7bea39e
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
e1bd189ba0
Add a performance check for notification tap -> populated timeline time
2025-11-28 14:15:54 +01:00
Jorge Martín
8815fe7986
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
3d590c1c46
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
1743f7fe04
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
f78c80803b
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
8285478688
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
eb31505dc7
Copyright: Add Element Creations Ltd. copyright
2025-11-10 11:05:05 +01:00
Benoit Marty
f86431e663
Copyright: Add final period
2025-11-10 10:13:41 +01:00
Benoit Marty
c4e0370f41
Copyright: run command uv run license-editor --repository ../element-x-android
2025-11-10 10:09:26 +01:00
Benoit Marty
9a39594b3a
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