So for the past couple of years (... coming on a decade?) I've liked the 8bitdo controllers a lot. Build consistency is a bit of a shitshow but you can tell almost instantly if you have one of the bad ones (and it is usually a matter of just loosening one screw unless the PCB itself is cracked). And the Ultimate Pro Whatever The Hell With Charging Dock is really nice and I love that I never have to worry about my controller needing new batteries when I am on my PC. In theory I can just plug it in but that gets into a mess with games that auto-detect what is connected and so forth. The charging dock that doubles as a receiver is delightful.
But when I switched to linux for fulltime gaming a while back... things got messier. 8bitdo has no linux support whatsoever. Mostly that is "fine" because the controller is a controller and I can use a phone app when I want to change what the rear buttons do. But I can't update firmwares. Which, again, is "fine" except I finally wanted to get back into Crosscode and have learned that shitshow of an html5 engine ONLY supports xinput on PC and apparently the functionality to tell the 8bitdo to present as an xinput might only be in a beta firmware? So all the joys of debugging but with very non-technical resources on google.
Not the end of the world (was mostly planning to moonlight to my xbox anyway) but kind of the straw that broke the camel's back as it were. Because Crosscode is a mess of a game technically that even the devs acknowledge was a mistake (AMAZING experience though) but what happens the next time I run up into a corner case? Not ready to throw this in the bin and rage purchase a new gamepad but very much ready to start browsing what my options are. Especially as (some) third parties are actually pretty good these days.
I have a couple Xbox controllers. Wired they work fine. If you use Bluetooth it really depends on the Bluetooth chip and I've had some really bad ones. Also certain models will require firmware updates from Windows before they will pair.