fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(feedback): Disable native driver for backgroundColor animation - #4794

Merged
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation
May 1, 2025
Merged

fix(feedback): Disable native driver for backgroundColor animation#4794
antonis merged 6 commits into
mainfrom
antonis/fix-feedback-animation

Conversation

@antonis

@antonisantonis commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

Disable native driver for backgroundColor animation

💡 Motivation and Context

The 'backgroundColor' is not supported by native animations and causing a crash in older RN versions.

Android crash logs

Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u
Error: Style property 'backgroundColor' is not supported by native animated module
This error is located at:
in c
in f
in RCTView
in Unknown
in __Sentry.TouchEventBoundary
in Unknown
in RCTView
in Unknown
in RCTView
in Unknown
in u, stack:
validateStyles@221:4389
value@250:2140
value@226:2615
value@249:2877
value@226:2615
value@249:2274
value@249:1839
value@225:1674
value@250:1925
value@225:1674
value@224:3074
value@225:1674
value@241:639
r@242:1432
value@242:1611
value@220:2510
s@230:1060
start@230:1119
<unknown>@230:2366
forEach@-1
start@230:2247
value@736:3755
zl@59:65656
Va@59:81394
Va@-1
<unknown>@189:3836
Ha@59:79751
Ia@59:75906
Ia@-1
<unknown>@59:26275
<unknown>@189:3836
ht@59:26222
pt@59:26157
Ee@59:93057
Te@59:13008
Ce@59:13397
receiveTouches@59:14183
value@40:3537
<unknown>@40:730
value@40:2527
value@40:702
value@-1
Creating new dialog from context: com.rndiffapp.MainActivity@81c704c@136081484
FATAL EXCEPTION: main (Ask Gemini)
Process: com.rndiffapp, PID: 6044
com.facebook.react.bridge.JSApplicationIllegalArgumentException: disconnectAnimatedNodeFromView: Animated node with tag [6] does not exist
at com.facebook.react.animated.NativeAnimatedNodesManager.disconnectAnimatedNodeFromView(NativeAnimatedNodesManager.java:411)
at com.facebook.react.animated.NativeAnimatedModule$18.execute(NativeAnimatedModule.java:772)
at com.facebook.react.animated.NativeAnimatedModule.executeAllOperations(NativeAnimatedModule.java:258)
at com.facebook.react.animated.NativeAnimatedModule.access$400(NativeAnimatedModule.java:85)
at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:287)
at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:579)
at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:914)
at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025)
at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
at android.view.Choreographer.doCallbacks(Choreographer.java:899)
at android.view.Choreographer.doFrame(Choreographer.java:827)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
No tap action can be set up
failed to get buffer, invalid process token
Failed to transact (-32)
No tap action can be set up

💚 How did you test it?

Manual, CI E2E tests via #4604

📝 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

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time387.10 ms392.78 ms5.68 ms
Size7.15 MiB8.40 MiB1.25 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
3853f43+dirty278.12 ms338.72 ms60.60 ms
ea85ff8+dirty409.16 ms402.47 ms-6.70 ms
86d6d2c+dirty267.21 ms325.24 ms58.04 ms
80e955a+dirty399.50 ms453.16 ms53.66 ms
30189be+dirty362.02 ms386.80 ms24.78 ms
4cc5c27+dirty398.36 ms452.50 ms54.14 ms
9c48b2c+dirty270.82 ms321.12 ms50.30 ms
baa882f+dirty449.30 ms540.40 ms91.10 ms
77680ec+dirty393.50 ms426.68 ms33.18 ms
ed3d77e+dirty366.04 ms411.33 ms45.28 ms

App size

RevisionPlainWith SentryDiff
3853f43+dirty7.15 MiB8.08 MiB959.34 KiB
ea85ff8+dirty7.15 MiB8.39 MiB1.23 MiB
86d6d2c+dirty7.15 MiB8.09 MiB962.69 KiB
80e955a+dirty7.15 MiB8.38 MiB1.23 MiB
30189be+dirty7.15 MiB8.38 MiB1.23 MiB
4cc5c27+dirty7.15 MiB8.22 MiB1.07 MiB
9c48b2c+dirty7.15 MiB8.07 MiB947.16 KiB
baa882f+dirty7.15 MiB8.34 MiB1.19 MiB
77680ec+dirty7.15 MiB8.35 MiB1.20 MiB
ed3d77e+dirty7.15 MiB8.35 MiB1.21 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty396.74 ms396.96 ms0.21 ms
040c8c2+dirty402.09 ms415.16 ms13.07 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty7.15 MiB8.40 MiB1.25 MiB
040c8c2+dirty7.15 MiB8.40 MiB1.25 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (new) Performance metrics 🚀

PlainWith SentryDiff
Startup time1226.16 ms1220.43 ms-5.73 ms
Size3.19 MiB4.35 MiB1.16 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1241.17 ms1249.16 ms8.00 ms
5446992+dirty1249.94 ms1254.80 ms4.86 ms
8ab11b6+dirty1222.91 ms1216.08 ms-6.83 ms
0eacc98+dirty1223.85 ms1233.12 ms9.27 ms
8ae23a7+dirty1233.67 ms1229.52 ms-4.15 ms
52c0562+dirty1233.94 ms1226.29 ms-7.65 ms
83f6f6c+dirty1232.02 ms1229.15 ms-2.87 ms
2bf5613+dirty1220.71 ms1220.13 ms-0.59 ms
b6f8ea2+dirty1254.10 ms1236.67 ms-17.43 ms
30189be+dirty1228.73 ms1219.06 ms-9.67 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.92 MiB3.67 MiB772.59 KiB
5446992+dirty2.92 MiB3.44 MiB535.26 KiB
8ab11b6+dirty2.92 MiB3.67 MiB772.38 KiB
0eacc98+dirty3.19 MiB4.25 MiB1.07 MiB
8ae23a7+dirty2.92 MiB3.66 MiB757.67 KiB
52c0562+dirty2.92 MiB3.69 MiB794.15 KiB
83f6f6c+dirty2.92 MiB3.67 MiB772.37 KiB
2bf5613+dirty3.19 MiB4.35 MiB1.16 MiB
b6f8ea2+dirty3.19 MiB4.25 MiB1.06 MiB
30189be+dirty3.19 MiB4.26 MiB1.08 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1234.57 ms1240.65 ms6.08 ms
040c8c2+dirty1227.65 ms1233.98 ms6.33 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty3.19 MiB4.35 MiB1.16 MiB
040c8c2+dirty3.19 MiB4.35 MiB1.16 MiB

@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

Android (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time411.90 ms411.87 ms-0.02 ms
Size17.75 MiB20.13 MiB2.38 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
d997097470.23 ms475.46 ms5.23 ms
75774ea454.16 ms467.80 ms13.64 ms
7bc4d75488.76 ms473.28 ms-15.48 ms
79976dd456.94 ms439.17 ms-17.76 ms
728164b414.34 ms449.22 ms34.88 ms
60ad48c430.73 ms432.85 ms2.12 ms
d0bf494+dirty375.37 ms395.14 ms19.77 ms
e5c9b8b409.02 ms426.66 ms17.64 ms
7301787412.13 ms405.46 ms-6.67 ms
2bf5613425.56 ms423.26 ms-2.31 ms

App size

RevisionPlainWith SentryDiff
d99709717.75 MiB20.11 MiB2.36 MiB
75774ea17.74 MiB20.08 MiB2.35 MiB
7bc4d7517.74 MiB20.08 MiB2.34 MiB
79976dd17.75 MiB20.11 MiB2.36 MiB
728164b17.73 MiB19.85 MiB2.12 MiB
60ad48c17.75 MiB20.12 MiB2.37 MiB
d0bf494+dirty17.73 MiB19.75 MiB2.02 MiB
e5c9b8b17.73 MiB19.83 MiB2.10 MiB
730178717.75 MiB20.13 MiB2.38 MiB
2bf561317.75 MiB20.13 MiB2.38 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
040c8c2449.52 ms432.27 ms-17.25 ms

App size

RevisionPlainWith SentryDiff
040c8c217.75 MiB20.13 MiB2.38 MiB

@antonis
antonis marked this pull request as ready for review April 30, 2025 13:59
@github-actions

github-actionsBot commented Apr 30, 2025

Copy link
Copy Markdown
Contributor

iOS (legacy) Performance metrics 🚀

PlainWith SentryDiff
Startup time1225.27 ms1240.82 ms15.55 ms
Size2.63 MiB3.78 MiB1.15 MiB

Baseline results on branch: main

Startup times

RevisionPlainWith SentryDiff
de59d3a+dirty1223.73 ms1236.28 ms12.55 ms
5446992+dirty1273.28 ms1276.68 ms3.40 ms
8ab11b6+dirty1203.23 ms1206.02 ms2.79 ms
0eacc98+dirty1232.69 ms1234.67 ms1.97 ms
8ae23a7+dirty1230.02 ms1227.62 ms-2.40 ms
52c0562+dirty1219.34 ms1221.25 ms1.91 ms
83f6f6c+dirty1218.33 ms1220.27 ms1.93 ms
2bf5613+dirty1242.29 ms1247.98 ms5.69 ms
b6f8ea2+dirty1236.08 ms1228.58 ms-7.50 ms
30189be+dirty1205.04 ms1226.73 ms21.69 ms

App size

RevisionPlainWith SentryDiff
de59d3a+dirty2.36 MiB3.11 MiB760.16 KiB
5446992+dirty2.36 MiB2.88 MiB531.94 KiB
8ab11b6+dirty2.36 MiB3.11 MiB759.83 KiB
0eacc98+dirty2.63 MiB3.69 MiB1.05 MiB
8ae23a7+dirty2.36 MiB3.10 MiB752.42 KiB
52c0562+dirty2.36 MiB3.14 MiB793.36 KiB
83f6f6c+dirty2.36 MiB3.10 MiB759.79 KiB
2bf5613+dirty2.63 MiB3.78 MiB1.15 MiB
b6f8ea2+dirty2.63 MiB3.68 MiB1.05 MiB
30189be+dirty2.63 MiB3.70 MiB1.06 MiB

Previous results on branch: antonis/fix-feedback-animation

Startup times

RevisionPlainWith SentryDiff
bbe8793+dirty1217.65 ms1222.02 ms4.37 ms
040c8c2+dirty1224.08 ms1223.17 ms-0.91 ms

App size

RevisionPlainWith SentryDiff
bbe8793+dirty2.63 MiB3.78 MiB1.15 MiB
040c8c2+dirty2.63 MiB3.78 MiB1.15 MiB

@krystofwoldrich

Copy link
Copy Markdown
Contributor

The change look good, but before approving I have questions about performance and related to the possible enabling the native driver since specific RN version where it was added (I quickly checked the RN changelog, but haven't seen any information about backgroundColor specifically).

I just want to make sure we are not hurting animation performance in new RN versions.

@krystofwoldrich

Copy link
Copy Markdown
Contributor

I've checked the git history the backgroundColor support was added in 0.69.0.

react/react-native@201f355

@antonis

Copy link
Copy Markdown
ContributorAuthor

I've checked the git history the backgroundColor support was added in 0.69.0.
react/react-native@201f355

Thank you @krystofwoldrich. I was looking for this 🙇

@antonis

antonis commented Apr 30, 2025

Copy link
Copy Markdown
ContributorAuthor

I just want to make sure we are not hurting animation performance in new RN versions.

Good point @krystofwoldrich 👍
I haven't noticed a performance difference but it makes sense to handle this. I've added a check with b05cb43 to use native drivers in supported versions

Comment threadpackages/core/src/js/feedback/utils.ts Outdated

@lucas-zimermanlucas-zimerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I left a small comment, after resolving it, LGTM!

Co-authored-by: LucasZF <lucas-zimerman1@hotmail.com>
@antonis
antonis enabled auto-merge (squash) May 1, 2025 03:51
@antonis
antonis merged commit 366c2d0 into mainMay 1, 2025
@antonis
antonis deleted the antonis/fix-feedback-animation branch May 1, 2025 03:52
Sign up for freeto 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.

3 participants

@antonis@krystofwoldrich@lucas-zimerman