Perhaps we're double encoding when we shouldn't be?
Yes, as far as I can tell, it seems to be double-encoded when it shouldn't be.
A quick look. Yours require two decodeURIComponents:
// decodeURIComponent(decodeURIComponent("")); '{"identifier":""}' // blixt wallet decodeURIComponent(""); '{"name":"Hampus","identifier":""}'
Though I'm not sure who's in the wrong here. I'll investigate some more.
We’re probably getting URI encoding for free with the native JS API that constructs the URL