Works very well for me.
dieulot, is there a small bug with the allowQueryString check?
const allowQueryString = 'instantAllowQueryString' in document.body.dataset
I think should be: const allowQueryString = 'instantallowquerystring' in document.body.dataset
If I have: <body data-instantAllowQueryString="foo">
then 'instantAllowQueryString' in document.body.dataset === false
and 'instantallowquerystring' in document.body.dataset === true
because html data attributes get converted to lowercase by the browser (I think).