Skip to content

SDK Migrations

The Quest Data Godot SDK follows SemVer. Breaking changes only land in minor bumps (we’re pre-1.0 by the strict reading, but in practice we treat 0.x → 0.(x+1) as breaking-allowed). Every minor that touches public API ships a ### Migration section in client/CHANGELOG.md with:

  • Vorher / Nachher code snippets taken from the dogfood game (Numbers-Go-Up)
  • Search patterns (grep -rn …) so you can find affected sites in your codebase in seconds
  • Typically affected files as a heuristic, not a contract
SDK VersionThemeBreaking?Migration link
v1.23.0Cloud-Save unificationCHANGELOG
v1.22.0Rich Presence + Achievements polishadditiveCHANGELOG
v1.21.0Remote-Config Freshness API (DIG-73)additiveCHANGELOG
v1.20.0Async-Result Errors (success/err)additiveCHANGELOG
v1.19.0Init-Order-Contract assert (DIG-84)✓ debug-buildsCHANGELOG
v1.18.0Bind-Time-Validation (DIG-68)additiveCHANGELOG
v1.16.0sdk_ready + await_ready() (DIG-67)additiveWait for SDK Ready
v1.13.0Strong-held binding handlesCHANGELOG
v1.12.0bind_balancing_pivot APIadditive (but replaces ~80 LOC)CHANGELOG
v1.10.0fetch_tables() parallel fetchadditiveCHANGELOG

Breaking versions are the ones to read carefully. Additive versions can be picked up on your next pull with zero code touches — but the migration sections still tell you what new affordances exist so you can decide whether to refactor toward them.

If you’re catching up from an older SDK across multiple versions, read them in order from your current version forward — each migration assumes the previous one is applied. Don’t skip-read.

Common greps that surface migration-relevant code in your project:

Terminal window
# v1.12 — manual pivot-apply loops to replace with bind_balancing_pivot
grep -rn "for row in .*\[\"" scripts/
# v1.13 — strong-ref bookkeeping arrays you can delete
grep -rn "_balancing_handles\b" scripts/
# v1.16 — boot-race workarounds to replace with await QuestData.await_ready()
grep -rnE "call_deferred\(.*bind|disable_realtime|is_ready\(\): await" scripts/
# v1.18 — silent-fail bind diagnostics (no migration needed, just useful)
grep -rn "bind_balancing\|bind_balancing_pivot" scripts/

Release-Process Note (for SDK contributors)

Section titled “Release-Process Note (for SDK contributors)”

When cutting a new SDK minor (1.x.0) or any version that changes public API:

  1. Add a ### Migration section to the version entry in client/CHANGELOG.md — even if the answer is “no code change required”. State that explicitly; silence reads as ambiguity.
  2. Pull the Vorher/Nachher snippets from a real diff in the dogfood repo (numbers-go-up) where possible, not from a contrived example. Real migrations expose edge cases.
  3. Add at least one grep -rn … search pattern the customer can run against their own codebase. Pattern should be specific enough to avoid false-positive floods.
  4. Update this index page with the new row. Mark Breaking? honestly — if a debug-build assert changed, it’s still breaking for callers who hit the assert.