Dear Hovo,
this is a fascinating problem.Fortunately, there is a very quick fix:
JXG.Options.board.minimizeReflow = 'none';
var board = JXG.JSXGraph.initBoard('box', {boundingbox:boxDimensions, axis:true});
The problem is a little bit involved and I still do not understand all details, but it seems to be like this:
The default value of JXG.Options.board.minimizeReflow is 'svg' or 'all' which means that before the SVG nodes of a construction are updated, the SVG root node is taken out of the DOM and the update is done in a shadow DOM. This results in a certain performance improvement (I did not check if this is performance improvement still exists).
On the other hand, board.fullUpdate() also checks the size of all text elements - with an asynchronous setTimeout call in text.updateSize().
If in your example a down event happens, board.fullUpdate() is triggered. If a down event is followed immediately by a move event, the next board.update()
starts while the timeout call in text.updateSize() has not been finished, yet. But the new board.update() call takes out the svg-root of the DOM.
For some reason, touch events can not handle this situation, however with pointer events it seem to be fine.
In summary, do not use this minimizeReflow optimization in that case.
Best wishes,
Alfred