asynchronous (a): controlling the timing of operations by the use of pulses sent when the previous operation is completed rather than at regular intervals.
An increasing amount of dApps or onchain processes are facilitators or reliant on asynchronous workflows or execution. Think intents, agent-based execution, propAMMs, vault strategies.
The lack of asynchronous execution has led to a large amount of infrastructure that could’ve been onchain getting built offchain; these are the proprietary “oracles” that get triggered once certain conditions pass. Besides reducing security guarantees, this systems separation leads to a loss of accountability and reliability. What if the bot observing conditions and triggering on-chain events runs out of gas? What if AWS ME-CENTRAL-1 is temporarily unavailable?
Even the simple things, like keeping track of block time – which is already available onchain – are not possible without this offchain infrastructure. Something needs to trigger a state update in the relevant smart contract to account for the state that changed externally.
When building immutable, decentralised, and secure infrastructure, the lack of asynchronous onchain EVM execution presents a challenge that degrades the very value proposition of the infrastructure.
Therefore, Somnia’s Reactivity is super cool.
Somnia introduces a concept called “Reactivity” which allows smart contracts to listen to and get triggered by emitted events.
Instead of having to rely on an off-chain system to track state changes in smart contract A to and make a call to smart contract B for it to read A, Reactivity enables B to automatically read – and react – to the changes in A.

This presents a large paradigm shift in how EVM applications can be built. Beyond functions that were previously offchain becoming verifiable, the application architecture and lifecycle management becomes simpler.
Here are a few obvious practical examples of how Reactivity-like asynchronous onchain execution could change smart contract architecture (steps relying on offchain processing in italics to highlight the change in trust/operational assumptions):
| Scenario | Currently | Asynchronous Onchain Execution |
|---|---|---|
| Intent-based swap | 1. Approve token 2. Sign intent 3. Venue auctions intent offchain 4. Winning solver executes payout 5. Solver shares proof of execution 6. Venue verifies proof 5. Venue releases tokens to solver | 1. Approve token 2. Sign intent 3. Venue auctions intent offchain 4. Winning solver executes payout 5. Solver atomically (4) receives tokens, triggered by venue’s onchain ERC20 transfer event listener |
| Agent-based execution | 1. Agent spins up an EOA 2. Agent tracks Aave Health Factor 3. Agent adds more collateral to position as Health Factor decreases | 1. ERC-4337 wallet exists 2. Wallet detects event emission indicating decreased Aave Health Factor for the wallet 3. Wallet adds more collateral to the position |
| PropAMM | 1. Offchain actor streams price data updates into the smart contract | 1. Smart contract reacts to onchain changes in other AMMs |
| Composability on a two-step vault strategy | 1. Smart contract X needs to know the amount of base assets a vault share can be redeemed for 2. X makes a withdrawal request to vault 3. Vault operator processes the withdrawal 4. Smart contract operator observes the event off-chain and triggers a change in X based on emitted event information | 1. Smart contract X needs to know the amount of base assets a vault share can be redeemed for 2. X makes a withdrawal request to vault 3. Vault operator processes the withdrawal 4. X observes the event on-chain and triggers a change in X based on emitted event information |
The ability to react to on-chain events automatically without an off-chain worker is a huge paradigm shift by decreasing reliance on off-chain services while improving composability between immutable or disconnected applications.

PS: In addition to the on-chain pub/sub, Somnia also offers push-style event emissions via sockets. This makes building consumer-facing interfaces quite cool as they can just open a WS connection and update UI upon changes. You can test that here.