Scrolling in our app screens with charts was janky. Two root causes: (1) Scroll offset lived on an @ObservedObject VM, so every scroll frame fired objectWillChange and re-rendered the entire screen, chart included. (2) The chart’s view model was being rebuilt inline in body, so it recomputed on every re-render (and dragging the chart re-renders at 60fps). Fix: moved scroll state to @State + pushed the read into a tiny child view via @Binding (passing a binding isn’t a “read,” so the parent stays uninvalidated). Made the chart own its view model with @StateObject, rebuilt only via .id() keyed to the actual plotted data. Result: scroll hitches 66→13 (-80%), stall time 2932ms→717ms (-76%), chart re-renders per scroll session 78→4 (-95%), list item re-renders 696→23 (-97%).