Sticky CanvasPosition behavior for ScrollingFrames

As a Roblox developer, it is a little tedious to keep a ScrollingFrame scrolled to the bottom of the frame when the content of the ScrollingFrame is dynamic.

In my specific case I am making a chat system that is using a ScrollingFrame to contain all my chat messages / UI. The most recent chat message shows up at the bottom of the list and I’d like the ScrollingFrame to stay scrolled down all the way so the most recent message can be seen.

Ideal behavior would be: when a ScrollingFrame is scrolled to a limit of its CanvasSize, it should automatically snap the CanvasPosition to the new limit of its CanvasSize when any relevant size and position properties change. Any scrolling input would break the lock in the appropriate direction.

If Roblox is able to address this issue, it would improve my development experience because I wouldn’t have to code this behavior into every ScrollingFrame that has a similar use case. I’d just have to set a property.

A nice QoL feature.

11 Likes

This would be useful for me too as I am using a ScrollingFrame for dialogue with a “typewriter effect” similar to this but within a fixed frame. As the text is revealed, the Y size of the text label, and consequently the CanvasSize of the ScrollingFrame, is updated with every new line. I have to manually set the CanvasPosition every time it updates so players can see the new line of text being revealed instead of requiring them to scroll.

Here is a recording of the effect:

2 Likes