To get access to the contents of the whole book you need to purchase a copy.
Scoping chart updates
Interactive charts can receive frequent updates from scrolling, selection, pointer movement, and animation. The cost of an update depends not only on what changes, but also on which view or modifier reads the changing value. If the view hosting our Chart reads every changing value, even a presentation-only change can invalidate its body and trigger the chart to be fully reevaluated.
Once the chart host has been isolated from unrelated state, changing values used by the chart can be consumed at three main boundaries with different costs. Chart content is the most expensive boundary. Values read or captured inside Chart { ... } while constructing marks, plots, groups, and ChartContent modifiers cause Swift Charts to enumerate the complete ChartContent tree again when they change. Chart configuration applied outside the ChartContent builder forms a less expensive boundary. Domains, scales, axes, and chart-level overlay and background builders can update the resolved chart using its existing chart-content description, provided the changing value is read within a focused view or modifier. Ordinary SwiftUI views mounted inside annotations, overlays, backgrounds, axis labels, style closures, and rendered layers form the least expensive boundary when a change affects only their presentation.
These boundaries are not interchangeable. A value that changes plotted data, marks, or encodings must remain in chart content, while a presentation-only value can be consumed after Swift Charts has resolved that content. For each changing value, place its property read in the smallest update scope and at the least expensive boundary that can still express the required result correctly.