Starting with version v16.0.0, there is an ESP32-C3 binary and an ESP32-C3-QIO binary in the downloads on GitHub. Previously there was no QIO binary. I didn’t find any documentation about this. Today I tried installing WLED_16.0.1_ESP32-C3-QIO.bin on my ESP32-C3 that I bought from AliExpress, reasoning that the worst that could happen is a need to recover via USB. It had been running v0.15.4, and I did the upgrade by manually uploading the file via the web interface, disabling validation to enable upgrading despite the name mismatch.
Afterwards, the ESP32-C3 wasn’t on my LAN any more, but it did create a WLED-AP, and I could connect to it. Many times attempts load web pages failed or partially failed, requiring many retries. It complained about a file system error. An attempt to flash WLED_16.0.1_ESP32-C3.bin via the web UI failed due to a flash read error. Then I used esptool via USB and that succeeded. The ESP32-C3 was back on my LAN, and the configuration seemed intact. Though I restored configuration and preset backups just to make sure.
So, I guess the cheap hardware I have isn’t capable of properly communicating with the flash using QIO? I’m posting this to point out the apparent lack of documentation about QIO, document my results, and make sure that I wasn’t supposed to change something else to make it work, like the bootloader.