In your case that you have a server side it might makes more sense to perform all the queries and operations in the backend and if you have one in Rust the best alternatives are the ones you mentioned, subxt is a library to submit extrinsics to a substrate node via RPC and substrate-api-client connects to the substrate's RPC interface via WebSockets. There exist other alternatives for other languages too, take a look in this list.
Another tool that can be interesting for you is Sidecar, a REST service to interact with Substrate nodes.
If your using Tauri then it's your choice - personally I'd keep the UI light and have as much in rust as possible so that its strongly typed, but if your typescript skills are better than your rust skills then maybe you'd want it the other way around? Subxt btw is getting better at being able to run client side on the browser: it can now do most things in the browser but not sign stuff (that would need to be done by something else - maybe a browser extension? or alternately the
Signer trait can be implemented).
Subxt is an RPC library officially managed by Parity for submitting extrinsics, while substrate-api-client is a program that received a grant from Parity but is not officially managed by them.
These two libraries have slightly different functions to support. Additionally, Polkadot-js is a website that utilizes APIs like subxt and substrate-api-client to perform blockchain exporter functions, but its version is outdated and lacks customization options.
Therefore, refer subxt or substrate-api-client for backend logics to query and send request, and polkadot.js for front logics!