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

(2.4) Feedback form attachments #4338

Open
wants to merge 20 commits into
base: antonis/3859-newCaptureFeedbackAPI-Form
Choose a base branch
from

Conversation

antonis
Copy link
Collaborator

@antonis antonis commented Dec 3, 2024

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

Based on #4328

📜 Description

This PR adds attachment handling in the SDK capture feedback form leaving the image picking to be implemented on the client:

Note that string attachments are converted to UInt8Array before sending to the server.

Android iOS

💡 Motivation and Context

Fixes #4337

💚 How did you test it?

CI, Manual testing (example)

📝 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

As discussed we will use the no props configuration in the changelog.

Copy link
Contributor

github-actions bot commented Dec 3, 2024

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 438.58 ms 419.84 ms -18.74 ms
Size 17.74 MiB 20.10 MiB 2.37 MiB

Baseline results on branch: antonis/3859-newCaptureFeedbackAPI-Form

Startup times

Revision Plain With Sentry Diff
561640f 461.96 ms 458.11 ms -3.85 ms
50c70c0 496.82 ms 526.02 ms 29.20 ms
38a278b 473.58 ms 468.76 ms -4.82 ms
db1844e 475.35 ms 460.66 ms -14.69 ms
27e1bf3 463.19 ms 478.80 ms 15.61 ms
d33790a 442.93 ms 439.94 ms -3.00 ms
cadf235 462.20 ms 463.34 ms 1.14 ms
1dd8d17 399.65 ms 393.81 ms -5.84 ms
0781f75 452.32 ms 457.22 ms 4.91 ms
a3ba405 438.16 ms 435.78 ms -2.38 ms

App size

Revision Plain With Sentry Diff
561640f 17.74 MiB 20.09 MiB 2.35 MiB
50c70c0 17.74 MiB 20.10 MiB 2.36 MiB
38a278b 17.74 MiB 20.10 MiB 2.37 MiB
db1844e 17.74 MiB 20.10 MiB 2.37 MiB
27e1bf3 17.74 MiB 20.09 MiB 2.35 MiB
d33790a 17.74 MiB 20.10 MiB 2.36 MiB
cadf235 17.74 MiB 20.09 MiB 2.35 MiB
1dd8d17 17.74 MiB 20.10 MiB 2.36 MiB
0781f75 17.74 MiB 20.09 MiB 2.35 MiB
a3ba405 17.74 MiB 20.09 MiB 2.35 MiB

Previous results on branch: antonis/3959-captureFeedback-attachements

Startup times

Revision Plain With Sentry Diff
d0b75a7 410.94 ms 400.26 ms -10.68 ms
6ffb17d 463.87 ms 457.83 ms -6.04 ms
86c8c80 493.71 ms 495.57 ms 1.86 ms
aacfdac 416.91 ms 403.79 ms -13.12 ms
bed1168 389.80 ms 387.00 ms -2.80 ms
310cd89 465.17 ms 455.35 ms -9.82 ms

App size

Revision Plain With Sentry Diff
d0b75a7 17.74 MiB 20.09 MiB 2.35 MiB
6ffb17d 17.74 MiB 20.09 MiB 2.35 MiB
86c8c80 17.74 MiB 20.09 MiB 2.35 MiB
aacfdac 17.74 MiB 20.10 MiB 2.37 MiB
bed1168 17.74 MiB 20.10 MiB 2.36 MiB
310cd89 17.74 MiB 20.10 MiB 2.36 MiB

Copy link
Contributor

github-actions bot commented Dec 3, 2024

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 355.72 ms 401.10 ms 45.38 ms
Size 7.15 MiB 8.38 MiB 1.23 MiB

Baseline results on branch: antonis/3859-newCaptureFeedbackAPI-Form

Startup times

Revision Plain With Sentry Diff
27e1bf3+dirty 398.69 ms 439.39 ms 40.69 ms
561640f+dirty 378.73 ms 442.25 ms 63.52 ms
03c9048+dirty 397.35 ms 417.73 ms 20.37 ms
f4a5053+dirty 391.02 ms 427.04 ms 36.02 ms
db1844e+dirty 376.33 ms 428.67 ms 52.34 ms
1dd8d17+dirty 383.20 ms 432.62 ms 49.41 ms
50c70c0+dirty 385.30 ms 433.06 ms 47.76 ms
d33790a+dirty 404.87 ms 473.06 ms 68.19 ms
a3ba405+dirty 359.67 ms 436.86 ms 77.19 ms
cadf235+dirty 455.51 ms 451.64 ms -3.87 ms

App size

Revision Plain With Sentry Diff
27e1bf3+dirty 7.15 MiB 8.37 MiB 1.22 MiB
561640f+dirty 7.15 MiB 8.37 MiB 1.22 MiB
03c9048+dirty 7.15 MiB 8.38 MiB 1.23 MiB
f4a5053+dirty 7.15 MiB 8.38 MiB 1.23 MiB
db1844e+dirty 7.15 MiB 8.38 MiB 1.23 MiB
1dd8d17+dirty 7.15 MiB 8.38 MiB 1.23 MiB
50c70c0+dirty 7.15 MiB 8.38 MiB 1.23 MiB
d33790a+dirty 7.15 MiB 8.38 MiB 1.23 MiB
a3ba405+dirty 7.15 MiB 8.37 MiB 1.22 MiB
cadf235+dirty 7.15 MiB 8.37 MiB 1.22 MiB

Previous results on branch: antonis/3959-captureFeedback-attachements

Startup times

Revision Plain With Sentry Diff
6ffb17d+dirty 357.81 ms 416.39 ms 58.58 ms
6e24681+dirty 423.59 ms 466.48 ms 42.89 ms
d0b75a7+dirty 410.40 ms 428.56 ms 18.16 ms
310cd89+dirty 412.29 ms 459.15 ms 46.86 ms
aacfdac+dirty 394.65 ms 433.28 ms 38.62 ms
bed1168+dirty 385.10 ms 441.10 ms 56.00 ms
86c8c80+dirty 392.53 ms 440.91 ms 48.38 ms

App size

Revision Plain With Sentry Diff
6ffb17d+dirty 7.15 MiB 8.37 MiB 1.22 MiB
6e24681+dirty 7.15 MiB 8.38 MiB 1.23 MiB
d0b75a7+dirty 7.15 MiB 8.37 MiB 1.22 MiB
310cd89+dirty 7.15 MiB 8.38 MiB 1.23 MiB
aacfdac+dirty 7.15 MiB 8.38 MiB 1.23 MiB
bed1168+dirty 7.15 MiB 8.38 MiB 1.23 MiB
86c8c80+dirty 7.15 MiB 8.37 MiB 1.22 MiB

Copy link
Contributor

github-actions bot commented Dec 3, 2024

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1228.08 ms 1234.40 ms 6.31 ms
Size 2.36 MiB 3.13 MiB 783.18 KiB

Baseline results on branch: antonis/3859-newCaptureFeedbackAPI-Form

Startup times

Revision Plain With Sentry Diff
a06f6ba+dirty 1230.45 ms 1227.09 ms -3.36 ms
1dd8d17+dirty 1235.22 ms 1218.96 ms -16.27 ms
0781f75+dirty 1222.19 ms 1222.11 ms -0.08 ms
cadf235+dirty 1223.89 ms 1236.22 ms 12.33 ms
38a278b+dirty 1233.02 ms 1233.82 ms 0.80 ms
a3ba405+dirty 1223.00 ms 1219.06 ms -3.94 ms
db1844e+dirty 1230.79 ms 1234.22 ms 3.43 ms
e0624b6+dirty 1221.86 ms 1226.42 ms 4.57 ms
26fc306+dirty 1227.25 ms 1225.85 ms -1.40 ms
50c70c0+dirty 1228.06 ms 1224.43 ms -3.64 ms

App size

Revision Plain With Sentry Diff
a06f6ba+dirty 2.36 MiB 3.11 MiB 761.35 KiB
1dd8d17+dirty 2.36 MiB 3.11 MiB 761.66 KiB
0781f75+dirty 2.36 MiB 3.11 MiB 761.35 KiB
cadf235+dirty 2.36 MiB 3.11 MiB 761.47 KiB
38a278b+dirty 2.36 MiB 3.13 MiB 782.12 KiB
a3ba405+dirty 2.36 MiB 3.11 MiB 760.99 KiB
db1844e+dirty 2.36 MiB 3.13 MiB 782.13 KiB
e0624b6+dirty 2.36 MiB 3.11 MiB 761.16 KiB
26fc306+dirty 2.36 MiB 3.11 MiB 761.18 KiB
50c70c0+dirty 2.36 MiB 3.11 MiB 760.92 KiB

Previous results on branch: antonis/3959-captureFeedback-attachements

Startup times

Revision Plain With Sentry Diff
d0b75a7+dirty 1231.45 ms 1235.71 ms 4.27 ms
6ffb17d+dirty 1243.90 ms 1241.52 ms -2.38 ms
310cd89+dirty 1224.53 ms 1237.12 ms 12.59 ms
6e24681+dirty 1237.38 ms 1240.75 ms 3.38 ms
bed1168+dirty 1227.60 ms 1232.29 ms 4.69 ms
86c8c80+dirty 1229.63 ms 1225.81 ms -3.82 ms
aacfdac+dirty 1225.62 ms 1224.67 ms -0.95 ms

App size

Revision Plain With Sentry Diff
d0b75a7+dirty 2.36 MiB 3.11 MiB 761.55 KiB
6ffb17d+dirty 2.36 MiB 3.11 MiB 761.85 KiB
310cd89+dirty 2.36 MiB 3.11 MiB 761.42 KiB
6e24681+dirty 2.36 MiB 3.13 MiB 782.57 KiB
bed1168+dirty 2.36 MiB 3.11 MiB 761.56 KiB
86c8c80+dirty 2.36 MiB 3.11 MiB 761.21 KiB
aacfdac+dirty 2.36 MiB 3.13 MiB 780.88 KiB

Copy link
Contributor

github-actions bot commented Dec 3, 2024

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1237.55 ms 1236.29 ms -1.27 ms
Size 2.92 MiB 3.69 MiB 794.33 KiB

Baseline results on branch: antonis/3859-newCaptureFeedbackAPI-Form

Startup times

Revision Plain With Sentry Diff
a06f6ba+dirty 1235.31 ms 1238.76 ms 3.45 ms
1dd8d17+dirty 1229.28 ms 1224.92 ms -4.36 ms
0781f75+dirty 1247.90 ms 1237.11 ms -10.79 ms
cadf235+dirty 1225.19 ms 1231.65 ms 6.47 ms
38a278b+dirty 1247.80 ms 1244.61 ms -3.18 ms
a3ba405+dirty 1229.31 ms 1228.16 ms -1.14 ms
db1844e+dirty 1231.94 ms 1238.86 ms 6.92 ms
e0624b6+dirty 1229.19 ms 1232.18 ms 3.00 ms
26fc306+dirty 1229.10 ms 1227.88 ms -1.22 ms
50c70c0+dirty 1226.61 ms 1225.02 ms -1.59 ms

App size

Revision Plain With Sentry Diff
a06f6ba+dirty 2.92 MiB 3.67 MiB 773.87 KiB
1dd8d17+dirty 2.92 MiB 3.67 MiB 774.21 KiB
0781f75+dirty 2.92 MiB 3.67 MiB 773.83 KiB
cadf235+dirty 2.92 MiB 3.67 MiB 773.97 KiB
38a278b+dirty 2.92 MiB 3.69 MiB 793.49 KiB
a3ba405+dirty 2.92 MiB 3.67 MiB 773.65 KiB
db1844e+dirty 2.92 MiB 3.69 MiB 793.48 KiB
e0624b6+dirty 2.92 MiB 3.67 MiB 773.62 KiB
26fc306+dirty 2.92 MiB 3.67 MiB 773.77 KiB
50c70c0+dirty 2.92 MiB 3.67 MiB 773.48 KiB

Previous results on branch: antonis/3959-captureFeedback-attachements

Startup times

Revision Plain With Sentry Diff
d0b75a7+dirty 1246.12 ms 1240.60 ms -5.52 ms
6ffb17d+dirty 1237.81 ms 1245.38 ms 7.57 ms
310cd89+dirty 1231.53 ms 1228.13 ms -3.41 ms
6e24681+dirty 1242.81 ms 1242.35 ms -0.47 ms
bed1168+dirty 1235.69 ms 1242.08 ms 6.39 ms
86c8c80+dirty 1237.06 ms 1234.31 ms -2.76 ms
aacfdac+dirty 1247.84 ms 1237.59 ms -10.25 ms

App size

Revision Plain With Sentry Diff
d0b75a7+dirty 2.92 MiB 3.67 MiB 774.05 KiB
6ffb17d+dirty 2.92 MiB 3.67 MiB 774.33 KiB
310cd89+dirty 2.92 MiB 3.67 MiB 773.96 KiB
6e24681+dirty 2.92 MiB 3.69 MiB 793.93 KiB
bed1168+dirty 2.92 MiB 3.67 MiB 774.09 KiB
86c8c80+dirty 2.92 MiB 3.67 MiB 773.74 KiB
aacfdac+dirty 2.92 MiB 3.69 MiB 792.09 KiB

@antonis
Copy link
Collaborator Author

antonis commented Dec 3, 2024

Hey @krystofwoldrich, @lucas-zimerman 👋

though this PR is still draft (trying to figure out why images are not uploaded correctly) I'd like your feedback since my approach might be a bit opinionated.
To avoid adding a library in Sentry core (and issues with hooks) I've left the actual image picking on the client app:

Wdyt of this approach? Should the library offer the full functionality or leave it to the sample app 🙇

@antonis
Copy link
Collaborator Author

antonis commented Dec 3, 2024

trying to figure out why images are not uploaded correctly

I wasn't able to correctly upload a base64 image string thus I always convert to Uint8Array before sending.

@antonis antonis marked this pull request as ready for review December 3, 2024 14:23
@antonis antonis marked this pull request as draft December 10, 2024 11:34
@antonis
Copy link
Collaborator Author

antonis commented Dec 10, 2024

Converting to draft similar to #4328 (comment)

…959-captureFeedback-attachements

# Conflicts:
#	CHANGELOG.md
#	packages/core/src/js/feedback/FeedbackFormScreen.tsx
#	packages/core/src/js/feedback/FeedbackFormScreen.types.ts
#	packages/core/test/feedback/FeedbackFormScreen.test.tsx
#	samples/react-native/src/App.tsx
@antonis antonis marked this pull request as ready for review December 12, 2024 12:56
@antonis antonis linked an issue Dec 13, 2024 that may be closed by this pull request
@krystofwoldrich krystofwoldrich changed the title Feedback form attachments (2.4) Feedback form attachments Dec 13, 2024
…959-captureFeedback-attachements

# Conflicts:
#	packages/core/src/js/feedback/FeedbackForm.tsx
#	packages/core/src/js/feedback/defaults.ts
…959-captureFeedback-attachements

# Conflicts:
#	packages/core/test/feedback/FeedbackForm.test.tsx
* Should the screen shots field be included?
* Screen shots cannot be marked as required
*/
enableScreenshot?: boolean;
Copy link
Collaborator

Choose a reason for hiding this comment

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

i: The name could change, since enableScreenshot doesn't give the impression that it will impact on the button visibility.
I thought about a bit verbose name, but when you read the property name, you know exactly what it will do without reading the description.

Suggested change
enableScreenshot?: boolean;
showAddScreenshotButton?: boolean;

Copy link
Collaborator Author

@antonis antonis Dec 18, 2024

Choose a reason for hiding this comment

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

That's indeed a good suggestion @lucas-zimerman 👍
I'm a bit torn between aligning with the JS api and using a more clear name for this 🤔
Wdyt of keeping the name and adding a more clear comment as per your other suggestion?

antonis and others added 4 commits December 18, 2024 17:30
Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
…959-captureFeedback-attachements

# Conflicts:
#	packages/core/src/js/feedback/FeedbackForm.tsx
#	packages/core/src/js/feedback/FeedbackForm.types.ts
#	packages/core/test/feedback/FeedbackForm.test.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.

Add attachment/screenshot handling in the feedback form UI
2 participants