In a 'Save' button handler, I want to create new model and add it to a store and select it right away so the user can find it in the grid.

grid.getView().getSelectionModel().select( [item], false, false);

,problem is, that the selection gets lost in the stores onCreateRecords, where the stores records are updated with the newly created record from the server, while the records in the selectionModel are left with the old records. In the following refresh of the grid there is no match between the selectionModel and the updated records.

A workaround:
In the stores proxy afterRequest:
var record = request.operation.resultSet.records[0];
// select the created record
if (request.action == 'create' || request.action == 'update') {
grid.getView().getSelectionModel().select( record, false, false);