The dataChange
event is meant to be called on each and every change so that data is synchronized immediately. If you need to synchronize to the server you can buffer for some time (100 - 500ms) until all user changes settle and send to the server after this delay.
However, if you have a "Save" button, then you don't need to listen to dataChange
but you can get the changes of each store in https://bryntum.com/products/calendar/docs/api/Scheduler/data/EventStore#property-changes in the "Save" button click listener.