You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add deterministic controls fan-out and cleanup coverage.
Add a manual stress path in the Expo example.
Docs now frame controls as short UI text playback.
Long or dense workloads stay something to measure in the target app.
Constraint: Keep public API, package metadata, and lockfile unchanged
Rejected: Wall-clock CI benchmark | flaky and not representative of device FPS
Rejected: Document token-level fan-out as contract | would freeze renderer internals
Confidence: high
Scope-risk: narrow
Directive: Keep descriptor listener counts test-only
Directive: Revisit tests if controls batching is introduced
Tested: pnpm run format:check; pnpm run lint; pnpm run typecheck
Tested: pnpm run test; pnpm run build; pnpm run example:build; git diff --check
Not-tested: Real-device release FPS profiling beyond manual example inspection
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,6 +94,8 @@ export function Headline() {
94
94
95
95
`controls` is a command channel, not a progress value. Use it for buttons, screen focus, onboarding steps, example replay controls, and coordinated title/subtitle replay.
96
96
97
+
Performance note: controls are intended for short UI text such as titles, labels, and product copy. If you plan to animate long paragraphs, grapheme-split copy, or many rows at once, measure in your target app before treating that as a supported workload.
98
+
97
99
Controlled progress is useful when text motion should follow a raw value outside the component, such as scroll position, gesture progress, or another Reanimated shared value. In that mode the app owns the exact progress and the text component only renders the current state.
Copy file name to clipboardExpand all lines: packages/text-motion/README.ko.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -343,6 +343,10 @@ export function Headline() {
343
343
344
344
Text Motion은 playback을 위한 context/provider API나 public component ref API를 제공하지 않습니다. 연결 관계가 JSX에서 보이도록 `controls={controls}`로 명시적으로 전달하세요.
345
345
346
+
성능 관점에서 `controls`는 짧은 UI 텍스트에 맞춰 설계되어 있습니다. Title, label, 짧은 product sentence라면 playback work가 작고 예측 가능합니다. 긴 문단, 많은 row, 글자 단위로 쪼개는 grapheme split 텍스트에 쓰려면 example의 stress case를 확인하고 target device에서 먼저 측정하세요.
347
+
348
+
큰 workload가 중요해지면 renderer 내부 구현은 바뀔 수 있습니다. 그래서 example stress case는 controls 구현 방식에 대한 public promise가 아니라 profiling aid로 보는 편이 안전합니다.
349
+
346
350
### Raw Progress
347
351
348
352
Text motion이 앱이 이미 소유한 raw value를 따라가야 한다면 `progress`를 사용하세요.
Copy file name to clipboardExpand all lines: packages/text-motion/README.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -343,6 +343,10 @@ One controls object may be passed to multiple text motion components. Commands b
343
343
344
344
Text Motion intentionally does not provide a context/provider playback API or a public component ref API. Pass controls explicitly with `controls={controls}` so the connection is visible in JSX.
345
345
346
+
Performance note: controls are designed for short UI text. For a title, label, or short product sentence, playback work should stay small and predictable. For long paragraphs, dense lists, or grapheme-split text with many characters, check the example stress case and measure on your target device before using it in production.
347
+
348
+
The renderer internals may change as larger workloads become important, so treat the example stress case as a profiling aid rather than a public promise about how controls are implemented.
349
+
346
350
### Raw Progress
347
351
348
352
Use `progress` when text motion should follow a raw value the app already owns.
0 commit comments