The sad thing is that, while Nintendo could have added more polish to the feature, they had no way to make the UX truly good for an average user without depending on some cloud service. The file transfer protocols with good UX are all either Internet-dependent (cloud storage), proprietary (AirDrop), slow (classic Bluetooth file transfer), or all of the above. Under those constraints, the QR codes feel a bit like a clever hack.
There would have been other alternatives to make life easier for people:
1) the Switch is gonna be connected to your LAN anyways via WiFi - so have it open up a SMB server that you can connect to.
2) Use the Nintendo Switch companion app and broadcast packets to allow local discovery
3) Expose the content of the internal storage and/or SD card via USB MTP
4) Use the NFC transmitter in the right JoyCon that is normally used to read Amiibos to transmit the WiFi credentials like Sony does this in some of the Alpha cameras.
The problem is, we're talking about Nintendo here who require you put the Switch into the DMZ with full (!) firewall exposure to play Animal Crossing because apparently they have never ever heard about STUN/TURN or WebRTC. Good luck if you have two people in one household who both want to play Animal Crossing as the host with someone else!
I, seriously, have NO FUCKING IDEA how a company can be at the same time so good at implementing software and so fucking bad at the basics. Jesus. They have all the hardware they need but apparently are unable to make use of it.
(Side note: Anyone here who has tried fuzzing the network stack that Animal Crossing uses? Could be a nice vector for remote code execution, especially since the way AC operates network play requires it be wide open to the Internet)
It uses WebRTC for local file transfers, though as of yet it still needs a server to shuffle connection messages between peers on the same IP.
I'm also a bit surprised QR codes can't be composed or combined. e.g have a single QR code that has a WiFi connection as the first code and then a URL code as a second. I know QR codes can increase in size to fit more data but I guess it still has to be a single string/byte array?
On a related note most mobile devices already support QR code for setting up a WiFi networks (iOS, Android). Works extremely well. This website has a JavaScript implementation you can take offline for generation:
https://qifi.org/
Declaimer: I have no relationship with the site. I've just used it for generation after a code review and taking the site offline.