Skip to content

Pin SQLDelight and sql.js in Renovate (split/transitive version pins) - #30

Merged
solcott merged 2 commits into
mainfrom
renovate-pin-sqldelight
Sep 11, 2026
Merged

Pin SQLDelight and sql.js in Renovate (split/transitive version pins)#30
solcott merged 2 commits into
mainfrom
renovate-pin-sqldelight

Conversation

@solcott

@solcott solcott commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Follow-up to the Renovate config added in #26. Disables two dependencies whose real version pin
Renovate can't fully see, so it stops opening PRs that half-update them and break the build.

SQLDelight (app.cash.sqldelight:*)

The sqldelight version.ref is deliberately held at whatever
com.apollographql.cache:normalized-cache-sqlite depends on — 2.1.0 for cache 1.0.7 (verified
against Apollo's published Gradle metadata: runtime, async-extensions, native-driver all
requires 2.1.0) — not the latest. The web-worker-driver and the hand-written SQL.js worker's
message protocol both have to agree with it, and neither mismatch is caught at compile time. Renovate
can't see that transitive pin, so it keeps floating SQLDelight ahead of Apollo's cache (#27).

sql.js

sql.js's version is declared in two places that must match:

  • npm("sql.js", …) in network/build.gradle.kts — the copy step ships this version's
    sql-wasm.wasm as /sql-wasm.wasm.
  • network/npm/countries-sqljs-idb-worker/package.json — the version the worker's import 'sql.js'
    (its JS glue) resolves to.

Renovate only reads the package.json, so its bump (#28) left the worker on 1.14.2 glue against a
1.8.0 wasm
. Emscripten glue and its .wasm must be the same build; the mismatch makes
initSqlJs() never resolve, the worker never replies, and the web app shows a permanent spinner —
silently, since initSqlJs sits outside the worker's try/catch. Both js and wasmJs hit it.

Disabling both mirrors the existing io.github.solcott dataresult rule: they're bumped by hand, in
all their declaration sites, with a web smoke test.

🤖 Generated with Claude Code

The `sqldelight` version.ref is deliberately held at whatever
com.apollographql.cache:normalized-cache-sqlite depends on (2.1.0 for
cache 1.0.7), not the latest: the web-worker-driver and the
hand-written SQL.js worker's message protocol must agree with it.
Renovate can't see that transitive pin, so it keeps opening PRs that
float SQLDelight ahead of Apollo's cache. Disable app.cash.sqldelight:*
so it's bumped by hand alongside the cache, mirroring the dataresult
rule.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sql.js's version lives in two spots that must agree: the npm("sql.js")
call in network/build.gradle.kts (which supplies the copied
sql-wasm.wasm) and the worker's package.json (its JS glue). Renovate
only sees the package.json half, so its bump (PR #28) left the glue at
1.14.2 against a 1.8.0 wasm -- initSqlJs() then hangs forever and the
web app shows a permanent spinner. Disable sql.js so it is bumped by
hand, in both places, with a web smoke test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@solcott solcott changed the title Pin SQLDelight in Renovate to what the Apollo cache requires Pin SQLDelight and sql.js in Renovate (split/transitive version pins) Sep 11, 2026
@solcott solcott mentioned this pull request Sep 11, 2026
1 task
@solcott
solcott merged commit 5959941 into main Sep 11, 2026
1 check passed
@solcott
solcott deleted the renovate-pin-sqldelight branch September 11, 2026 23:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant