# Appwrite 2.3.0 — Release & Upgrade Intelligence
- **Product:** Appwrite (https://appwrite.io)
- **Version:** 2.3.0
- **Released:** Sep 23, 2026
- **Impact Score:** 5/10
- **Breaking Changes:** Not verified
- **Canonical Analysis:** https://changelogs.us/appwrite/updates/2.3.0/

## Executive Summary (TL;DR)
Appwrite 2.3.0. Source highlight: Appwrite 2.3 removes dev keys, builds every console link from one `_APP_CONSOLE_URL`, reports execution duration the way the caller experienced it, adds Jaspr to Sites and a nightly channel for self-hosting, and folds in two weeks of fixes across auth, databases, functions, messaging, storage and th

## New Features
- **Jaspr on Sites.** Jaspr is available as an SSR framework, built with `jaspr build` on the Flutter 3.44 runtime. Add `flutter-3.44` to `_APP_SITES_RUNTIMES` to use it (the default list has `flutter-3.29`). Pick it by hand for now; repository detection does not suggest it yet. (#13710, #13773, appwrite/vibes#407)
- Compose orchestrator 2.2.0 → 2.2.2, Autogravity 0.0.10 → 0.0.11 with `MODEL_BACKEND=focalnet`, base image `appwrite/base` 2.0.5 → 2.1.0 (adds igbinary), utopia-php/database 7.3.11, vcs 5.5, messaging 2.5, user-agent 0.1.2, detector 0.2.8, cdn 0.0.12, schedule 0.3. (#13720, #13753, #13732, #13738, #13851, #13739, #13773, #13760, #13746)

## Bug Fixes
- **A nightly channel.** `install` and `upgrade` take `--channel nightly`, or set `_APP_VERSION=X.Y-nightly`, to follow the newest CI-green commit on the active release branch, rebuilt daily. Nightly is unsupported and stays within one patch line; stable remains the default. (#13659)
- Site preview domains send visitors to a console `/auth/preview` page that exists, instead of the console's 404. (appwrite/vibes#366, #13714, fixes #13713)
- Member invitations and edits on self-hosted offer the organization-wide Owner and Developer roles and save the one selected. (appwrite/vibes#387, #13734)
- While impersonating a user, file previews and downloads, avatars and deployment downloads load as that user instead of returning 401. (appwrite/vibes#393, appwrite/vibes#394)
- The datetime picker accepts hours of 10 or more and shows and switches the time zone. (appwrite/vibes#361, appwrite/vibes#356)
- Enum values containing commas are kept intact, and creating a row with a custom ID creates it instead of trying to update a missing row. (appwrite/vibes#363, appwrite/vibes#391)
