Move bounds calculation to `onDataUpdate`