You type in an amount, a quote appears, and before you have even reached for the confirm button, the number moves. Sometimes it is a fraction of a cent. Sometimes it is enough to notice. This is not a bug and it is not the app trying to squeeze more out of you. It is how on chain pricing works, and understanding it will make the whole swap screen make more sense.
A quote is a snapshot, not a promise
When a swap app shows you a price, it is reading the current state of one or more liquidity pools (or, in an aggregator or solver setup, several routes at once) at that exact moment and calculating what your trade would get if it executed right now. That calculation depends on the reserves sitting in the pool at that instant.
Those reserves are not frozen while you decide. Base produces a new block roughly every two seconds, and any of those blocks can contain someone else's swap, a liquidity add, or a liquidity removal that touches the same pool you are quoting against. Each of those events shifts the ratio of tokens in the pool, which shifts the price. A quote is simply the best answer the app can give for "right now." It stops being accurate the moment the next relevant transaction lands.
This is also why a quote is quite different from a price you would see on a stock ticker. A stock price is reported after trades happen. A swap quote is a live simulation of a trade you have not sent yet, run against reserves that can move under you before you send it.
Why apps refresh the number instead of just letting it go stale
If a swap app never refreshed the quote, you would eventually confirm a trade based on a price that no longer exists on chain. Two things could happen at that point. Either your transaction reverts because the outcome no longer meets your minimum, or worse, some apps might execute it anyway at whatever the new, possibly bad, price is.
To avoid that, most swap interfaces re-fetch or recalculate the quote on a timer, often every few seconds, for as long as the swap screen is open. You will usually see this as a quiet update: the output amount ticks slightly, or a small countdown or refresh icon resets. The app is not being indecisive. It is trying to keep the number in front of you as close as possible to what would actually happen if you confirmed right now.
Some interfaces also expire a quote outright after a short window, typically somewhere between ten and thirty seconds, and force a fresh fetch before letting you proceed. That expiry exists for the same reason a food delivery app will not let you check out on a menu price from an hour ago. Too much time has passed for the number to mean anything.
This is not the same thing as slippage
It is easy to lump quote refreshing in with slippage, but they solve different problems and happen at different times.
A quote refresh happens before you confirm. It updates what you see so you are deciding based on something close to reality.
Slippage tolerance handles the gap after you confirm. Once you approve a swap, that transaction has to travel to a validator and get included in a block, which takes a small amount of time even on a fast chain like Base. Your slippage tolerance is the buffer you set for how much the price is allowed to move in that final window between confirming and executing, before the transaction cancels itself rather than fill you at a worse price than you agreed to.
Put together, the sequence looks like this. The quote keeps refreshing to stay honest while you look at the screen. You confirm based on the freshest quote available. Slippage tolerance protects the short trip your transaction takes from your wallet into a block. If the price moves more than your tolerance allows during that trip, the trade fails and your tokens stay put, rather than filling at a price you never agreed to.
When a bigger jump is a signal, not noise
A tiny wiggle in the quote is completely normal on any liquid pair and is not something to worry about. A large, sudden jump is worth pausing on, for a different reason. It usually means one of a few things: the pool you are trading against is thin and a single other trade just moved it a lot, there was a burst of activity on that token (which is common right after a launch), or the route your app is using switched because a better one just became available or a previous one dried up.
None of those are dangerous by themselves, but a token that keeps requoting wildly is often the same kind of token worth looking into before you trade it. If a small swap on your end is enough to move the quote noticeably, that is really a description of low liquidity, which is the same signal that shows up in guides on price impact and in spotting scam tokens. A requote by itself proves nothing. A requote paired with thin liquidity and an unfamiliar token is a reason to slow down.
What this means for how you use a swap screen
A few practical habits fall out of understanding this mechanism.
Do not screenshot a quote and expect it to still be true a minute later. Prices on chain are live, not cached.
If your app shows a countdown or refresh indicator, treat it as informational, not something to race against. Confirming right as it resets does not get you a better deal, it just means you are looking at the newest available number.
If you are trading a low liquidity or newly launched token, expect more movement between quotes than you would see on an established pair like ETH or a major stablecoin. That is a property of the pool's depth, not of the app.
And if a swap fails after you confirmed it, the most common reason on a healthy network is that the price moved past your slippage tolerance in the time it took your transaction to land. That is the system working as designed. It declined to fill you at a worse price than you agreed to, rather than silently accepting one.
A swap quote is best thought of the way you would think of a live currency exchange rate at an airport kiosk: accurate for right now, not guaranteed for later, and worth a second look if it jumps more than you expect.