o1js 3.0 Prerelease Now Supports Mesa - Here’s What zkApp Devs Can Do on Mesa

o1js 3.0 now supports Mesa, unlocking bigger on-chain state, richer events, and higher transaction limits for zkApps.

image

The o1js 3.0 prerelease now supports Mesa, the upcoming Mina upgrade that significantly increases what a single zkApp can do. With Mesa, zkApp developers get more on-chain state, much larger events/actions, and higher account-update limits, all while keeping the familiar o1js developer experience.

Below is a quick overview of what changed and how to deploy to Mesa.

What’s New with Mesa for zkApps?

More on-Chain state per zkApp Account

Mesa increases the zkApp account state capacity from a small handful of field elements (8) to 32 Field elements per account, that’s a 400% increase!

What this enables:

  • Model richer application state directly on-chain (more config, metadata, counters, flags, etc.)
  • Reduce the need for state packing or extra helper accounts
  • Keep circuits and off-chain state coordination simpler, because more real state can live on-chain

Much larger events & actions

Mesa dramatically raises the limit for how much data you can emit as events or actions in a single transaction. Up to 1024 field elements per transaction is now possible.

What this enables:

  • Emit richer and more structured data (e.g., full trade tails, Merkle proofs, batched updates)
  • Dispatch many more actions for later reduction, all within a single transaction
  • Avoid splitting a logical operation into partial transactions just to fit within the old limit

Higher account-update limits per transaction

Mesa also raises the cap on account updates per transaction, so a single zkApp transaction can touch far more accounts than before.

What this enables:

  • Batch payouts or reward distributions to many accounts in one go
  • Multi-party workflows (e.g., token or DeFi apps that touch multiple accounts in a single transaction)
  • Cleaner UX with fewer separate transactions needed

How to deploy to Mesa with the new o1js 3.0 prerelease

  1. Install the Mesa-compatible o1js prerelease

    npm i https://pkg.pr.new/o1-labs/o1js@e5011ff
  2. Point your app at the Mesa GraphQL endpoint

    In your o1js application, set the active Mina instance to Mesa:

    import { Mina } from 'o1js';
    const Mesa = Mina.Network(
    ‘https://plain-1-graphql.mina-mesa-network.gcp.o1test.net/graphql’
    );
    Mina.setActiveInstance(Mesa);

    Your existing deploy flow stays the same - the key change is using the Mesa GraphQL URL instead of a Berkeley one and upgrading o1js to the prerelease version.
  3. Get testnet MINA from the faucet

    To pay fees on Mesa, request testnet Mina on the faucet:
    1. Generate a Mina address (wallet or through o1js directly
    2. Go to https://faucet.minaprotocol.com
    3. Paste your public key and select the Mesa network
    4. Submit and wait for funds to arrive

Once funded, you can deploy your zkApp and start pushing Mesa’s new limits: bigger state, bigger batches, and much richer events and actions - all within the same o1js developer experience that you are used to!