Skip to content
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

feat: Replay support for mobile #2208

Merged
merged 16 commits into from
Sep 2, 2024
Merged

feat: Replay support for mobile #2208

merged 16 commits into from
Sep 2, 2024

Conversation

vaind
Copy link
Collaborator

@vaind vaind commented Aug 1, 2024

This branch holds a collection of PRs that have already been reviewed and is the base for replay pre-releases before we merge to main. Closes #1193

Previously, there was #2032 but that branch name was android-specific so I've moved it here as is, with no changes other than merging the changelog.

Next, there will be new PRs that will target this branch as a base, including some improvements, addressing feedback from alpha/beta releases as well as full iOS replay support.

* minor gradle fixes

* tmp: local sentry-java build

* tmp: use relative path to sentry-java

* tmp: local java build patches

* replay options

* replay recorder

* wip: JNI native bindings

* use compatible jnigen

* add missing gradlew to flutter/android

* replay recorder JNI binding code

* replay recorder binding jni code

* jni 0.6

* wip: android jni replay

* replay binding

* glue code for jni

* chore: update to cocoa 8.24.1-alpha.0

* wip: cocoa integration

* wip: ios replay

* cleanup

* formatting

* android fixes

* move native setup to the native sdk integration

* cleanup & improvements

* improve widget filter and implement redact options

* fix image scaling

* ktlint format

* ci fixes

* fix tests

* add jnigen scripts

* use android 7.9.0 alpha.1

* move native init & close to SentryNative

* cleanup

* add macOS integration link

* rollback cocoa changes

* remove jni/jnigen

* wip: methodchannel based android recorder

* callback

* linter issues

* minor fixes

* more fixes

* linter issues

* cleanup

* improve logging

* move replay to experimental, same as in other SDKs

* improve tree shaking

* test: scheduler

* support browser test

* fix compat with old flutter

* cleanup

* rename recorder_widget_filter.dart

* fixup scheduler test

* improve test coverage

* pr cleanup

* test: widget filter

* cleanup

* test widget filter visibility

* cleanup

* always add screenshot widget

* recorder test

* cleanup

* limit recorder test to vm

* wip: integration test

* cleanup

* ktlint format

* detekt suppression

* ktlint format

* improve scheduler stop  behavior

* wip: error replay mapping

* suppress detekt TooGenericExceptionThrown

* Update flutter/lib/src/replay/recorder.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/native/java/sentry_native_java.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* improve comments

* feat: associate dart errors with replays (#2070)

* feat: associate dart errors with replays

* ktlint

* cleanup

* tests

* chote: remove path dependency

* fix tests

* feat: replay breadcrumbs (android) (#2163)

* feat: replay breadcrumbs

* ktlint format

* fixup tests

* cleanup

* linter issues

* detekt linter issue

* move touch path build to dart to deduplicate

* fix metrics app compilation

* linter issue

* test: native replay integration binding (#2189)

* wip: test native integration

* test: native replay binding

* update example

* chore: update pubspec

* fixup tests

* Update flutter/test/mocks.dart

* chore: update changelog

* fix publishing

* release: 8.6.0-alpha.2

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Copy link
Contributor

github-actions bot commented Aug 1, 2024

Fails
🚫 Please consider adding a changelog entry for the next release.
Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Instructions and example for changelog

Please add an entry to CHANGELOG.md to the "Unreleased" section. Make sure the entry includes this PR's number.

Example:

## Unreleased

- Replay support for mobile ([#2208](https://github.com/getsentry/sentry-dart/pull/2208))

If none of the above apply, you can opt out of this check by adding #skip-changelog to the PR description.

Generated by 🚫 dangerJS against 33908dd

Copy link

codecov bot commented Aug 1, 2024

Codecov Report

Attention: Patch coverage is 88.11881% with 36 lines in your changes missing coverage. Please review.

Project coverage is 88.15%. Comparing base (e0ba81f) to head (33908dd).
Report is 165 commits behind head on main.

Files with missing lines Patch % Lines
flutter/lib/src/replay/widget_filter.dart 83.63% 9 Missing ⚠️
...lutter/lib/src/native/java/sentry_native_java.dart 85.71% 7 Missing ⚠️
...ib/src/event_processor/replay_event_processor.dart 16.66% 5 Missing ⚠️
flutter/lib/src/replay/recorder.dart 88.37% 5 Missing ⚠️
flutter/lib/src/native/sentry_native_channel.dart 86.66% 4 Missing ⚠️
dart/lib/src/protocol/breadcrumb.dart 75.00% 3 Missing ⚠️
...tter/lib/src/native/cocoa/sentry_native_cocoa.dart 92.00% 2 Missing ⚠️
dart/lib/src/protocol/sentry_trace_context.dart 85.71% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2208      +/-   ##
==========================================
- Coverage   88.20%   88.15%   -0.06%     
==========================================
  Files         235      242       +7     
  Lines        8157     8416     +259     
==========================================
+ Hits         7195     7419     +224     
- Misses        962      997      +35     

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

Copy link
Contributor

github-actions bot commented Aug 1, 2024

iOS Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1245.73 ms 1265.89 ms 20.16 ms
Size 8.38 MiB 9.72 MiB 1.34 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
0db91cc 1267.63 ms 1279.69 ms 12.06 ms
9d43f71 1225.06 ms 1227.06 ms 2.00 ms
5112c69 1272.76 ms 1293.37 ms 20.61 ms
b2cbbc8 1240.00 ms 1254.37 ms 14.37 ms
a510d1d 1277.04 ms 1291.57 ms 14.53 ms
04db237 1273.29 ms 1306.50 ms 33.21 ms
df16b96 1255.24 ms 1259.40 ms 4.16 ms
25161f4 1252.35 ms 1263.84 ms 11.49 ms
cfa25fc 1251.77 ms 1275.69 ms 23.92 ms
32fa6b6 1226.21 ms 1251.78 ms 25.57 ms

App size

Revision Plain With Sentry Diff
0db91cc 8.15 MiB 9.15 MiB 1018.56 KiB
9d43f71 8.29 MiB 9.39 MiB 1.10 MiB
5112c69 8.16 MiB 9.17 MiB 1.01 MiB
b2cbbc8 8.10 MiB 9.18 MiB 1.08 MiB
a510d1d 8.16 MiB 9.17 MiB 1.01 MiB
04db237 8.15 MiB 9.13 MiB 1003.16 KiB
df16b96 8.10 MiB 9.16 MiB 1.06 MiB
25161f4 8.28 MiB 9.34 MiB 1.06 MiB
cfa25fc 8.32 MiB 9.43 MiB 1.10 MiB
32fa6b6 8.33 MiB 9.64 MiB 1.31 MiB

Previous results on branch: feat/replay

Startup times

Revision Plain With Sentry Diff
648f8bc 1262.67 ms 1290.04 ms 27.37 ms
d01e3d2 1258.43 ms 1273.94 ms 15.51 ms
3aacb23 1251.51 ms 1266.33 ms 14.82 ms
a5be5a5 1239.33 ms 1243.37 ms 4.04 ms

App size

Revision Plain With Sentry Diff
648f8bc 8.34 MiB 9.65 MiB 1.31 MiB
d01e3d2 8.38 MiB 9.72 MiB 1.34 MiB
3aacb23 8.34 MiB 9.66 MiB 1.32 MiB
a5be5a5 8.38 MiB 9.72 MiB 1.34 MiB

@vaind vaind changed the title feat: Replay support for mobile (#2032) feat: Replay support for mobile Aug 1, 2024
Copy link
Contributor

github-actions bot commented Aug 2, 2024

Android Performance metrics 🚀

  Plain With Sentry Diff
Startup time 433.06 ms 518.69 ms 85.63 ms
Size 6.52 MiB 7.61 MiB 1.08 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
7ade5af 341.04 ms 386.84 ms 45.80 ms
29297d4 377.14 ms 451.54 ms 74.40 ms
633cf2e 289.36 ms 340.38 ms 51.02 ms
b9da046 393.00 ms 455.52 ms 62.52 ms
b47809a 333.42 ms 368.36 ms 34.95 ms
2966d88 365.71 ms 422.50 ms 56.79 ms
683fd34 336.53 ms 418.10 ms 81.57 ms
3de8b9b 348.55 ms 445.84 ms 97.29 ms
dd1f7d2 338.54 ms 387.10 ms 48.56 ms
4b943a1 348.17 ms 437.15 ms 88.98 ms

App size

Revision Plain With Sentry Diff
7ade5af 5.94 MiB 6.95 MiB 1.01 MiB
29297d4 6.34 MiB 7.28 MiB 967.79 KiB
633cf2e 5.94 MiB 6.92 MiB 1001.53 KiB
b9da046 6.06 MiB 7.03 MiB 990.30 KiB
b47809a 5.94 MiB 6.96 MiB 1.02 MiB
2966d88 6.33 MiB 7.27 MiB 954.11 KiB
683fd34 6.27 MiB 7.20 MiB 960.43 KiB
3de8b9b 6.27 MiB 7.20 MiB 957.75 KiB
dd1f7d2 6.06 MiB 7.10 MiB 1.04 MiB
4b943a1 6.34 MiB 7.28 MiB 968.41 KiB

Previous results on branch: feat/replay

Startup times

Revision Plain With Sentry Diff
d01e3d2 395.96 ms 496.24 ms 100.28 ms
3aacb23 379.58 ms 461.34 ms 81.76 ms
648f8bc 472.36 ms 573.74 ms 101.38 ms

App size

Revision Plain With Sentry Diff
d01e3d2 6.52 MiB 7.61 MiB 1.08 MiB
3aacb23 6.35 MiB 7.44 MiB 1.08 MiB
648f8bc 6.35 MiB 7.44 MiB 1.08 MiB

vaind and others added 4 commits August 5, 2024 06:52
* minor gradle fixes

* tmp: local sentry-java build

* tmp: use relative path to sentry-java

* tmp: local java build patches

* replay options

* replay recorder

* wip: JNI native bindings

* use compatible jnigen

* add missing gradlew to flutter/android

* replay recorder JNI binding code

* replay recorder binding jni code

* jni 0.6

* wip: android jni replay

* replay binding

* glue code for jni

* chore: update to cocoa 8.24.1-alpha.0

* wip: cocoa integration

* wip: ios replay

* cleanup

* formatting

* android fixes

* move native setup to the native sdk integration

* cleanup & improvements

* improve widget filter and implement redact options

* fix image scaling

* ktlint format

* ci fixes

* fix tests

* add jnigen scripts

* use android 7.9.0 alpha.1

* move native init & close to SentryNative

* cleanup

* add macOS integration link

* rollback cocoa changes

* remove jni/jnigen

* wip: methodchannel based android recorder

* callback

* linter issues

* minor fixes

* more fixes

* linter issues

* cleanup

* improve logging

* move replay to experimental, same as in other SDKs

* improve tree shaking

* test: scheduler

* support browser test

* fix compat with old flutter

* cleanup

* rename recorder_widget_filter.dart

* fixup scheduler test

* improve test coverage

* pr cleanup

* test: widget filter

* cleanup

* test widget filter visibility

* cleanup

* always add screenshot widget

* recorder test

* cleanup

* limit recorder test to vm

* wip: integration test

* cleanup

* ktlint format

* detekt suppression

* ktlint format

* improve scheduler stop  behavior

* wip: error replay mapping

* suppress detekt TooGenericExceptionThrown

* Update flutter/lib/src/replay/recorder.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/native/java/sentry_native_java.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* improve comments

* feat: associate dart errors with replays (#2070)

* feat: associate dart errors with replays

* ktlint

* cleanup

* tests

* chote: remove path dependency

* wip: ios replay

* fix result callback

* iOS related refactorings

* logs

* fix tests

* call captureReplay on iOS & set

* ios replay breadcrumbs

* feat: replay breadcrumbs (android) (#2163)

* feat: replay breadcrumbs

* ktlint format

* fixup tests

* cleanup

* linter issues

* detekt linter issue

* move touch path build to dart to deduplicate

* fix metrics app compilation

* linter issue

* test: native replay integration binding (#2189)

* wip: test native integration

* test: native replay binding

* update example

* chore: update pubspec

* fixup tests

* Update flutter/test/mocks.dart

* chore: update changelog

* fix publishing

* release: 8.6.0-alpha.2

* cleanup

* fix macos compilation

* test: iOS support

* linter issues

* linter issues

* chore: update changelog

* Update flutter/lib/src/native/cocoa/sentry_native_cocoa.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
@vaind vaind force-pushed the feat/replay branch 2 times, most recently from 36f095e to 0877914 Compare August 13, 2024 12:23
@vaind vaind marked this pull request as ready for review August 19, 2024 12:59
@vaind vaind enabled auto-merge (squash) August 19, 2024 13:08
Copy link
Contributor

@buenaflor buenaflor left a comment

Choose a reason for hiding this comment

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

👍

@@ -1,5 +1,5 @@
/// The SDK version reported to Sentry.io in the submitted events.
const String sdkVersion = '8.7.0';
const String sdkVersion = '8.8.0-alpha.1';
Copy link
Contributor

Choose a reason for hiding this comment

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

should these versions be 8.8.0? we released it yesterday

@vaind vaind merged commit aba65ca into main Sep 2, 2024
62 checks passed
@vaind vaind deleted the feat/replay branch September 2, 2024 11:24
@vaind vaind mentioned this pull request Sep 2, 2024
al-farisi pushed a commit to Polyrific-Inc/sentry-dart that referenced this pull request Sep 24, 2024
* chore(deps): update Cocoa SDK to v8.30.1 (getsentry#2155)

* chore: update flutter/scripts/update-cocoa.sh to 8.30.1

* formatting

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Set dart runtime version with parsed `Platform.version` (getsentry#2156)

* Parse semver

* Move dart version to late and only extract it once during init

* Set dartVersion to private and move _extractDartVersion out of init

* Record dropped spans in client reports (getsentry#2154)

* Record dropped spans

* Changelog

* Naming

* Update CHANGELOG.md

* Send dropped event as well for rate limit and network error

* Update

* Dart analyze

* Fix test

* Improve comments

* improvements

* Apply same logic of beforeSend to event processor

* Fix test

* Formatting

* Comments

* Rename mock

* Fix compatibility with Drift 2.19.0 (getsentry#2162)

* Add support for drift 2.19.0

* Update

* fix test

* Update CHANGELOG

* Add ignores

* Fix flaky app start tests (getsentry#2157)

* chore(deps): update Symbol collector CLI to v1.19.0 (getsentry#2164)

Co-authored-by: GitHub <noreply@github.com>

* Deprecate `setExtra` (getsentry#2159)

* deprecate

* update

* Update deprecate message

* Update CHANGELOG

* Formatting and ignore warnings

* analyze

* deps: update ktlint (getsentry#2166)

the new version should automatically resolve outdated comments

* ci: validate publish dry runs (getsentry#2161)

* draft script for checking publish

* draft implementation

* comment

* trigger ci

* Update workflow

* Update workflow

* Update workflow

* Update workflow

* revert example{

* Update workflow

* Temporarily restrict drift for testing

* Update pubspec.yaml

* Update pubspec.yaml

* Revert

* Update analyze.yml

* Update event_example.dart

* Add flag to disable reporting of view hierarchy identifiers (getsentry#2158)

* Add report view hierarchy identifier option

* Update docs

* Update CHANGELOG

* Fix test

* Formatting

* Update CHANGELOG.md

* release: 8.4.0

* Update CHANGELOG

* build(deps): bump reactivecircus/android-emulator-runner (getsentry#2171)

Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.31.0 to 2.32.0.
- [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases)
- [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md)
- [Commits](ReactiveCircus/android-emulator-runner@77986be...f0d1ed2)

---
updated-dependencies:
- dependency-name: reactivecircus/android-emulator-runner
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): update Cocoa SDK to v8.31.1 (getsentry#2174)

* chore: update flutter/scripts/update-cocoa.sh to 8.31.1

* format generated binding

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Ivan Dlugos <dlugos.ivan@gmail.com>

* chore(deps): update Android SDK to v7.12.0 (getsentry#2173)

* chore: update flutter/scripts/update-android.sh to 7.12.0

* chore: update AGP and Kotlin

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: Ivan Dlugos <dlugos.ivan@gmail.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Fix truncated stacktraces in unhandled errors (getsentry#2152)

* Fix stacktrace

* Fix stacktrace

* Update

* Update changelog

* Add test cases

* formatting

* formatting

* Fix await

* build(deps): bump ruby/setup-ruby from 1.185.0 to 1.187.0 (getsentry#2172)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.185.0 to 1.187.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@3a77c29...161cd54)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* fix analyze issues (getsentry#2177)

* Update CHANGELOG.md (getsentry#2178)

* Disable sff & frame delay detection on web, linux and windows (getsentry#2182)

* disable

* chore: update metrics/flutter.properties to 3.22.3 (getsentry#2180)

Co-authored-by: GitHub <noreply@github.com>

* build(deps): bump gradle/gradle-build-action from 3.4.2 to 3.5.0 (getsentry#2186)

Bumps [gradle/gradle-build-action](https://github.com/gradle/gradle-build-action) from 3.4.2 to 3.5.0.
- [Release notes](https://github.com/gradle/gradle-build-action/releases)
- [Commits](gradle/gradle-build-action@66535aa...ac2d340)

---
updated-dependencies:
- dependency-name: gradle/gradle-build-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.187.0 to 1.188.0 (getsentry#2187)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.187.0 to 1.188.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@161cd54...50ba338)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Support `ignoredExceptionsForType` (getsentry#2150)

* Set platform in sentry frames for better raw stacktrace representation (getsentry#2193)

* add platform to stacktrace

* update

* Update CHANGELOG

* Fix tests

* Fix test

* release: 8.5.0

* chore(deps): update Cocoa SDK to v8.32.0 (getsentry#2195)

* chore: update flutter/scripts/update-cocoa.sh to 8.32.0

* Format

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore(deps): update Symbol collector CLI to v1.21.0 (getsentry#2196)

Co-authored-by: GitHub <noreply@github.com>

* Implement error type identifier to mitigate obfuscated Flutter issue titles (getsentry#2170)

* try to mitigate runtime type not being obfuscated

* fix imports

* Remove prints

* Update

* Update

* Update exception_type_identifier.dart

* Add caching

* Update

* split up dart:io and dart:html exceptions

* fix analyze

* Update CHANGELOG

* update

* Add more tests

* Update docs

* Update options docs

* remove print

* remove CustomException

* import with show

* try fix test

* Update CHANGELOG.md

* Update CHANGELOG.md

* Fix analyze

* try fix test

* Update CHANGELOG.md

* chore: update flutter/scripts/update-android.sh to 7.12.1 (getsentry#2198)

Co-authored-by: GitHub <noreply@github.com>

* Deprecate `enableTracing` (getsentry#2199)

* Deprecate

* Add CHANGELOG

* Fix flaky exception identifier test on web (getsentry#2201)

* Fix test

* build(deps): bump ruby/setup-ruby from 1.188.0 to 1.190.0 (getsentry#2202)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.188.0 to 1.190.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@50ba338...a6e6f86)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* release: 8.6.0

* chore: update flutter/scripts/update-android.sh to 7.13.0 (getsentry#2206)

Co-authored-by: GitHub <noreply@github.com>

* Add `ignored` discard reason (getsentry#2204)

* deps: change updater PR strategy to update on low-risk updates (getsentry#2210)

Flutter SDK in metrics and symbol-collector update jobs aren't expected to break so there's little reason to keep old PRs

* feat: add span level measurements getsentry#1855 (getsentry#2214)

* feat: add span level measurements

* add changelog entry

* add issue link to changelog

* fix: correct changelog

* moved the stored measurements from root span to tracer

* changed issue number to pr number in changelog

* fixed formatting

* Update CHANGELOG.md

Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

---------

Co-authored-by: Martin <martin@haintz.dev>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* feat: add `ignoreTransactions` and ignoreErrors` getsentry#1391 (getsentry#2207)

* Add ignoreTransactions and ignoreErrors getsentry#1391

* chore: add changelog entry

* move methods from sentry_options to sentry_client and change to private

* change discard reason to ignored

Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* change iterable to list

* add event recorder to ignoredTransactions

* add tests for ignoreTransactions

* set ignoreErrors list to empty list a default

Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* change variables to final for ignoreTransaction

Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* change var to final for ignoreErrors and adapt test

* Update CHANGELOG.md

Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* Add example for ignoreTransactions and ignoreErrors to changelog

* fix: check for empty ignoreError and ignoreTransaction before handling regex

* moved ignoreTransactions and ignoreErrors back to unreleased area in CHANGELOG.md

* refactored implementation of ignoreErrors and ignoreTransactions and improved test cases

* removed unnecessary backslash from tests

---------

Co-authored-by: Martin <>
Co-authored-by: Martin <martin@haintz.dev>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>

* Deserialize and serialize unknown fields (getsentry#2153)

* Add proxy support (getsentry#2192)

* chore(deps): update Cocoa SDK to v8.33.0 (getsentry#2223)

* chore: update flutter/scripts/update-cocoa.sh to 8.33.0

* Formatting

* fix analyze

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* release: 8.7.0

* add ignoreRoutes parameter to SentryNavigatorObserver (getsentry#2218)

* add ignoreRoutes parameter to SentryNavigatorObserver

* add unitTest for ignoreRoutes

* add changelog entry for ignoreRoutes in the SentryNaviagtorObserver

* add for ignore routes, that not TTID and TTFD spans are created

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add further tests for ignore routes

* fix changelog and move ignoreRoutes to unreleased

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore(deps): update Flutter SDK (metrics) to v3.24.0 (getsentry#2229)

Co-authored-by: GitHub <noreply@github.com>

* chore(deps): update Android SDK to v7.14.0 (getsentry#2228)

Co-authored-by: GitHub <noreply@github.com>

* test: flutter wasm (getsentry#2231)

* test: flutter wasm

* temporarily disable failing tests

* fixup ci

* cleanup

* feat: Debouncing of SentryWidgetsBindingObserver.didChangeMetrics. getsentry#400 (getsentry#2232)

* feat: add debouncer for SentryWidgetsBindingObserver.didChangeMetrics

* adapt tests for debouncing

* add changelog entry for debouncer

* Update flutter/lib/src/utils/debouncer.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/test/widgets_binding_observer_test.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add internal to debouncer and add whitespaces to comments

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Provide a way to cause an example native crash from Flutter (getsentry#2239)

* add SentryFlutter.nativeCrash() for Android and iOS

* add changelog entry

* remove unused variable

* improved kotlin implementation

* fix kotlin analysis warnings

* Update CHANGELOG.md

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* fix kotlin linter errors

* remove whitespace

* add Description for nativeCrash

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore(deps): update Cocoa SDK to v8.35.1 (getsentry#2247)

* chore: update flutter/scripts/update-cocoa.sh to 8.35.1

* format

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: fix cocoa bump changelog (getsentry#2248)

* release: 8.8.0

* chore(deps): update Flutter SDK (metrics) to v3.24.1 (getsentry#2245)

Co-authored-by: GitHub <noreply@github.com>

* chore(deps): update Cocoa SDK to v8.36.0 (getsentry#2252)

* chore: update flutter/scripts/update-cocoa.sh to 8.36.0

* update

---------

Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* chore: update windows code based on latest flutter template with plugin_ffi (getsentry#2243)

* allow internet and network state access in the flutter example app (getsentry#2255)

* allow internet and network state access in the example app

* add changelog

* feat: Replay support for mobile (getsentry#2208)

* Flutter replay for Android (getsentry#2032)

* minor gradle fixes

* tmp: local sentry-java build

* tmp: use relative path to sentry-java

* tmp: local java build patches

* replay options

* replay recorder

* wip: JNI native bindings

* use compatible jnigen

* add missing gradlew to flutter/android

* replay recorder JNI binding code

* replay recorder binding jni code

* jni 0.6

* wip: android jni replay

* replay binding

* glue code for jni

* chore: update to cocoa 8.24.1-alpha.0

* wip: cocoa integration

* wip: ios replay

* cleanup

* formatting

* android fixes

* move native setup to the native sdk integration

* cleanup & improvements

* improve widget filter and implement redact options

* fix image scaling

* ktlint format

* ci fixes

* fix tests

* add jnigen scripts

* use android 7.9.0 alpha.1

* move native init & close to SentryNative

* cleanup

* add macOS integration link

* rollback cocoa changes

* remove jni/jnigen

* wip: methodchannel based android recorder

* callback

* linter issues

* minor fixes

* more fixes

* linter issues

* cleanup

* improve logging

* move replay to experimental, same as in other SDKs

* improve tree shaking

* test: scheduler

* support browser test

* fix compat with old flutter

* cleanup

* rename recorder_widget_filter.dart

* fixup scheduler test

* improve test coverage

* pr cleanup

* test: widget filter

* cleanup

* test widget filter visibility

* cleanup

* always add screenshot widget

* recorder test

* cleanup

* limit recorder test to vm

* wip: integration test

* cleanup

* ktlint format

* detekt suppression

* ktlint format

* improve scheduler stop  behavior

* wip: error replay mapping

* suppress detekt TooGenericExceptionThrown

* Update flutter/lib/src/replay/recorder.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/native/java/sentry_native_java.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* improve comments

* feat: associate dart errors with replays (getsentry#2070)

* feat: associate dart errors with replays

* ktlint

* cleanup

* tests

* chote: remove path dependency

* fix tests

* feat: replay breadcrumbs (android) (getsentry#2163)

* feat: replay breadcrumbs

* ktlint format

* fixup tests

* cleanup

* linter issues

* detekt linter issue

* move touch path build to dart to deduplicate

* fix metrics app compilation

* linter issue

* test: native replay integration binding (getsentry#2189)

* wip: test native integration

* test: native replay binding

* update example

* chore: update pubspec

* fixup tests

* Update flutter/test/mocks.dart

* chore: update changelog

* fix publishing

* release: 8.6.0-alpha.2

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>

* fix: update android calls after SDK update (getsentry#2211)

* fix: update android calls after SDK update

* ktlint

* feat: iOS replay support (getsentry#2209)

* minor gradle fixes

* tmp: local sentry-java build

* tmp: use relative path to sentry-java

* tmp: local java build patches

* replay options

* replay recorder

* wip: JNI native bindings

* use compatible jnigen

* add missing gradlew to flutter/android

* replay recorder JNI binding code

* replay recorder binding jni code

* jni 0.6

* wip: android jni replay

* replay binding

* glue code for jni

* chore: update to cocoa 8.24.1-alpha.0

* wip: cocoa integration

* wip: ios replay

* cleanup

* formatting

* android fixes

* move native setup to the native sdk integration

* cleanup & improvements

* improve widget filter and implement redact options

* fix image scaling

* ktlint format

* ci fixes

* fix tests

* add jnigen scripts

* use android 7.9.0 alpha.1

* move native init & close to SentryNative

* cleanup

* add macOS integration link

* rollback cocoa changes

* remove jni/jnigen

* wip: methodchannel based android recorder

* callback

* linter issues

* minor fixes

* more fixes

* linter issues

* cleanup

* improve logging

* move replay to experimental, same as in other SDKs

* improve tree shaking

* test: scheduler

* support browser test

* fix compat with old flutter

* cleanup

* rename recorder_widget_filter.dart

* fixup scheduler test

* improve test coverage

* pr cleanup

* test: widget filter

* cleanup

* test widget filter visibility

* cleanup

* always add screenshot widget

* recorder test

* cleanup

* limit recorder test to vm

* wip: integration test

* cleanup

* ktlint format

* detekt suppression

* ktlint format

* improve scheduler stop  behavior

* wip: error replay mapping

* suppress detekt TooGenericExceptionThrown

* Update flutter/lib/src/replay/recorder.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/native/java/sentry_native_java.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* improve comments

* feat: associate dart errors with replays (getsentry#2070)

* feat: associate dart errors with replays

* ktlint

* cleanup

* tests

* chote: remove path dependency

* wip: ios replay

* fix result callback

* iOS related refactorings

* logs

* fix tests

* call captureReplay on iOS & set

* ios replay breadcrumbs

* feat: replay breadcrumbs (android) (getsentry#2163)

* feat: replay breadcrumbs

* ktlint format

* fixup tests

* cleanup

* linter issues

* detekt linter issue

* move touch path build to dart to deduplicate

* fix metrics app compilation

* linter issue

* test: native replay integration binding (getsentry#2189)

* wip: test native integration

* test: native replay binding

* update example

* chore: update pubspec

* fixup tests

* Update flutter/test/mocks.dart

* chore: update changelog

* fix publishing

* release: 8.6.0-alpha.2

* cleanup

* fix macos compilation

* test: iOS support

* linter issues

* linter issues

* chore: update changelog

* Update flutter/lib/src/native/cocoa/sentry_native_cocoa.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>

* fix: cocoa sdk renamed errorSampleRate to onErrorSampleRate

* fixup changelog

* release: 8.8.0-alpha.1

* chore: update changelog

* update changelog

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>

* chore: fixup changelog (getsentry#2260)

* refactor: Remove workaround for Spotlight image handling (getsentry#2253)

* fix: capture replay call on iOS (getsentry#2264)

* Support allowUrls, denyUrls (getsentry#2227)

* moved regex matcher into regex utils

* add allowUrls, denyUrls for web

* add changelog entry for allowUrls and denyUrls

* add conditional import for non web platforms

* fix multiplatform build

* fix wording in sentry options

* Update dart/lib/src/utils/regex_utils.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update dart/lib/src/sentry_options.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update dart/lib/src/sentry_options.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add tests for isMatchingRegexPattern

* simplified allowUrls and denyUrls handling

* moved allowUrls and denyUrls from dart to flutter

* add event processor for html

* rephrased documentation and split up tests for web and mobile platform.

* add expected error

* Update scripts/publish_validation/bin/publish_validation.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/event_processor/url_filter/html_url_filter_event_processor.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/event_processor/url_filter/web_url_filter_event_processor.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Only access renderObject if `hasSize` is true (getsentry#2263)

* feat: asset images don't need to be obscured in replay (getsentry#2269)

* feat: asset images don't need to be obscured

* chore: update changelog

* feat: improve obscure rectangle fit/size (getsentry#2236)

* chore(deps): update Flutter SDK (metrics) to v3.24.2 (getsentry#2272)

Co-authored-by: GitHub <noreply@github.com>

* Fix: Support allowUrls, denyUrls (getsentry#2271)

* moved regex matcher into regex utils

* add allowUrls, denyUrls for web

* add changelog entry for allowUrls and denyUrls

* add conditional import for non web platforms

* fix multiplatform build

* fix wording in sentry options

* Update dart/lib/src/utils/regex_utils.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update dart/lib/src/sentry_options.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update dart/lib/src/sentry_options.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add tests for isMatchingRegexPattern

* simplified allowUrls and denyUrls handling

* moved allowUrls and denyUrls from dart to flutter

* add event processor for html

* rephrased documentation and split up tests for web and mobile platform.

* add expected error

* Update scripts/publish_validation/bin/publish_validation.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/event_processor/url_filter/html_url_filter_event_processor.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Update flutter/lib/src/event_processor/url_filter/web_url_filter_event_processor.dart

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* modified code to go through stacktrace frames

* change matching to window.location

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Symbolicate Dart stacktrace on Flutter Android and iOS without debug images from native sdks (getsentry#2256)

* add symbolication

* update implementation

* update

* update

* update

* update

* update

* update comment

* update

* update

* update

* fix

* update

* fix tests

* fix initial value test

* Update comment and test

* update

* Update NeedsSymbolication

* revert sample

* revert

* update

* update naming

* update naming and comments of flag

* set stacktrace in hint

* update

* add changelog

* update

* fix test

* fix test

* cache debug image

* updaet

* update var name

* updaet

* update naming

* improve names

* break early safeguard for parsing stacktrace and dont throw in hex format parsing

* revert load native image list integration

* update

* fix analyze

* fix analyze

* feat: capture touch breadcrumbs for all buttons (getsentry#2242)

* chore: cleanup user interaction widget code

* renames & more cleanup

* more cleanup

* more refactoring & clenaup before actual functional changes

* more refactoring

* feat: collect touch element path

* update tests

* add tests for the new support of non-keyed button presses

* cleanup & improve existing code

* chore: update changelog

* update native replay integration with touch breadcrumb path

* fix tests

* Update CHANGELOG.md

* linter issues

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* fix: repost replay screenshots on android while idle (getsentry#2275)

* fix: repost replay screenshots on android while idle

* chore: changelog

* review change

* chore: rename errorSampleRate to onErrorSampleRate (getsentry#2270)

* chore: rename errorSampleRate to onErrorSampleRate

* Update CHANGELOG.md

* release: 8.9.0

* Update CHANGELOG.md

* build(deps): bump natiginfo/action-detekt-all from 1.23.6 to 1.23.7 (getsentry#2278)

Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.23.6 to 1.23.7.
- [Release notes](https://github.com/natiginfo/action-detekt-all/releases)
- [Commits](natiginfo/action-detekt-all@b9daaf5...6bf4342)

---
updated-dependencies:
- dependency-name: natiginfo/action-detekt-all
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ruby/setup-ruby from 1.190.0 to 1.191.0 (getsentry#2279)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.190.0 to 1.191.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@a6e6f86...52753b7)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* Fix typo (getsentry#2283)

Fixes a small typo I stumbled upon when reading through the changelogs.

#skip-changelog

* chore(deps): update Flutter SDK (metrics) to v3.24.3 (getsentry#2287)

Co-authored-by: GitHub <noreply@github.com>

* fix: event processor failed to stop processing (getsentry#2289)

* test: rethrow exceptions (getsentry#2290)

* test: rethrow in native SDK integration

* test: rethrow in automated test mode

* fix event processor runner

* test: use options.automatedTestMode everywhere

* update failing tests

* fix tests

* formatting

* fix tests

* fix: tests

* fix tests

* update comments

* Improve app start integration (getsentry#2266)

* build(deps): bump ruby/setup-ruby from 1.191.0 to 1.192.0 (getsentry#2292)

Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.191.0 to 1.192.0.
- [Release notes](https://github.com/ruby/setup-ruby/releases)
- [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb)
- [Commits](ruby/setup-ruby@52753b7...a6b46b8)

---
updated-dependencies:
- dependency-name: ruby/setup-ruby
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Update CODEOWNERS (getsentry#2300)

* block app start if appLaunchedInForeground is not set. (getsentry#2291)

* block app start if appLaunchedInForeground is not set.

* add changelog entry

* call public method

* fix deprecated toUpperCase to uppercase

* Update flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add 60 second timeout for app starts for android native

* fix missing time imports

* rearrange line

* add comma

---------

Co-authored-by: Giancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>

* add missing file

* rename deprecated method to avoid conflict if the method still available

* add deleted file

* merge with main

* rename deprecated method to avoid conflict if the method still available

* adde missing import

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub <noreply@github.com>
Co-authored-by: GIancarlo Buenaflor <giancarlo_buenaflor@yahoo.com>
Co-authored-by: Ivan Dlugos <6349682+vaind@users.noreply.github.com>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Dlugos <dlugos.ivan@gmail.com>
Co-authored-by: Denis Andrašec <denrase@gmail.com>
Co-authored-by: Martin Haintz <martin.haintz@gmail.com>
Co-authored-by: Martin <martin@haintz.dev>
Co-authored-by: Giancarlo Buenaflor <giancarlobuenaflor97@gmail.com>
Co-authored-by: Markus Hintersteiner <markus.hintersteiner@sentry.io>
Co-authored-by: Karl Heinz Struggl <kahest@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Session Replay support for Flutter on Mobile
3 participants