Skip to content

feat(feedback): Feedback Widget Drop 2 #4726

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

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open

feat(feedback): Feedback Widget Drop 2 #4726

wants to merge 21 commits into from

Conversation

antonis
Copy link
Collaborator

@antonis antonis commented Apr 7, 2025

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

This PR contains reviewed PRs for the feedback widget:

Documentation

💡 Motivation and Context

Fixes #4302

💚 How did you test it?

CI and manual testing of individual PRs

📝 Checklist

  • 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.
  • I updated the wizard if needed.
  • All tests passing
  • No breaking changes

🔮 Next steps

#skip-changelog

antonis and others added 2 commits April 7, 2025 13:01
* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Include in the feedback integration

* Fix circular dependency

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Rename FeedbackButtonProps in tests for clarity

* Add missing function call in test

Co-authored-by: Krystof Woldrich <[email protected]>

* Adds missing semicolon in test

* Adds feedback button in expo app

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
# Conflicts:
#	CHANGELOG.md
Copy link
Contributor

github-actions bot commented Apr 7, 2025

Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against 1728356

Copy link
Contributor

github-actions bot commented Apr 7, 2025

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 387.02 ms 388.68 ms 1.66 ms
Size 7.15 MiB 8.42 MiB 1.26 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
60d7316+dirty 475.43 ms 535.26 ms 59.84 ms
c991c90+dirty 270.25 ms 290.85 ms 20.60 ms
5bb8d5f+dirty 356.71 ms 389.65 ms 32.94 ms
3ffcddd+dirty 244.82 ms 295.47 ms 50.65 ms
7bc4d75+dirty 420.96 ms 472.25 ms 51.29 ms
22e31b6+dirty 295.75 ms 346.73 ms 50.98 ms
e652a2e+dirty 368.83 ms 360.91 ms -7.91 ms
e1b1c86+dirty 433.10 ms 451.67 ms 18.56 ms
8ba5377+dirty 361.68 ms 370.62 ms 8.94 ms
255d28b+dirty 389.76 ms 382.73 ms -7.03 ms

App size

Revision Plain With Sentry Diff
60d7316+dirty 7.15 MiB 8.38 MiB 1.22 MiB
c991c90+dirty 7.15 MiB 8.38 MiB 1.22 MiB
5bb8d5f+dirty 7.15 MiB 8.21 MiB 1.06 MiB
3ffcddd+dirty 7.15 MiB 8.04 MiB 912.17 KiB
7bc4d75+dirty 7.15 MiB 8.35 MiB 1.20 MiB
22e31b6+dirty 7.15 MiB 8.10 MiB 981.29 KiB
e652a2e+dirty 7.15 MiB 8.38 MiB 1.23 MiB
e1b1c86+dirty 7.15 MiB 8.40 MiB 1.25 MiB
8ba5377+dirty 7.15 MiB 8.39 MiB 1.23 MiB
255d28b+dirty 7.15 MiB 8.39 MiB 1.23 MiB

Previous results on branch: feedback-ui-2

Startup times

Revision Plain With Sentry Diff
dfd86ad+dirty 460.96 ms 448.06 ms -12.90 ms
2816e90+dirty 389.94 ms 378.32 ms -11.62 ms
5307edc+dirty 421.65 ms 414.87 ms -6.79 ms
6e4d2e1+dirty 394.19 ms 378.08 ms -16.11 ms
1be9d5e+dirty 406.10 ms 398.06 ms -8.04 ms

App size

Revision Plain With Sentry Diff
dfd86ad+dirty 7.15 MiB 8.42 MiB 1.26 MiB
2816e90+dirty 7.15 MiB 8.42 MiB 1.26 MiB
5307edc+dirty 7.15 MiB 8.42 MiB 1.26 MiB
6e4d2e1+dirty 7.15 MiB 8.40 MiB 1.25 MiB
1be9d5e+dirty 7.15 MiB 8.42 MiB 1.26 MiB

Copy link
Contributor

github-actions bot commented Apr 7, 2025

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1224.20 ms 1230.27 ms 6.07 ms
Size 2.63 MiB 3.81 MiB 1.18 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
e46354e+dirty 1224.49 ms 1228.58 ms 4.09 ms
22bcd92+dirty 1230.50 ms 1233.39 ms 2.89 ms
b677956+dirty 1221.47 ms 1217.90 ms -3.57 ms
db44eaf+dirty 1227.09 ms 1230.65 ms 3.56 ms
366c2d0+dirty 1232.29 ms 1240.86 ms 8.57 ms
c4bd70f+dirty 1228.69 ms 1228.69 ms -0.00 ms
5bb8d5f+dirty 1235.47 ms 1237.39 ms 1.92 ms
42438c2+dirty 1216.27 ms 1221.15 ms 4.88 ms
80e955a+dirty 1227.94 ms 1230.26 ms 2.32 ms
e652a2e+dirty 1221.86 ms 1219.79 ms -2.07 ms

App size

Revision Plain With Sentry Diff
e46354e+dirty 2.63 MiB 3.75 MiB 1.12 MiB
22bcd92+dirty 2.63 MiB 3.76 MiB 1.13 MiB
b677956+dirty 2.63 MiB 3.75 MiB 1.12 MiB
db44eaf+dirty 2.36 MiB 3.10 MiB 755.81 KiB
366c2d0+dirty 2.63 MiB 3.78 MiB 1.15 MiB
c4bd70f+dirty 2.63 MiB 3.75 MiB 1.12 MiB
5bb8d5f+dirty 2.36 MiB 2.92 MiB 570.22 KiB
42438c2+dirty 2.63 MiB 3.76 MiB 1.13 MiB
80e955a+dirty 2.63 MiB 3.70 MiB 1.06 MiB
e652a2e+dirty 2.63 MiB 3.74 MiB 1.11 MiB

Previous results on branch: feedback-ui-2

Startup times

Revision Plain With Sentry Diff
dfd86ad+dirty 1220.57 ms 1220.87 ms 0.30 ms
2816e90+dirty 1222.71 ms 1232.76 ms 10.04 ms
6e4d2e1+dirty 1231.82 ms 1240.18 ms 8.36 ms
1be9d5e+dirty 1205.71 ms 1214.40 ms 8.69 ms
5307edc+dirty 1230.00 ms 1230.51 ms 0.51 ms

App size

Revision Plain With Sentry Diff
dfd86ad+dirty 2.63 MiB 3.80 MiB 1.17 MiB
2816e90+dirty 2.63 MiB 3.81 MiB 1.18 MiB
6e4d2e1+dirty 2.63 MiB 3.77 MiB 1.14 MiB
1be9d5e+dirty 2.63 MiB 3.81 MiB 1.18 MiB
5307edc+dirty 2.63 MiB 3.80 MiB 1.17 MiB

Copy link
Contributor

github-actions bot commented Apr 7, 2025

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1221.51 ms 1225.02 ms 3.51 ms
Size 3.19 MiB 4.38 MiB 1.19 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
e46354e+dirty 1228.37 ms 1236.56 ms 8.19 ms
22bcd92+dirty 1219.98 ms 1225.23 ms 5.25 ms
b677956+dirty 1224.30 ms 1239.53 ms 15.23 ms
db44eaf+dirty 1238.49 ms 1236.56 ms -1.93 ms
366c2d0+dirty 1210.81 ms 1219.60 ms 8.79 ms
c4bd70f+dirty 1211.02 ms 1226.59 ms 15.57 ms
5bb8d5f+dirty 1215.04 ms 1217.52 ms 2.48 ms
42438c2+dirty 1218.42 ms 1220.13 ms 1.71 ms
80e955a+dirty 1243.63 ms 1245.58 ms 1.95 ms
e652a2e+dirty 1224.76 ms 1218.86 ms -5.90 ms

App size

Revision Plain With Sentry Diff
e46354e+dirty 3.19 MiB 4.32 MiB 1.13 MiB
22bcd92+dirty 3.19 MiB 4.33 MiB 1.14 MiB
b677956+dirty 3.19 MiB 4.32 MiB 1.13 MiB
db44eaf+dirty 2.92 MiB 3.66 MiB 761.15 KiB
366c2d0+dirty 3.19 MiB 4.35 MiB 1.16 MiB
c4bd70f+dirty 3.19 MiB 4.32 MiB 1.13 MiB
5bb8d5f+dirty 2.92 MiB 3.48 MiB 575.85 KiB
42438c2+dirty 3.19 MiB 4.33 MiB 1.14 MiB
80e955a+dirty 3.19 MiB 4.26 MiB 1.08 MiB
e652a2e+dirty 3.19 MiB 4.31 MiB 1.12 MiB

Previous results on branch: feedback-ui-2

Startup times

Revision Plain With Sentry Diff
dfd86ad+dirty 1219.40 ms 1232.49 ms 13.09 ms
2816e90+dirty 1234.46 ms 1237.76 ms 3.30 ms
6e4d2e1+dirty 1226.76 ms 1233.13 ms 6.37 ms
1be9d5e+dirty 1232.81 ms 1224.64 ms -8.17 ms
5307edc+dirty 1211.92 ms 1222.18 ms 10.27 ms

App size

Revision Plain With Sentry Diff
dfd86ad+dirty 3.19 MiB 4.37 MiB 1.18 MiB
2816e90+dirty 3.19 MiB 4.38 MiB 1.19 MiB
6e4d2e1+dirty 3.19 MiB 4.33 MiB 1.15 MiB
1be9d5e+dirty 3.19 MiB 4.38 MiB 1.19 MiB
5307edc+dirty 3.19 MiB 4.37 MiB 1.18 MiB

Copy link
Contributor

github-actions bot commented Apr 8, 2025

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 401.47 ms 385.58 ms -15.89 ms
Size 17.75 MiB 20.15 MiB 2.40 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
a38594f 465.24 ms 465.38 ms 0.14 ms
63ed251 457.74 ms 441.54 ms -16.20 ms
025d490 365.42 ms 404.48 ms 39.06 ms
87dd218 438.14 ms 460.09 ms 21.95 ms
5e5c392 390.42 ms 432.00 ms 41.58 ms
2534337 394.15 ms 415.12 ms 20.97 ms
13b68d9 424.22 ms 419.65 ms -4.57 ms
e73f4ed+dirty 332.96 ms 354.33 ms 21.37 ms
1d86dd6 405.14 ms 411.06 ms 5.92 ms
de59d3a 486.48 ms 495.66 ms 9.18 ms

App size

Revision Plain With Sentry Diff
a38594f 17.75 MiB 20.11 MiB 2.37 MiB
63ed251 17.74 MiB 20.08 MiB 2.34 MiB
025d490 17.75 MiB 20.12 MiB 2.37 MiB
87dd218 17.75 MiB 20.12 MiB 2.37 MiB
5e5c392 17.75 MiB 20.12 MiB 2.37 MiB
2534337 17.73 MiB 19.84 MiB 2.11 MiB
13b68d9 17.75 MiB 20.11 MiB 2.37 MiB
e73f4ed+dirty 17.73 MiB 20.04 MiB 2.31 MiB
1d86dd6 17.73 MiB 19.86 MiB 2.12 MiB
de59d3a 17.74 MiB 20.10 MiB 2.36 MiB

Previous results on branch: feedback-ui-2

Startup times

Revision Plain With Sentry Diff
dfd86ad 418.77 ms 419.20 ms 0.42 ms
1be9d5e 427.06 ms 439.89 ms 12.83 ms
6e4d2e1 435.80 ms 432.63 ms -3.17 ms
5307edc 489.00 ms 512.91 ms 23.91 ms
2816e90 485.22 ms 505.65 ms 20.43 ms

App size

Revision Plain With Sentry Diff
dfd86ad 17.75 MiB 20.15 MiB 2.40 MiB
1be9d5e 17.75 MiB 20.15 MiB 2.40 MiB
6e4d2e1 17.75 MiB 20.13 MiB 2.39 MiB
5307edc 17.75 MiB 20.15 MiB 2.40 MiB
2816e90 17.75 MiB 20.15 MiB 2.40 MiB

antonis and others added 6 commits April 14, 2025 15:29
* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Add hardcoded dark and light color themes

* Rename theme options

* Update snapshot tests

* Include in the feedback integration

* Fix circular dependency

* Add theme integration options

* Adds changelog

* Add comment note

* Align with JS api

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Add accentBackground and accentForeground colors

* Extract integration getter in a helper function

* Adds dynamic theming support

* Add snapshot tests

* Adds system theme tests

* Test dynamically changed theme

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Add hardcoded dark and light color themes

* Rename theme options

* Update snapshot tests

* Include in the feedback integration

* Fix circular dependency

* Add theme integration options

* Adds changelog

* Add comment note

* Align with JS api

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Add accentBackground and accentForeground colors

* Extract integration getter in a helper function

* Adds dynamic theming support

* Add snapshot tests

* Show screenshot button UI

* Add screenshot button integration

* Add screenshot icon

* Adds Take a screenshot button in FeedbackWidget

* Updates snapshot tests

* Fix circularDepCheck

* Fix circularDepCheck

* Attache captured screenshot

* Hide the take screenshot button when there is a screenshot

* Convert uint8Array to Base64 on the native side

* Adds snapshot tests

* Disable functionality on the Web

* Add screenshot button in the sample expo app

* Adds system theme tests

* Test dynamically changed theme

* Remove showScreenshotButton and hideScreenshotButton from the exposed api

* Fix function name typo

* Adds enableTakeScreenshot option

* Adds happy flow test

* Make flow tests more granular

* Increate wait time out to fix flakiness on ci

* Reset widget state after each test

* Fix CI flakiness

* Remove flaky test

* Delay capture to allow the button to hide

* Add comment explaining the reasoning of the call

* Define defaultProps in smaller scope

* Define customStyles in smaller scope

* Also check remove screenshot button

* Fixes the name and double negation not null

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
)

* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Add hardcoded dark and light color themes

* Rename theme options

* Update snapshot tests

* Include in the feedback integration

* Fix circular dependency

* Add theme integration options

* Adds changelog

* Add comment note

* Align with JS api

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Add accentBackground and accentForeground colors

* Extract integration getter in a helper function

* Adds dynamic theming support

* Add snapshot tests

* Show screenshot button UI

* Add screenshot button integration

* Add screenshot icon

* Adds Take a screenshot button in FeedbackWidget

* Updates snapshot tests

* Fix circularDepCheck

* Fix circularDepCheck

* Attache captured screenshot

* Hide the take screenshot button when there is a screenshot

* Convert uint8Array to Base64 on the native side

* ref(feedback): Extracts FeedbackWidgetProvider in a separate file

* Updates exposed comments

* Adds snapshot tests

* Disable functionality on the Web

* Add screenshot button in the sample expo app

* Adds system theme tests

* Test dynamically changed theme

* Remove showScreenshotButton and hideScreenshotButton from the exposed api

* Fix function name typo

* Adds enableTakeScreenshot option

* Adds happy flow test

* Make flow tests more granular

* Increate wait time out to fix flakiness on ci

* Reset widget state after each test

* Fix CI flakiness

* Remove flaky test

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Add hardcoded dark and light color themes

* Rename theme options

* Update snapshot tests

* Include in the feedback integration

* Fix circular dependency

* Add theme integration options

* Adds changelog

* Add comment note

* Align with JS api

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Add accentBackground and accentForeground colors

* Extract integration getter in a helper function

* Adds dynamic theming support

* Add snapshot tests

* Show screenshot button UI

* Add screenshot button integration

* Add screenshot icon

* Adds Take a screenshot button in FeedbackWidget

* Updates snapshot tests

* Fix circularDepCheck

* Fix circularDepCheck

* Attache captured screenshot

* Hide the take screenshot button when there is a screenshot

* Convert uint8Array to Base64 on the native side

* ref(feedback): Extracts FeedbackWidgetProvider in a separate file

* Updates exposed comments

* Adds snapshot tests

* Disable functionality on the Web

* Add screenshot button in the sample expo app

* Adds system theme tests

* Test dynamically changed theme

* Remove showScreenshotButton and hideScreenshotButton from the exposed api

* Fix function name typo

* Adds enableTakeScreenshot option

* Adds happy flow test

* Make flow tests more granular

* Increate wait time out to fix flakiness on ci

* Reset widget state after each test

* Fix CI flakiness

* Remove flaky test

* fix(feedback): Fixes accessibility issue on iOS

* Add changelog

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
# Conflicts:
#	CHANGELOG.md
antonis added 2 commits April 16, 2025 16:09
# Conflicts:
#	packages/core/android/src/oldarch/java/io/sentry/react/RNSentryModule.java
* Show an error if screenshot capture fails

* Test error flow
@antonis antonis marked this pull request as ready for review May 1, 2025 08:19
# Conflicts:
#	CHANGELOG.md
antonis and others added 3 commits May 8, 2025 12:04
# Conflicts:
#	CHANGELOG.md
* Update the client implementation to use the new capture feedback js api

* Updates SDK API

* Adds new feedback button in the sample

* Adds changelog

* Removes unused mock

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Directly use captureFeedback from sentry/core

* Use import from core

* Fixes imports order lint issue

* Fixes build issue

* Adds captureFeedback tests from sentry-javascript

* Update CHANGELOG.md

* Only deprecate client captureUserFeedback

* Add simple form UI

* Adds basic form functionality

* Update imports

* Update imports

* Remove useState hook to avoid multiple react instances issues

* Move types and styles in different files

* Removes attachment button to be added back separately along with the implementation

* Add basic field validation

* Adds changelog

* Updates changelog

* Updates changelog

* Trim whitespaces from the submitted feedback

* Adds tests

* Renames FeedbackFormScreen to FeedbackForm

* Add beta label

* Extract default text to constants

* Moves constant to a separate file and aligns naming with JS

* Adds input text labels

* Close screen before sending the feedback to minimise wait time

Co-authored-by: LucasZF <[email protected]>

* Rename file for consistency

* Flatten configuration hierarchy and clean up

* Align required values with JS

* Use Sentry user email and name when set

* Simplifies email validation

* Show success alert message

* Aligns naming with JS and unmounts the form by default

* Use the minimum config without props in the changelog

* Adds development not for unimplemented function

* Show email and name conditionally

* Adds sentry branding (png logo)

* Adds sentry logo resource

* Add assets in module exports

* Revert "Add assets in module exports"

This reverts commit 5292475.

* Revert "Adds sentry logo resource"

This reverts commit d6e9229.

* Revert "Adds sentry branding (png logo)"

This reverts commit 8c56753.

* Add last event id

* Mock lastEventId

* Adds beta note in the changelog

* Autoinject feedback form

* Updates changelog

* Align colors with JS

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Update CHANGELOG.md

Co-authored-by: Krystof Woldrich <[email protected]>

* Use regular fonts for both buttons

* Handle keyboard properly

* Adds an option on whether the email should be validated

* Merge properties only once

* Loads current user data on form construction

* Remove unneeded extra padding

* Fix background color issue

* Adds feedback button

* Updates the changelog

* Fixes changelog typo

* Updates styles background color

Co-authored-by: Krystof Woldrich <[email protected]>

* Use defaultProps

* Correct defaultProps

* Adds test to verify when getUser is called

* Use smaller image

Co-authored-by: LucasZF <[email protected]>

* Add margin next to the icon

* Adds bottom spacing in the ErrorScreen so that the feedback button does not hide the scrollview buttons

* (2.2) feat: Add Feedback Form UI Branding logo (#4357)

* Adds sentry branding logo as a base64 encoded png

---------

Co-authored-by: LucasZF <[email protected]>

* Autoinject feedback form (#4370)

* Align changelog entry

* Update changelog

* Disable bouncing

* Add modal ui appearance

* Update snapshot tests

* Fix bottom margin

* Fix sheet height

* Remove extra modal border

* Do not expose modal styles

* Animate background color

* Avoid keyboard in modal

* Update changelog

* Fix changelog

* Updates comment

* Extract FeedbackButtonProps

* Add public function description to satisfy lint check

* Adds tests

* Fix tests

* Add test ids in feedback widget

* Add feedback widget button in test app

* WIP: Add feedback test

* Update snapshot tests with the added test ids

* Android happy path test

* Check field validation

* Scroll if button is not visible

* Adds accessibility labels

* Remove extended initial checks due to flakiness

* Revert "Remove extended initial checks due to flakiness"

This reverts commit fa3bdfc.

* Add hardcoded dark and light color themes

* Rename theme options

* Update snapshot tests

* Include in the feedback integration

* Fix circular dependency

* Add theme integration options

* Adds changelog

* Add comment note

* Align with JS api

* Remove unneeded line

Co-authored-by: Krystof Woldrich <[email protected]>

* Place widget button below the feedback widget shadow

* Expose showFeedbackButton/hideFeedbackButton methods

* Add dummy integration for tracking usage

* Adds button border

* Fixes tests

* Add accentBackground and accentForeground colors

* Extract integration getter in a helper function

* Adds dynamic theming support

* Add snapshot tests

* Show screenshot button UI

* Add screenshot button integration

* Add screenshot icon

* Adds Take a screenshot button in FeedbackWidget

* Updates snapshot tests

* Fix circularDepCheck

* Fix circularDepCheck

* Attache captured screenshot

* Hide the take screenshot button when there is a screenshot

* Convert uint8Array to Base64 on the native side

* ref(feedback): Extracts FeedbackWidgetProvider in a separate file

* Updates exposed comments

* Adds snapshot tests

* Disable functionality on the Web

* Add screenshot button in the sample expo app

* Adds system theme tests

* Test dynamically changed theme

* Remove showScreenshotButton and hideScreenshotButton from the exposed api

* Fix function name typo

* Adds enableTakeScreenshot option

* Adds happy flow test

* Make flow tests more granular

* Increate wait time out to fix flakiness on ci

* Reset widget state after each test

* Fix CI flakiness

* Remove flaky test

* fix(feedback): Fixes accessibility issue on iOS

* Add changelog

* Properly wrap root app component

* Handle undefined AppRegistryIntegration.onRunApplication gracefully

* Fix lint issue

* Do not validate all fields for visibility

* Take screenshots for debugging

* Revert "Take screenshots for debugging"

This reverts commit 3e361a1.

* Simplify test scenario

* Try without hiding the keyboard

* Test Feedback button

* Test screenshot capture

* Show an error if screenshot capture fails

* Test error flow

* Revert unneeded change

* Test with latest Maestro

* Revert "Test with latest Maestro"

This reverts commit e7c31bf.

* Revert "Test screenshot capture"

This reverts commit 8913ffc.

* Skip for 0.65.3

* Remove version check

* Use testId for feedback button

* Skip for 0.65.3

* Update snapshots

* Cleanup testIds and accessibility labels

* Enable for all RN versions

* Temp: remove modal supported check

* Do not use native driver for backgroundOpacity animation

* Revert "Temp: remove modal supported check"

This reverts commit e20aff2.

* Do not use native driver for backgroundOpacity animation

* Use text instead of test ids

* Separate iOS and Android tests

---------

Co-authored-by: Krystof Woldrich <[email protected]>
Co-authored-by: LucasZF <[email protected]>
# Conflicts:
#	CHANGELOG.md
#	samples/react-native/src/App.tsx
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.

[EPIC] Feedback Widget for React Native
1 participant