Lots more is holding it back, but I'd agree apps is a huge issue.
It's still has significant issues with being end-user friendly. Needing to use command line for some things that should be a right click, not supporting right click, ambiguities galore when looking at a package repository, odd defaults in packages that one really wouldn't expect to have to check (e.g. Selecting RDP connection in a Remote app, but it defaults the security to something other than RDP?)
As for apps, there's problems like Libre Office devs refusing to support tables in the spreadsheet app, saying data management should be done with a database tool. While they're not wrong, it takes a LOT more effort to setup a DB than to simply click "make table" in excel, which millions of people are familiar with. I create tables every day for run-of-the-mill stuff that simply doesn't need a database. No one has time for that.
Or you plug in the most prolific wireless mouse on the planet, that's been around since 2000 (Logitech), and it doesn't work. Now pick any random piece of hardware and this is the stuff you run into. You go down the rabbit hole of searching for a solution
Or CAD (which falls in your app argument).
Linux is great for many things (things I run, UnRAID, TrueNAS, Proxmox, etc), it's just not a great general purpose desktop for the average user, yet.