Skip to content

Releases: enviodev/hyperindex

v3.0.0-alpha.17

04 Mar 11:26
a4148a6

Choose a tag to compare

v3.0.0-alpha.17 Pre-release
Pre-release

What's Changed

Fixed Alpha.15 & Alpha.16 Binary Issue

We are making improvements to our CI pipeline, which affected the release build. Fixed in the version.

By @DZakh in #1007, #1008, #997, #1012

Updated Dev Docker Flow

For containers, network, and volumes. We no longer use a generated Docker Compose file and manage resources ourselves for greater flexibility. For example, if you disable Hasura with ENVIO_HASURA, envio dev won't pull the Hasura image anymore.

By @DZakh in #999

Other Changes

  • Upgrade dependencies across Rust and Node.js projects by @moose-code in #967
  • Upgrade hypersync client to v1.1.0 by @JonoPrest in #995
  • Fixed validation of block fields from RPC Source, which are not included in field selection by @DZakh in #998
  • Rename ENVIO_PG_PUBLIC_SCHEMA to ENVIO_PG_SCHEMA with backward compitability by @DZakh in #1003
  • Suppress noisy git output during envio init by @DZakh in #1006
  • Add .pnpm-store to .gitignore across all packages by @DZakh in #1010
  • Internal: Consolidate Cursor rules into CLAUDE.md by @DZakh in #1004
  • Internal: Add Claude hooks to auto-start PostgreSQL 16 for local development by @DZakh in #1005
  • Internal: Add explicit type annotations to Utils.magic calls by @moose-code in #975
  • Internal: Add retry option to flaky Throttler test by @DZakh in #1009

Full Changelog: v3.0.0-alpha.15...v3.0.0-alpha.17

v3.0.0-alpha-main-clickhouse-experiment

04 Mar 14:17
1be1fcc

Choose a tag to compare

v3.0.0-alpha.15

25 Feb 12:44
e94839f

Choose a tag to compare

v3.0.0-alpha.15 Pre-release
Pre-release

What's Changed

New getWhere Operators: _gte, _lte, _in

Three new filter operators for getWhere queries following Hasura-style conventions:

context.Entity.getWhere({ amount: { _gte: 100n } })
context.Entity.getWhere({ amount: { _lte: 500n } })
context.Entity.getWhere({ status: { _in: ["active", "pending"] } })

By @DZakh in #962

Block Lag Configuration for Reorg Protection

A new per-chain blockLag configuration that allows indexers to lag behind the chain head by a specified number of blocks, providing a configurable way to avoid reorg issues. Replaces the global ENVIO_INDEXING_BLOCK_LAG environment variable with per-chain control. Defaults to 0 (no lag).

chains:
  - id: 1
    block_lag: 5

It also fixes an issue of entering live mode when a block lag is configured.

By @DZakh in #965

Separate Runtime Metrics Endpoint

Added a new /metrics/runtime endpoint with a dedicated Prometheus registry for runtime metrics, isolated from the default /metrics endpoint.

By @DZakh in #980

Support Double Handler Registration

For the same event with similar filters.

import { ERC20 } from "generated";

ERC20.Transfer.handler(async ({ event, context }) => {
  // Your logic here
});

ERC20.Transfer.handler(async ({ event, context }) => {
  // And here
});

By @DZakh in #987

Internal: Migrated Test Framework from Mocha/Chai to Vitest

Also improved e2e tests and CI pipeline.

By @DZakh in #981

Other Changes

  • Removed error codes from user-facing error messages in favor of descriptive text by @DZakh in #961
  • Fixed handler registration for old test framework ran with Vitest by @DZakh in #960
  • Normalized event signatures to handle formatting variations by @DZakh in #963
  • Fixed binding to event source that was not applying headers by @JonoPrest in #985
  • Reorganized HyperIndex project into pnpm workspace by @DZakh in #982
  • Add isolated dependency e2e tests to verify package completeness by @DZakh in #993

Full Changelog: v3.0.0-alpha.14...v3.0.0-alpha.15

v3.0.0-alpha.14

18 Feb 14:54
26a4cdf

Choose a tag to compare

v3.0.0-alpha.14 Pre-release
Pre-release

What's Changed

Breaking: New getWhere API

We updated our getWhere API to enable support for multiple filters at a time in future HyperIndex versions. Instead of chaining, it now uses a single function call with filters that match GraphQL style for familiarity.

Old: context.Entity.getWhere.fieldName.eq(value)
New: context.Entity.getWhere({ fieldName: { _eq: value } })

By @DZakh in #943

Breaking: Removed Ordered Multichain Mode Support

The Ordered Multichain Mode forced events across all processed chains in on-chain order, leading to significant latency and the potential for a single bad chain to freeze the entire indexing process.

Without Ordered Multichain Mode we still guarantee events to be processed in on-chain order per chain. If you want to store a cross-chain interaction, we suggest creating a partial entity on one chain and finalizing it when you receive a related event on another chain - this way, you'll get a much more reliable system with lower latency.

By @DZakh in #953

Chain Info for Test Indexer

const indexer = createTestIndexer();

indexer.chainIds
indexer.chains

indexer.chains[1].id
indexer.chains[1].name
indexer.chains[1].startBlock
indexer.chains[1].endBlock

indexer.chains[1].ERC20.abi
indexer.chains[1].ERC20.addresses // Useful to test dynamic registrations

By @DZakh in #947

Big Cursor/Claude Skills Update

We update envio init to create a project with multiple skills to support agentic-driven development. The LLM landscape changes very quickly, so we'd appreciate any feedback to improve the skills and development experience with them.

By @moose-code in #952

Other Changes

  • Fixed chain processing prioritization regression of alpha.13 by @DZakh in #957
  • Added method info for prom metric tracking the number of requests by @DZakh in #957
  • Replaced Ethers.js bindings with direct RPC client implementation by @DZakh in #949
  • Removed preset of address_format: lowercase from envio init by @DZakh in #955
  • Improved Rpc Source logic to optimize getTransaction and getTransactionReceipts requests by @DZakh in #944

Full Changelog: v3.0.0-alpha.13...v3.0.0-alpha.14

v3.0.0-alpha.13

10 Feb 15:46

Choose a tag to compare

v3.0.0-alpha.13 Pre-release
Pre-release

What's Changed

3x Historical Backfill Performance 🏎️

This is achieved by adding chunking logic to request events across multiple ranges at once. We also fixed overfetching for contracts with a much later start_block in the config, as well as speeding up dynamic contract registration. If you had data fetching as a bottleneck, you'd definitely like the release - now 25k events per second is a standard.

By @DZakh in #928

Support for DESC indices

A nice way to improve your query performance as well!

type PoolDayData
  @index(fields: ["poolId", ["date", "DESC"]]) {
  id: ID!
  poolId: String!
  date: Timestamp!
}

By @DZakh in #941

Improved RPC source support

Added missing support for receipt-only fields (gasUsed, cumulativeGasUsed, effectiveGasPrice) that are not available via eth_getTransactionByHash. It'll additionally perform the eth_getTransactionReceipt request when one of the fields is added in field_selection.

By @DZakh in #944

WebSocket support experimental

An experimental WebSocket support for RPC source to improve head latency. Please create a GitHub issue if you come across any problems. 🙏

chains:
  - id: 1
    rpc:
      url: ${ENVIO_RPC_ENDPOINT}
      ws: ${ENVIO_WS_ENDPOINT}
      for: live

By @DZakh in #942

Breaking: Removed rpc_config in favor of rpc

- rpc_config
+ rpc:
      url: ${ENVIO_RPC_ENDPOINT}
+     for: sync # Add to force RPC usage instead of HyperSync

Additionally, you can specify multiple rpcs by providing a list:

rpc:
  - url: ${ENVIO_RPC_ENDPOINT}
    for: sync
  - url: ${ENVIO_RPC_FALLBACK_ENDPOINT}
    for: fallback

If for is not provided, it'll use the RPC URL either as a fallback for HyperSync or as the main source when HyperSync is not supported.

By @DZakh in #940

Other

  • Updated supported chains list and contract import compatibility by @DZakh in #939

Full Changelog: v3.0.0-alpha.12...v3.0.0-alpha.13

v3.0.0-alpha.12

05 Feb 11:28
ff3e6e1

Choose a tag to compare

v3.0.0-alpha.12 Pre-release
Pre-release

What's Changed

  • Add polling_interval option for rpc source configuration by @DZakh in #935
  • Fix OOM error on rpc request crashing loop by @DZakh in #934

Full Changelog: v3.0.0-alpha.11...v3.0.0-alpha.12

v3.0.0-alpha.11

28 Jan 14:57

Choose a tag to compare

v3.0.0-alpha.11 Pre-release
Pre-release

What's Changed

  • Test Indexer: Add utilities to read/write entities in-between processing by @DZakh in #924
  • Critical v3 regression fix of incorrect reorg threshold entry on indexer start by @DZakh in #929
  • Fix checksum for addresses returned by rpc in lowercase by @DZakh in #930
  • Fix incorrect validation of transactions "to" field returned by rpc by @DZakh in #930
  • Add Prometheus metric to track requests to data providers by @DZakh in #933
  • Add environment variable to configure database connections by @DZakh in #923

Full Changelog: v3.0.0-alpha.10...v3.0.0-alpha.11

v3.0.0-alpha.10

20 Jan 13:18
13279d1

Choose a tag to compare

v3.0.0-alpha.10 Pre-release
Pre-release

What's Changed

  • Fix the v3 build on Hosted Service by not requiring the envio api token for db configuration by @DZakh in #922
  • Implemented TestIndexerChange TS type + stopped exposing internal contract registration changes in favor of official format by @DZakh in #920
  • Updated entities TS types to mark array field values as readonly

Full Changelog: v3.0.0-alpha.9...v3.0.0-alpha.10

v3.0.0-alpha.9

17 Jan 11:56

Choose a tag to compare

v3.0.0-alpha.9 Pre-release
Pre-release

Fix Alpha.8 and Alpha.9.

Full Changelog: v3.0.0-alpha.8...v3.0.0-alpha.9

v3.0.0-alpha.8

16 Jan 15:26

Choose a tag to compare

v3.0.0-alpha.8 Pre-release
Pre-release

What's Changed

Remove event_decoder option from config.yaml

Previously, we had an option to choose between a Viem decoder for event logs or our Rust-based implementation, which doesn't block the event loop. After having our event decoder used by default for 2 years, we decided to remove the Viem option to reduce maintenance costs and prepare for exciting future changes.

By @moose-code in #904

PostgreSQL Client Update

Updated PostgreSQL client version. This should potentially fix the issue when the indexer stops progressing without any error.

By @DZakh in #909

Generate TypeScript Entity Types Without ReScript

One more step closer to removing the generated directory. Entity types are now generated directly in TypeScript without relying on ReScript compilation.

By @claude in #914

Subgraph Migration Cursor Command

The subgraph migration cursor rules have been converted into a cursor command. This provides a more streamlined workflow for migrating from Subgraph to HyperIndex.

By @claude in #915

GitHub CI for Tests in envio init

New projects created with envio init now include a pre-configured GitHub Actions workflow for running tests. This makes it easier to set up CI/CD from the start.

By @claude in #916

Test Indexer Improvements

Fixed an issue where contract registrations were not preserved between indexer.process runs. Also added comprehensive tests for the Contract Factory template to ensure reliability.

By @DZakh in #918

Full Changelog: v3.0.0-alpha.7...v3.0.0-alpha.8