On October 29, 2026, Uniswap launched TJAR, opening its Token Jar fee-conversion framework to other apps across seven chains. Apps collect fees in mixed assets and receive a chosen token when a searcher pays to release the jar’s holdings.
Robinhood already uses TJAR for fees collected through the Uniswap API and receives $USDC and $USDG, according to the announcement. Existing API integrators can direct fees into a jar by setting it as the fee recipient in their quote request. The framework also accepts fees from apps, hooks and other integrations.
Uniswap originally built the framework for its own protocol fees. It says the framework handled more than $15.3M in conversions last month. That figure covers activity before the product opened to other apps, not receipts generated by the launch.
A fixed payment releases selected assets
The overview describes a pair of immutable contracts. The Token Jar holds incoming assets; the Releaser sets the payment needed to withdraw them. The operator chooses the payment token, threshold and destination. The jar holds balances without pricing its contents or maintaining a separate inventory.
A searcher names the assets it wants and submits a release transaction. The releaser sends the threshold payment to the operator’s chosen recipient. The jar then transfers its full balance of each named asset to the searcher’s recipient. The searcher receives the assets as they are and handles their subsequent conversion.
Selecting fewer assets costs the same threshold payment. Assets omitted from the list stay in the jar for a later searcher. A profitable release requires the selected holdings to be worth more than the payment and gas. The price stays fixed as balances accumulate, so searchers compete over the margin they will accept.
The deployment guide describes how the threshold affects collections. A high threshold produces fewer, larger releases and leaves more value waiting in the jar. A low threshold produces more frequent sweeps. Waiting exposes collected tokens to price fluctuations; frequent sweeps can lose fee value when incoming assets overshoot the threshold.
Operators control the terms and the exit
Anyone can deploy a paired jar and releaser through a single Factory transaction. The Factory configures the pair, transfers ownership to the chosen owner and appoints an optional configuration setter. It retains no authority over the contracts it deploys.
The jar owner controls which releaser may move its assets. The releaser owner controls the release terms and the configuration-setter role. A delegated setter can change the terms but cannot appoint its own replacement or redirect the jar to a different releaser. Both contracts initially belong to the same address. Their ownership can subsequently be transferred.
The releaser documentation requires the payment token, recipient, threshold and maximum asset-list length to change together. Every configuration update advances a nonce, as does a competing release. Transactions submitted against an outdated nonce revert instead of executing under changed terms.
Lowering the threshold can immediately make existing holdings available at a cheaper price. The documentation warns that this can leak value as soon as the change lands. Ownership transfers are single-step and final if sent to the wrong address. Permanently renouncing control without a configuration setter freezes both the terms and the jar’s releaser selection.
Governance can add a release fee
The Fee Controller documentation states that the protocol fee is currently 0 bps on every supported chain, with no fee recipient set. Uniswap governance controls this optional fee separately on each chain. The contract’s hard cap is 1000 bps, or 10%. These settings come from the documentation; they were not independently verified through fee-state readings for this article.
If activated, the fee is charged in the chosen payment token on top of the operator’s threshold. Searchers must include it when pricing a release. The releaser reads the controller at execution, so a fee change can occur without advancing the releaser’s nonce. The caller’s maxFee parameter sets a separate bound that makes an unexpectedly expensive release revert.
The payment token’s behavior can also affect a release. A transfer-tax token can deliver less than the nominal threshold to its recipient. A pause or blacklist can prevent payment. If a future protocol-fee recipient cannot receive the token, releases revert. Collected assets remain in the jar until the recipient or payment token changes.
Deployment checks come before fee routing
The deployment list names Ethereum, Optimism, $BNB Chain, Polygon, Base, Arbitrum and Robinhood Chain. The Factory uses the same address on each chain. An Ethereum RPC check found deployed code at the listed factory at block 26299243. That check confirms code presence on Ethereum only. It does not verify every deployment or how the contracts are connected.
Operators must deploy the jar before directing fee sources to it. The documentation warns that funds sent to a predicted address on an unsupported chain remain stranded until the Factory arrives, with no guarantee that it will. Deployments from the same account and salt can share an address across chains, so monitoring must identify jars by both chain and address.
Searchers discover pairs through Factory events, then check the jar’s current releaser. Anyone can deploy a releaser pointing at an existing jar, but only adoption by the jar owner authorizes withdrawals. After replacement, an old releaser can continue returning normal configuration values even though every attempted release fails.
The searcher guide requires searchers to discover assets through token-transfer logs and native-transfer traces, then check balances. A named token that fails during transfer reverts the entire release. Searchers must simulate the asset list and omit failing tokens. The default list limit is 20 assets per release. The guide directs searchers to prioritize the most valuable holdings within that limit and the available gas.
Uniswap’s launch announcement gives no schedule for additional chains. Its deployment page lists the Factory and Fee Controller, but not individual operators’ jars.
