Been going back and forth on this with a few devs lately. V3's concentrated liquidity was already a huge leap over V2 LPs finally got to pick their price ranges instead of spreading capital thin across the whole curve. Solid, battle-tested, and basically the default choice for years.
But V4 changes the math. Singleton architecture means every pool lives in one contract instead of spinning up a new one each time that alone kills a big chunk of deployment cost. Add flash accounting (net balances settled once per tx instead of shuffling tokens around at every step) and hooks (custom logic — dynamic fees, on-chain limit orders, custom oracles without forking the core protocol), and you're looking at a genuinely different design philosophy, not just a version bump.
Where it gets interesting: native ETH support is back (no more mandatory WETH wrapping), and fee tiers aren't locked to three fixed options anymore hooks let you set whatever structure fits your model.
Trade-off is real though hooks mean more attack surface. Reentrancy and DoS vectors are a documented concern, and audits are heavier and pricier than a standard V3 review.
So it comes down to: are you shipping something standard and want proven rails (V3), or are you building something that needs programmable liquidity and custom fee logic from day one (V4)?