Skip to content

Releases: electric-sql/electric

@electric-sql/[email protected]

24 Nov 15:10
579cef2

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

24 Nov 15:11
579cef2

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

24 Nov 15:10
579cef2

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

24 Nov 15:11
579cef2

Choose a tag to compare

Minor Changes

  • 18df5a5: Add bidirectional column mapping API for query filters with built-in snake_case ↔ camelCase support. Introduces columnMapper option to ShapeStream that handles both encoding (TypeScript → Database) for WHERE clauses and decoding (Database → TypeScript) for results. Includes snakeCamelMapper() helper for automatic snake_case/camelCase conversion and createColumnMapper() for custom mappings. The new API deprecates using transformer solely for column renaming, though transformer remains useful for value transformations like encryption.

Patch Changes

  • f0b83fa: Fix subset__params to use constant parameter name for proxy configurations

    Changed subsetparams from deepObject style (subsetparams[1], subsetparams[2]) to JSON serialization (subsetparams={"1":"value1","2":"value2"}). This allows proxy configurations to match the constant parameter name "subset__params" in ELECTRIC_PROTOCOL_QUERY_PARAMS without needing dynamic pattern matching.

  • cd15a56: Fix multiple renders from cached up-to-date messages on page refresh. When a shape receives multiple updates within the HTTP cache window (60s), each update ends with an up-to-date control message that gets cached. On page refresh, these cached responses replay rapidly, causing multiple renders. This change implements cursor-based detection to suppress cached up-to-date notifications until a fresh response (with a new cursor) arrives from the server, ensuring only one render occurs.

@core/[email protected]

24 Nov 15:11
579cef2

Choose a tag to compare

Patch Changes

  • f0b83fa: Fix subset__params to use constant parameter name for proxy configurations

    Changed subsetparams from deepObject style (subsetparams[1], subsetparams[2]) to JSON serialization (subsetparams={"1":"value1","2":"value2"}). This allows proxy configurations to match the constant parameter name "subset__params" in ELECTRIC_PROTOCOL_QUERY_PARAMS without needing dynamic pattern matching.

  • 8cbd9fb: Reduce memory usage by terminating consumer processes after the hibernation timeout

  • 69e4599: Support LIKE and ILIKE functions in where clauses (LIKE and ILIKE binary operators were already supported)

  • 2e19332: Add log_mode to shape comparable version for indexing.

  • f36be0b: Simplify ShapeStatus and remove unused APIs.

  • a672d2a: Reduce logging when starting a consumer process

  • b62335f: Split ShapeStatus relation to shape lookup into separate ETS table to avoid congestion on main metadata table.

  • e7b8bd0: Fix shape counting after reload and ensure shape last used repopulation

  • d483851: Ensure table and slot names are properly escaped in lock breaker query

  • 7d080a3: Load shapes from storage in parallel for faster recovery.

  • d492b47: Improve storage initialization performance

  • e7b8bd0: Separate shape def -> handle lookup into new table

  • 7d080a3: Load latest offset from storage when recovering shapes for accurate metadata reconstruction.

@electric-sql/[email protected]

19 Nov 14:43
d9fe84c

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

19 Nov 14:43
d9fe84c

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

19 Nov 14:43
d9fe84c

Choose a tag to compare

Patch Changes

@electric-sql/[email protected]

19 Nov 14:43
d9fe84c

Choose a tag to compare

Patch Changes

  • aacfba4: Expose the ShapeStream.fetchSnapshot as a public api that can be used to fetch a snapshot without it being injected into the emitted stream of change messages. This is useful for cases where the user wants to handle the application of these snapshot in a custom way.

@core/[email protected]

19 Nov 14:43
d9fe84c

Choose a tag to compare

Patch Changes

  • 2d1d268: Ensure shape consumers idempotently handle transactions using log offset comparisons.

  • b71e46c: Fix retry-after header not being exposed via CORS

    The server was sending the retry-after header to clients during overload scenarios (503 responses), but the header was not included in the access-control-expose-headers CORS header. This caused browsers to block access to the retry-after value, preventing clients from honoring the server's backoff directive.

    As a result, clients would ignore the server's retry-after header and use only exponential backoff with jitter, which could result in very short retry delays (as low as 0-100ms on early retries), leading to intense retry loops during server overload.

  • ff45de1: Replace max LSN recovery from on-disk shapes with direct read from replication slot flushed LSN.

  • 68424c3: Reduce replication client working memory by sending individual operations to ShapeLogCollector rather than whole transactions

  • 6bb011b: Remove Shapes.Monitor and re-write shape removal for improved performance

  • 5c8b559: Propagate shape subset errors correctly to Ecto.

  • b24556b: Reduce memory buildup when calculating least recently used shapes by using :ets.foldl.

  • d3a60f6: Fix shape delete api call function arguments