Uniswap Aggregator Hooks: When Many Pairs Share One Pool
A route can look like a Uniswap v4 pool while using liquidity elsewhere. The October expansion makes that distinction practical: different pairs may draw on the same underlying pool, and the API has its own routing contract.

AI-generated conceptual illustration of several pair interfaces connected to one shared liquidity source; not a real facility or transaction.
Key Points
- Uniswap Labs announced expansion to Ethereum, Base and Robinhood Chain on October 22. The first live deployment was on Tempo in March.
- A v4 pool interface can wrap external liquidity. In the documented Curve design, several pairs share one underlying pool.
- Guidestar beta requires explicit API opt-in, supports same-chain EXACT_INPUT requests and does not automatically fall back to standard routing.
Chronological Timeline
Uniswap Labs describes wrapping Tempo’s native stablecoin DEX as the first live deployment of aggregator hooks.
Labs announces availability in the Web App and API on Ethereum mainnet, Base and Robinhood Chain.
The pool label is only the entrance
On October 22, 2026, Uniswap Labs announced that Aggregator Hooks were live in its Web App and API on Ethereum mainnet, Base and Robinhood Chain. The mechanism wraps external liquidity sources in a v4 interface. A router can therefore encounter a v4 pool whose swap is carried out against liquidity elsewhere. This is the publisher’s availability statement; this article does not independently verify deployments on each chain.[1]
October was an expansion, not the first launch. On March 18, Labs had already described the first live deployment on Tempo: an aggregator hook exposing the chain’s native stablecoin DEX as a set of v4 pools. The interface brought another source into the routing system without making that source an ordinary native v4 pool.[2]
Several pairs can share the same reserves
The public implementation makes the distinction concrete. BaseAggregatorHook rejects attempts to add liquidity through its core v4 add-liquidity callback. Its swap callback instead invokes the hook’s settlement path. This code explains the adapter design; its presence in a repository does not prove that every listed integration is live on every announced chain.[4][1]
Curve provides a useful example. The repository documents one hook per underlying Curve pool, with a separate v4 pair for each token combination. Its eight-token example produces 28 pairs, all using the same hook and the same underlying pool. That is an illustration of the mapping, not a report of a specific deployed eight-token pool.[3]
Those 28 pair views are not 28 independent sets of reserves. A swap changes the shared pool, affecting other directions involving a touched token. A routing system that visits the same source more than once has to account for that shared state; counting pair labels cannot establish independent liquidity.[3]
The rule depends on the adapter. For V2-compatible sources, a single hook can serve many distinct external pairs, locating each through a factory and its two tokens. V3-compatible mappings also use the relevant fee tier or tick spacing. A repeated hook address identifies a shared Curve pool in the documented Curve design; it is not a universal test for shared reserves.[3]
The linked API path is an opt-in beta
The expansion post says the Web App includes external liquidity automatically. Its API links lead to the Guidestar Routing (Beta) documentation. That beta currently supports same-chain EXACT_INPUT swaps between two different tokens on Ethereum, Base and Robinhood Chain. EXACT_INPUT means the input amount is fixed. This is the documented API scope, not a limitation inferred for every aggregator-hook contract.[1][5]
Explicit opt-in requires both x-api-experimental: true and x-universal-router-swapsteps: true. The swapsteps header alone does not request Guidestar. Guidestar returns CLASSIC AMM quotes using BEST_PRICE routing; it does not consider UniswapX even when UniswapX is included alongside AMM protocols in the request.[5]
An explicitly requested Guidestar quote never falls back automatically to standard routing. Unsupported requests return HTTP 400; a supported request for which it finds no quote returns HTTP 404. During beta, the documentation advises requesting a standard quote separately in parallel, without those two headers. That is an integration choice the caller must implement.[5]
An empty route array can still describe a route
A Guidestar response leaves quote.route as an empty array. Its execution sequence appears in quote.swapSteps, which integrations should use to display or validate the route. The presence of swapSteps identifies a Guidestar quote. The separate quote.routeString is free-form debugging text, not a stable path format to parse.[5]
Reading the route therefore takes more than counting pools or checking one familiar field. The useful questions are which underlying source is being used, whether another pair touches the same state, which engine produced the response and whether it actually returned a quote. The hook mapping and the API response answer different parts of that picture.[3][5]
Continue reading
Explore the topic through other cases and contexts.


