HyperIndex V3 just shipped!! 3x faster backfill, ClickHouse compatibility, unified API, new testing framework.
The headlines
- 3x faster historical backfill, ~25k events/sec standard throughput
- ClickHouse compatibility: run ClickHouse alongside Postgres as an analytics-ready, restart- and reorg-resistant secondary store. Flip it on with
storage: { postgres: true, clickhouse: true }. Experimental, available on Envio Cloud Dedicated.
- Unified handlers API: one
indexer value, three methods (onEvent, contractRegister, onBlock). Files in src/handlers/ auto-register.
- Test without Docker or a database: new
createTestIndexer() powered by Vitest. Snapshot assertions, direct entity access.
- Preload optimization on by default: auto-batched entity loading, multi-x faster handlers with zero code changes
- ESM-first with top-level await in handlers
- 88MB lighter npm package (141MB to 53MB), near-instant
envio codegen
- Named tuple fields on events. No more positional
params[0], params[1]. Plus contractName and eventName on every event.
- Conditional handlers and per-event start blocks via the new
where function (where.block.number._gte, return a boolean to skip)
- Direct RPC client, Ethers.js dependency gone
- Prometheus
/metrics endpoint + envio metrics CLI for observability
- New targets: Solana (experimental), Fuel block handlers, Bun, Podman, WebSocket RPC
- GraphQL-style query filters:
_gte, _lte, _in
What's coming next
- Acting on your V3 feedback
- Isolated multichain mode
- Polished Solana support
- Indexing 1,000,000+ events per second
Links
Would really appreciate any feedback as you upgrade. Reply here or ping us on Discord. A ⭐ on the repo goes a long way too.
JonJon & the Envio team
HyperIndex V3 just shipped!! 3x faster backfill, ClickHouse compatibility, unified API, new testing framework.
The headlines
storage: { postgres: true, clickhouse: true }. Experimental, available on Envio Cloud Dedicated.indexervalue, three methods (onEvent,contractRegister,onBlock). Files insrc/handlers/auto-register.createTestIndexer()powered by Vitest. Snapshot assertions, direct entity access.envio codegenparams[0],params[1]. PluscontractNameandeventNameon every event.wherefunction (where.block.number._gte, return a boolean to skip)/metricsendpoint +envio metricsCLI for observability_gte,_lte,_inWhat's coming next
Links
Would really appreciate any feedback as you upgrade. Reply here or ping us on Discord. A ⭐ on the repo goes a long way too.
JonJon & the Envio team