Skip to content

feat: improve conversation scrolling and loading states effectively#2423

Open
siiddhantt wants to merge 3 commits intoarc53:mainfrom
siiddhantt:feat/improve-conversations
Open

feat: improve conversation scrolling and loading states effectively#2423
siiddhantt wants to merge 3 commits intoarc53:mainfrom
siiddhantt:feat/improve-conversations

Conversation

@siiddhantt
Copy link
Copy Markdown
Member

  • Added meta tags for mobile web app capabilities in index.html.
  • Introduced loading state management for agents in Navigation component.
  • Updated NewAgent component to handle agent chunks as strings.
  • Enhanced Conversation component to display loading indicators for agents.
  • Improved ConversationBubble styles and interactions for better UX.
  • Adjusted ConversationMessages to manage scrolling and loading states effectively.
  • Refactored useMediaQuery hook for better performance and responsiveness.
  • Updated CSS for consistent styling and animations.
  • Extended preferenceSlice to include agent loading state.
  • Initialized agent loading state in the Redux store.

- Added meta tags for mobile web app capabilities in index.html.
- Introduced loading state management for agents in Navigation component.
- Updated NewAgent component to handle agent chunks as strings.
- Enhanced Conversation component to display loading indicators for agents.
- Improved ConversationBubble styles and interactions for better UX.
- Adjusted ConversationMessages to manage scrolling and loading states effectively.
- Refactored useMediaQuery hook for better performance and responsiveness.
- Updated CSS for consistent styling and animations.
- Extended preferenceSlice to include agent loading state.
- Initialized agent loading state in the Redux store.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 22, 2026

@siiddhantt is attempting to deploy a commit to the Arc53 Team on Vercel.

A member of the Team first needs to authorize it.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.21%. Comparing base (68ca8ff) to head (5af2f37).
⚠️ Report is 18 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2423      +/-   ##
==========================================
- Coverage   91.37%   91.21%   -0.16%     
==========================================
  Files         221      228       +7     
  Lines       19269    19529     +260     
==========================================
+ Hits        17607    17814     +207     
- Misses       1662     1715      +53     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
oss-docsgpt Ready Ready Preview, Comment Apr 22, 2026 8:06am

Request Review

Copy link
Copy Markdown
Collaborator

@ManishMadan2882 ManishMadan2882 left a comment

Choose a reason for hiding this comment

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

Hey @siiddhantt noticed few issues in the scrolling mechanism which potentially break the intended UX for the scroll.

Regression: autoscroll vs. user scroll "tug-of-war" during streaming

reintroduces the behavior that was intentionally fixed in #420e9d3 ((feat) conversation: scroll experience). When the user scrolls upward while a response is streaming, the view snaps back to the bottom instead of respecting the user's intent.

Repro

  • Send a prompt that yields a long streamed response.
  • While it's streaming and the view is pinned to the bottom, wheel/touch upward by a small amount (a few px).
  • Observe: the viewport is pulled back down on the next streamed chunk. Only scrolls larger than SCROLL_THRESHOLD (10px) in a single event survive.

if (isNewMessage) {
userInterruptedRef.current = false;
setInterrupted(false);
scrollToBottom(true);
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.

changes the auto-scroll on a new message from smooth to instant, which I believe is a regression from the previous UX.
could you confirm if this is intentional?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

there was an issue with the mermaid component being rendered while streaming of the answers that got fixed thru this, I've made some changes now to improve the scroll and keep it working without breaking with mermaid

},
[isAtBottom, setButtonHidden],
);
const scrollToBottom = useCallback((instant = true) => {
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.

changes the intended UX, the scrollToBottom is turned instant by default.

@siiddhantt
Copy link
Copy Markdown
Member Author

@ManishMadan2882 if you could check out the new changes and how the scroll feels now, do lmk thanks!

  • added a scroll based opacity to the shadow above input box so the transition on when the shadow is shown is even smoother
  • the scrolling can be interrupted during streaming of answer, smoother scrolling without breaking during rendering of mermaid components
  • fixed sources sidebar and other smaller changes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants