The following code results in a view that does what you expect, always shows the content appearing at the bottom of the scroll view. However, if you start with an empty view and populate it with a few buttons, the tap targets for those buttons will be off until you manually scroll the view.
ScrollView {
LazyVStack {
Button(action: {}) { Text("Foo") }
...
}
}