I've always had issues with Private DNS stating it couldn't connect.
An app would likely be more reliable as it'd use a VPN connection, which you can set as always-on.
I'm using the Private DNS function with AdGuard's DNS. I've experienced the issue where it couldn't connect but that is on AdGuard's end as their DNS service sometimes goes down.
I prefer using the Private DNS function over the AdGuard dedicated app as it is one less app that I have to install/is running in the background. I believe the only benefit that the AdGuard dedicated app provides is the ability to customize what is filtered.