Envio Developer Update June 2026
June was one of our biggest months yet. HyperIndex advanced, delivering up to 2.5x faster and 2x cheaper indexing alongside multi-field getWhere filtering, multi-storage defaults, snake_case column naming, and expanded experimental Solana support. We also sponsored and attended ETHConf New York, continued migrating performance-critical paths to Rust, and saw teams ship a range of production-grade, real-time applications on Envio, spanning real-world asset tracking and x402 payment analytics.
Alongside the releases, we published new technical guides on agentic indexing, scaling subgraph-style workloads to millions of requests, choosing between HyperIndex and HyperSync, and much more.
Let's dive in!
HyperIndex v3.1 & v3.2: Faster, Cheaper, and More Flexible
Building on May's V3 launch, June delivered two substantial releases focused on speed, cost, and flexibility, followed by a patch release and the start of work on v3.3.
v3.1
v3.1 cut HyperSync queries during backfill by up to 2x and made many indexing cases up to 2.5x faster. It also added string descriptions for entities, fields, and relationships that surface directly in the GraphQL API, rate-limit information in the TUI and logs, a skip option to exclude chains from indexing and migrations, and support for startups with 4.5M+ contracts. We also improved the agentic development experience with new envio tools search-docs and envio tools fetch-docs commands, plus an envio metrics runtime subcommand.
Up to 2.5x faster indexing, with up to 2x fewer HyperSync queries during backfill.
v3.2
v3.2 followed with multi-field filtering in getWhere, so you can match on several entity fields at once, plus a performance boost for single _eq and _in lookups. Multi-storage got easier with default storages, so you no longer need a @storage directive on every entity, and you can now auto-convert database column names to snake_case while keeping the original names in GraphQL and handler types. We also expanded experimental Solana support with HyperSync-powered instruction handlers. Reach out to us if you are interested in becoming an early tester.
Multi-field filtering with getWhere
Match on several entity fields at once:
await context.Account.getWhere({
id: { _eq: "0x123..." },
balance: { _gte: 1_000_000n, _lte: 10_000_000n },
});
Multi-storage defaults
Mark a storage as default, so you no longer need a @storage attribute on every entity in schema.graphql:
storage:
postgres:
default: true
clickhouse:
default: true
Jordyn Laurier