Build MEV-Protected Swaps in TypeScript

Every time you swap tokens on Ethereum, bots might be sandwiching you for profit. Here's how to code a TypeScript service that slams the door on those $289 million thieves.

Sandwich Bots Pilfered $289M Last Year – Build TypeScript Swaps That Punch Back — theAIcatchup

Key Takeaways

  • Sandwich bots stole $289M from swaps in 2025 – protect with pre-trade validation and private RPCs.
  • Use swapapi.dev for quotes with built-in slippage and impact checks in TypeScript.
  • Private submission like Flashbots isn't enough alone – history shows multi-layer defense wins.

Imagine you’re just trying to swap some USDC for ETH. Simple, right? Wrong. Bots see your trade in the mempool, buy ahead, jack the price, let you buy high, then dump. You get less ETH. They pocket the difference. Last year alone, this sandwich attack nonsense extracted $289 million from Ethereum swaps – over half of all MEV activity.

That’s real people – you, me, some normie dipping into DeFi – losing out to algorithmic vampires.

Why Your Everyday Swap Is Bot Fodder

Look, if you’re building a wallet, trading bot, or swap UI, ignoring MEV protection isn’t bold. It’s stupid. ScienceDirect pegged it: $289 million gone in 2025. And that’s just Ethereum.

Sandwich bots extracted $289 million from Ethereum swaps in 2025 alone, accounting for over 51% of all MEV activity on the network (ScienceDirect, 2025).

That’s not hyperbole. Every unprotected swap’s a mark.

But here’s my unique take, after two decades watching Valley hype cycles: this is 2010 high-frequency trading all over again. Back then, Wall Street HFT firms front-ran retail orders on Nasdaq, sparking flash crashes and SEC probes. DeFi’s mempool is the new order book – open to all, exploited by few. Without these defenses, retail investors bail, and crypto stays a casino for pros. History says regulators will eventually step in; build now or get left holding the bag.

How Sandwich Hell Works (And Why It Hits You)

You fire off a swap tx to the public mempool. Buy ETH with USDC, say.

Bot spots it. Front-runs: snaps up ETH cheap, bumps price.

Your tx hits – at the worse rate.

Bot back-runs: sells high. Profit: yours, via slippage.

One per block on average, per arxiv. Across chains, private routing jumped from 32% to 50% in months as users wised up.

Cynical truth? Block producers love it – they reorder for max fees. Searchers (bots) pay kickbacks. You? Fuel.

Who profits? Not you. Flashbots claims $43B shielded, sure – but they’re in the game too, selling ‘protect’ RPCs. Follow the money.

Step One: Quote Smart, Don’t Get Screwed Pre-Trade

Don’t even submit without checks. Use an API like swapapi.dev – free, 46 chains, no key.

It spits back priceImpact and minAmountOut. Reject bad quotes.

Here’s the thing. Price impact over -5%? That’s a trap – thin pool, bot bait. -8%? Run.

Code it like this:

async function getSwapQuote(
  chainId: number,
  tokenIn: string,
  tokenOut: string,
  amount: string,
  sender: string,
  maxSlippage: number = 0.005
): Promise<SwapQuote> {
  // fetch logic here
}

Set slippage to 0.5%. Tx reverts if output slips more. Safety net.

Then validate:

Price Impact Risk Action
> -0.5% Low Go
-0.5 to -2% Medium Watch
-2 to -5% High Split trade
< -5% No Block

Partial fills? Liquidity red flag. Big swaps scream ‘sandwich me.’

function validatePriceImpact(quote: SwapQuote): { safe: boolean; warning: string | null } {
  const impact = quote.data.priceImpact;
  if (impact < MAX_ACCEPTABLE_IMPACT) {
    return { safe: false, warning: `Price impact ${(impact * 100).toFixed(2)}% – rejected.` };
  }
  // etc.
}

This catches what private mempools miss. Flashbots shielded billions, yeah – but high-impact trades still bleed.

Pre-validation: your first moat.

## Does Private RPC Actually Stop the Bleeding?

Kinda. But not solo.

Public mempool: bot buffet.

Private RPCs – Flashbots Protect, MEV Blocker – bundle your tx privately. No front-run.

Flashbots: $43B safe, 2.1M accounts. Adoption’s booming.

But. Thin pools? Price impact still kills. Bots lurk in relays too (rare, but…).

Setup: viem or ethers v6. Point to private endpoint.

const privateRpc = 'https://rpc.flashbots.net'; // or similar
const walletClient = createWalletClient({
  transport: http(privateRpc),
});

Submit via bundle. But pair with slippage + validation.

Cynic’s note: These ‘protect’ services charge fees eventually. Free now? Bet on it changing.

Coding the Full Beast: TypeScript Swap Service

Node 18+, TS setup, viem, swapapi.dev.

  1. Get quote.

  2. Validate impact, partials.

  3. Enforce slippage.

  4. Sign + send private.

Full flow sprawls like this – but tight.

// Pseudo-full
async function protectedSwap(chainId, tokenIn, tokenOut, amount, sender, privateRpc) {
  const quote = await getSwapQuote(chainId, tokenIn, tokenOut, amount, sender);
  const validation = validatePriceImpact(quote);
  if (!validation.safe) throw new Error(validation.warning);
  // sign tx from quote.data.tx
  // submit to private RPC
}

Test on testnets. Bun’s faster for dev.

Edge: Partial status? Split amounts, recurse.

This ain’t toy code. Scales to bots, wallets.

## Why Bother for DeFi Devs in 2025?

DeFi’s $100B TVL, but MEV erodes trust. Users flee slippage.

Build protected? Retention skyrockets. Who makes money? You – fees, UX edge.

Prediction: By 2026, unprotected swaps = liability. Chains like Solana laugh – but Ethereum’s fixing with PBS. Still, roll your own.

Valley parallel: Remember Knight Capital’s algo glitch, $460M gone in minutes? MEV’s that, daily.

Don’t be the glitch.

The Catch – And How to Dodge It

APIs throttle? Cache quotes.

Gas spikes? Quote has gasPrice.

Multi-chain? swapapi.dev’s got 46.

Warn users on medium impact – UI popups.

Short para: It works.


🧬 Related Insights

Frequently Asked Questions

What is a MEV-protected swap service?

It’s a swap tool that uses pre-trade price checks, slippage limits, and private RPCs to block sandwich bots from front-running your trades.

How do I build MEV protection in TypeScript?

Grab viem, hit swapapi.dev for quotes, validate impact/slippage, submit via Flashbots Protect RPC – full guide above.

Does private RPC stop all Ethereum sandwich attacks?

Mostly, but pair with pre-validation; thin pools still slip, and not all bots are foiled.

Marcus Rivera
Written by

Tech journalist covering AI business and enterprise adoption. 10 years in B2B media.

Frequently asked questions

What is a MEV-protected swap service?
It's a swap tool that uses pre-trade price checks, slippage limits, and private RPCs to block sandwich bots from front-running your trades.
How do I build MEV protection in TypeScript?
Grab viem, hit swapapi.dev for quotes, validate impact/slippage, submit via Flashbots Protect RPC – full guide above.
Does private RPC stop all Ethereum sandwich attacks?
Mostly, but pair with pre-validation; thin pools still slip, and not all bots are foiled.

Worth sharing?

Get the best AI stories of the week in your inbox — no noise, no spam.

Originally reported by dev.to

Stay in the loop

The week's most important stories from theAIcatchup, delivered once a week.