Repository navigation
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThis change adds the ChangesAndroid CSS platform transitions
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant CSSPlatformTransitionsManager
participant ObjectAnimator
participant HoldThenEase
CSSPlatformTransitionsManager->>ObjectAnimator: configure delay-inclusive duration
CSSPlatformTransitionsManager->>HoldThenEase: wrap configured easing
ObjectAnimator->>HoldThenEase: interpolate elapsed transition
CSSPlatformTransitionsManager->>ObjectAnimator: seek and start animator
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
e028a18 to
b66f94d
Compare
c4bb6d7 to
4d865ae
Compare
b66f94d to
6a57755
Compare
4d865ae to
fc321a9
Compare
6a57755 to
6c2f1b1
Compare
fc321a9 to
a1a4c84
Compare
6c2f1b1 to
3821b05
Compare
5045268 to
7eee6dd
Compare
3821b05 to
ab00630
Compare
7eee6dd to
94063c7
Compare
ab00630 to
389daec
Compare
94063c7 to
1357669
Compare
389daec to
86093b0
Compare
1357669 to
1e0895d
Compare
86093b0 to
162ed5c
Compare
1e0895d to
db219a6
Compare
162ed5c to
7ff067b
Compare
db219a6 to
0eef8f2
Compare
7ff067b to
236735e
Compare
0eef8f2 to
8681967
Compare
236735e to
0e03087
Compare
8681967 to
2cd0923
Compare
0e03087 to
270d689
Compare
270d689 to
ebe9bdf
Compare
b475585 to
942016e
Compare
c509641 to
e1cfb18
Compare
76b41d5 to
9116dc6
Compare
43c2fd7 to
0ec3bc1
Compare
9116dc6 to
50b1385
Compare
0ec3bc1 to
6721cdb
Compare
50b1385 to
dbdc501
Compare
6721cdb to
a06bc94
Compare
dbdc501 to
90753d5
Compare
a06bc94 to
d87aa6d
Compare
90753d5 to
824b5c8
Compare
d87aa6d to
010000d
Compare
824b5c8 to
66fddc4
Compare
010000d to
8fe070b
Compare
24a0080 to
2c79ccd
Compare
Routes opacity to the Android backend behind ANDROID_CSS_PLATFORM_TRANSITIONS, off by default. The backend declines when the view predates API 29 or the target is 0, and those transitions fall back to the C++ loop.
0db10d0 to
f930a96
Compare
|
Split into focused PRs, since this bundled routing, delay playback and teardown under a title describing only the first:
|
The pre-draw repair re-asserts every running platform transition on every frame, but React can only overwrite an animated value on frames where it wrote props. A `UIManagerListener` records mounts and the repair returns immediately on all other frames, so the walk over running transitions happens at write rate rather than at the display refresh rate. That matters most after a transition settles: a persistent hold keeps its entry, so without the gate every later frame the window draws keeps walking the map. Measured on an emulator during a 3s transition, 201 of 240 pre-draw callbacks returned early. Synchronous updates run their mount item inline (`FabricUIManager.synchronouslyUpdateViewOnUIThread`), bypassing `MountItemDispatcher`, so no listener fires for them even though `opacity` is one of the props they carry. They therefore open the gate explicitly, which makes the invariant true by construction rather than by coincidence. Measured on device, such writes are rare and always landed on a frame where a mount had already opened the gate, so this is insurance rather than an observed fix. Identical in content to #10168, which this replaces. That one was based on the head branch of #10061, and closing #10061 instead of merging it left the base pointing at a branch with no live PR, so merging would not have reached `main`. GitHub refuses to change the base of a pull request that belongs to a stack, so recreating it was the only way to target `main`.
Routes
opacityto the Android backend behindANDROID_CSS_PLATFORM_TRANSITIONS, off by default.Every CSS easing routes: a
TimeInterpolatorcan carry any curve, and Kotlin rebuildssteps()andlinear()stops from the same normalized points the loop uses, so nothing reimplements the easing spec across the boundary. Apple stays on linear and cubic-bezier, which is allCAMediaTimingFunctioncan express.Stacked on #10060.