Yes, changes ‘above’ the selection can disrupt composition (browsers will abort composition when the DOM around the selection is updated). I think the right solution here would be to check for view.composing and hold back the transactions when that is true.