The extra render in the effect version is worse than wasted work. Children and their own effects see that in-between render with the old total, so an analytics call or a fetch keyed on total can fire once with the stale value before the corrected one lands. Calculating during render removes that window completely.