Please describe your proposed solution
UTxO contention is that thing that happens when 2 or more transactions want to use the same UTxO as input.
This scenario is particularly relevant when designing parallel dApps, where the contract has many utxos, and the user may choose any of them for their purpose.
two clients that are not aware of each other may end up choosing the same UTxO, and hence, only one will have their transaction accepted.
The solution proposed is to allow the clients to be aware of what is going on on the dApp in order to coordinate the utxos to use.
This can be done via a centralized server (most probably a dApp has one somewhere, even just to query data for the blockchain) and websockets.
The centralized server would keep track of a subset of the ledger state (only the utxos of the contract as an example) and send events to the clients that are looking to use those utxos.
When a client is building a transaction it will request to "lock" some utxos to the server, and if the utxo is not already locked, the server sends an "OK" response and emits an event for other clients, otherwise it just sends an "Error" response to the client that requested in the first place, so that an other utxo can be tried.
This solution does not prevent the utxos to be spent by someone that is not connected to the server, but it will handle most of the realistic scenarios.