These might help:
https://www.jvt.me/posts/2019/08/01/node-parse-url-fragment/
https://news.ycombinator.com/item?id=37118124
https://www.eff.org/deeplinks/2023/12/meet-spritely-and-veil...
(Otherwise, encode-state-in-url-hash or export-to-json-and-paste aren't too bad, unless you do want "social")
But I will say that I have a need to sync data, which is why I'm putting effort into getting that syncing working (as well as compressed and encrypted). I really doubt you would need something robust for this type of thing. I'd, personally, be perfectly happy to get a json "export" of your local storage values that I could just "import" into a new instance of the app. I'll email it to myself. No need to complicate it with automation and all of the baggage that comes along with accounts.
If nothing else, a manual import/export is a fully-featured first implementation that can be iterated into something more robust.
Something easy for a human to transfer like honey-chair-balcony or something. Store the settings in the backend against this identifier and then you can retrieve it later? So you still need a backend but no need for accounts
I'm building the ability to save mixes at the moment actually - good point about being over to move them over to a new device. At the moment I'm just storing saved mixes in localstorage but people will definitely want the ability to sync at some point. I've been trying to avoid having an account system in the interests of keeping things simple but I might have to bite the bullet or come up with another clever way to keep things in sync