One minor niggle for your friend re: “To not pollute the DOM, neo.mjs is sticking to global event listeners. E.g. there is just 1 click listener on the document body node.”
That is a problem on Mobile Safari (I know Safari isn’t supported but...). For Mobile Safari registering an onclick event on say a img affects the touch zones of adjacent controls (and also turns on tap highlighting). Say you place an img of a ▼ adjacent to an input. The ▼ needs its own onclick handler, otherwise a tap on the img near the input gets shifted to the input (causes the focus to shift to the input.) Tap zones for inputs are larger than the actual boundary of the input element.