Skip to content

[Drift] New unstable_sqlite_expression_engine compatibility option for Sync Streams (powersync-service #654) #479

@benitav

Description

@benitav

What's changing: The PowerSync Service adds a new experimental unstable_sqlite_expression_engine compatibility option. When enabled, functions and operators in Sync Streams expressions are evaluated via a scalar SELECT statement on an in-memory SQLite database rather than the current JavaScript engine. The option requires both edition: 3 and fixed_json_extract to be enabled alongside it. It exists to address known discrepancies in the JavaScript engine (e.g. json_each on objects and scalar values, division-by-zero returning NULL, +/- prefixes on numeric text casts, and various NULL handling gaps).

High priority — existing docs are now inaccurate or incomplete

  • Compatibility options reference (https://docs.powersync.com/sync/advanced/compatibility) — the page currently documents three named options (versioned_bucket_ids, fixed_json_extract, custom_postgres_types) in a table with their minimum service versions and edition requirements. Once this PR ships, that table omits unstable_sqlite_expression_engine, leaving the reference incomplete for users consulting it for the full list of available options.

For reviewer consideration — may be worth documenting
The option is explicitly labeled unstable_ in its name because node:sqlite is not yet stable and SQLite's own expression semantics can change between releases. The compatibility page may want to surface that caveat so users understand the maturity boundary before opting in.

Source PR: powersync-ja/powersync-service#654. At the time of filing, the PR is open. Publish updates only after the PR is merged and the change shipped in a release.


Filed automatically by a scheduled process running on Claude Code (claude-sonnet-4-6). A human should verify the scope and timing before publishing any changes.

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