# Appwrite 2.0.0-rc.3 - Product: Appwrite (https://whatsnew.fyi/product/appwrite) - Vendor: Appwrite - Date: 2026-09-04 - Version: 2.0.0-rc.3 - Original notes: https://github.com/appwrite/appwrite/releases/tag/2.0.0-rc.3 - Permalink: https://whatsnew.fyi/product/appwrite/releases/2.0.0-rc.3 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — PostgreSQL no longer ships with durability turned off by removing fsync=off, synchronous_commit=off, and full_page_writes=off from the bundled compose - **fixed** — Build output with _APP_STORAGE_DEVICE set to S3-compatible backend now fails the build on failed upload instead of leaving deployments with nothing to run - **fixed** — Git installations are now isolated per project with installation repository endpoints scoped to the owning project - **fixed** — Git installation callback now redirects back to the console with an actionable error instead of dead-ending - **added** — Self-hosted GitLab support via _APP_VCS_GITLAB_ENDPOINT for repository integration and _APP_CONSOLE_GITLAB_ENDPOINT for console sign-in - **added** — Google sign-in to the console via _APP_CONSOLE_GOOGLE_APP_ID and _APP_CONSOLE_GOOGLE_SECRET - **fixed** — Index listing now returns the right indexes instead of using collection id instead of sequence - **fixed** — Transactions now reject array queries up front instead of throwing on commit - **fixed** — Integer attribute min/max are capped to what the column can hold - **fixed** — teams.total now matches confirmed memberships - **fixed** — Buckets are no longer left half-created when their files collection fails - **changed** — Realtime is cheaper per event with one Swoole worker, document encoded once per event instead of once per subscriber, and presence stored as flags - **fixed** — Build billing is now accurate by skipping when the build never started, capping at the build timeout, and tagging with the resource id - **added** — Execution logs dual-write to ClickHouse via _APP_EXECUTIONS_DUAL_WRITE, _APP_CONNECTIONS_DB_EXECUTIONS, and _APP_POOL_SIZE_EXECUTIONS - **fixed** — The console now works over plain HTTP again for self-hosted installs reached over HTTP at a LAN IP or internal hostname - **removed** — GET /v1/health/executions endpoint - **changed** — Console updated to 1.1.8, Open Runtimes executor to 0.29.0, orchestrator to 1.9.2, and utopia-php/database to 7.3.4 Third release candidate for self-hosted 2.0.0. **Pre-release — not recommended for production.** ##### Highlights Changes since `2.0.0-rc.2`. - **PostgreSQL no longer ships with durability turned off.** The bundled compose passed `fsync=off`, `synchronous_commit=off` and `full_page_writes=off`, so a crash or power loss could leave the database corrupt. All three are gone. - **Builds survive non-local storage.** With `_APP_STORAGE_DEVICE` set to any S3-compatible backend, build output went to a local path nothing reads, leaving deployments ready with nothing to run. A failed upload now fails the build. - **Git installations are isolated per project.** Installation repository endpoints are scoped to the owning project and the GitHub App installation state is signed, so a callback cannot be replayed onto someone else's project. - **The Git installation callback no longer dead-ends.** GitHub, GitLab, Gitea and Bitbucket all redirect back to the console with an actionable error. - **Self-hosted GitLab works.** `_APP_VCS_GITLAB_ENDPOINT` for repository integration, `_APP_CONSOLE_GITLAB_ENDPOINT` for console sign-in. - **Google sign-in to the console**, via `_APP_CONSOLE_GOOGLE_APP_ID` and `_APP_CONSOLE_GOOGLE_SECRET`. - **Index listing returns the right indexes.** Lookups used collection id instead of sequence, so collections sharing an id across databases could see each other's indexes. - **Transactions reject array queries up front** instead of throwing on commit. - **Integer attribute `min`/`max` are capped** to what the column can hold. - **`teams.total` matches confirmed memberships.** Four paths could drift it, most visibly deleting a membership after a primary-owner transfer. - **Buckets are no longer left half-created** when their files collection fails. - **Realtime is cheaper per event** — one Swoole worker, the document encoded once per event instead of once per subscriber, presence stored as flags. - **Build billing is accurate** — skipped when the build never started, capped at the build timeout, tagged with the resource id. - **Execution logs dual-write to ClickHouse.** Off by default; reads stay on the project database and mirror failures are never fatal. `_APP_EXECUTIONS_DUAL_WRITE`, `_APP_CONNECTIONS_DB_EXECUTIONS`, `_APP_POOL_SIZE_EXECUTIONS`. - **The console works over plain HTTP again.** `crypto.randomUUID` is only exposed on secure origins, so on a self-hosted install reached over HTTP at a LAN IP or an internal hostname every project page died with a full-page error. That is a setup the installer explicitly provisions, since it turns HTTPS off for loopback, `.local`, `.internal` and bare IPs. - **New console 1.1.8**, Open Runtimes executor 0.29.0, orchestrator 1.9.2, utopia-php/database 7.3.4. ##### Removed - `GET /v1/health/executions`. ##### Try it ```bash docker run -it --rm \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ appwrite/appwrite:2.0.0-rc.3 ``` Upgrading from 1.9.x uses the same command with `--entrypoint="upgrade"`. **Back up your data first.** Most useful things to exercise: functions and sites with `_APP_STORAGE_DEVICE` pointed at an S3-compatible backend, and connecting one Git installation from more than one project.