Users can limit front-running by splitting the transaction into many smaller transactions and adjusting the low slippage. Similarly, developers can use anti-front-running measures like making transactions private and using a hidden mempool.
Users can break large transactions into smaller ones instead of executing them all at once, which reduces the appeal of transactions with front-running bots due to the value that can be mined. As a result, bots will pass the transaction instead of front-running it.