2.9 KiB
Why REUI's receipt closes differently
Historical comparison, followed by the user-requested adoption of REUI ai-chat-9. The inspected ai-chat-9 thread uses the same autoScroll / all-anchors-disabled policy shown below, now applied to the product source. Whole-app verification of the new policy remains pending because the external local-S3 dependency is unavailable.
This isolated comparison used unpatched @shadcn/react@0.3.1, Base UI Collapsible, neutral local content, and the isolated harness. Frame evidence.
The inspected REUI ai-chat-12 AskThread source uses:
<MessageScrollerProvider autoScroll>
<MessageScrollerItem scrollAnchor={false} />
</MessageScrollerProvider>
Its ordinary receipt does not implement a special scroll correction. The relevant difference is thread navigation. The preceding application default provider with user scrollAnchor kept the latest user turn anchored. REUI enables bottom-following and disables every row anchor, so it never enters that anchored-user spacer mode.
| Unpatched harness | Opening long notes | Closing a visible receipt |
|---|---|---|
| Previous user-turn anchoring | Trigger y=220; scrollTop=48 | 48px excursion, then returns |
| Previous mode after manual reading | Reader has released the anchor | 0px excursion |
| REUI auto-follow, anchors disabled | Trigger moves to y=-1060 as scrollTop reaches 1328 | 0px after Home reveals the receipt |
| REUI with a long answer and manual reading | Auto-follow initially reaches scrollTop=2840 | 0px after Home and a 60px wheel gesture |
Each close records 20 rendering cycles. No page errors or console errors were captured in these four unpatched cases. Home in the REUI cases is explicit reader input, not an invisible test correction: the opened receipt was otherwise above the viewport. The anchored case label in the JSON names the short-answer fixture; REUI itself has no active user anchor.
REUI therefore avoids this particular anchored-spacer close/restore cycle by selecting a different documented scrolling mode. The chosen ai-chat-9 props avoid the previous anchored mode using public package configuration, but change the product's reading behavior: responses follow the bottom, and expanding long notes can also follow the bottom until the reader scrolls. It does not establish that arbitrary expansion and contraction can never move the viewport.
This is isolated composition evidence, not full app verification. The app's missing external local-S3 dependency remains separate. No package patch was applied and no live API calls were made.