Skip to content

HyperIndex V3 just shipped: 3x faster backfill, ClickHouse compatibility, unified API, new testing framework #213

@moose-code

Description

@moose-code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions