nit: let's call them `onRowOnscreen` and `onRowOffscreen` ?