It’s not the only way, but it’s probably the most practical one, as it lets you have more control over the items before you add them. The way I approach it is to have a panel with a VerticalLayoutGroup, and then I Instantiate a prefab for each row. I found there were several gotchas involved too, such as needing to set LayoutElements on the items in the row to make sure they didn’t get compressed down to zero height, moving the panel pivot to the top to ensure new items got added to the bottom (rather than moving the panel up to accommodate them), etc.