| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 1.9.0 source code.tar.gz | 2026-03-31 | 86.5 MB | |
| 1.9.0 source code.zip | 2026-03-31 | 87.9 MB | |
| README.md | 2026-03-31 | 6.7 kB | |
| Totals: 3 Items | 174.4 MB | 4 | |
What's Changed
Database support
- MongoDB support — Full MongoDB adapter support (#11312)
Database features
- String types — New varchar, text, mediumtext, and longtext attribute types with configurable sizes (#11174)
- Int64 format — Integer attributes support int64 format for large numbers (#11123)
- Collection/row storage size — Expose bytes used and bytes free per collection/table (#11254, [#11069])
- Cached document lists — Document list queries can be cached with configurable TTL (#10832)
New admin APIs
- Webhooks API — First-class webhooks management endpoints for creating, listing, and managing webhook configurations (#11033, [#11566])
- Schedules API — New endpoints to view and manage scheduled tasks within projects (#11331)
- User impersonation — Admins can now impersonate users for debugging and support (#11533)
- Public project variables — Project environment variables can now be marked public and accessed via API (#11577)
Realtime
- Query subscriptions — Subscribe to realtime channels with query filters for targeted updates (#11202, [#11237])
- Realtime metrics — Track connections, messages, and bandwidth in project usage stats (#11438, [#11488])
- TablesDB channels — Explicit top level TablesDB events for realtime (#11404, [#11430])
Auth & security
- Custom JWT duration — Configure JWT expiration time when creating tokens (#11009)
- Resource-based API keys — New key structure with granular resource permissions, custom IDs, and list queries (#11003, [#11277], [#11278])
- Project labels — Tag and organize projects with custom labels (#11056)
- Project status attribute — Track project lifecycle state (#11291)
- Multiple application domains — Support multiple domains per project for CORS and OAuth (#10911)
- Trusted console projects — Mark projects as trusted for elevated access (#11248)
- Blocked user errors — Changed from 401 to 403 for blocked users/resources (#11469)
- OAuth email verification — Enforce email verification when linking OAuth2 providers (#10986)
- Tauri origin support — tauri://localhost accepted as an allowed origin (#11589)
- Trusted headers — Improved client IP resolution via _APP_TRUSTED_HEADERS env var
Compute
- Custom start command — Sites and functions support custom start commands (#10842)
- Separate build/runtime specs — Configure build and runtime resources independently (#10849)
- Deployment retention — Automatic cleanup of old deployments with configurable limits (#10959)
- Async screenshots — Screenshot generation moved to a dedicated worker (#11110)
- Stale execution cleanup — Automatic cleanup of stale/orphaned function executions (#11146)
- Graceful worker shutdown — Workers shut down cleanly without dropping jobs (#11104)
- Function queue job TTL — 7-day TTL for functions queue to prevent unbounded growth (#11226)
Storage
- File encryption/compression parameters — Configure per-file encryption and compression (#11135)
totalSizeon list responses — List endpoints return total storage size (#11102)
Migrations
- Site migration — Import sites from other Appwrite instances
- Messaging resource migration — Migrate messaging resources between instances (#11495)
- Migration resource enums — SDK enums for migration resource types
GraphQL
- Introspection toggle — Enable/disable GraphQL introspection independently (#11159)
SDKs
- Rust SDK — New official Rust SDK (#11614)
- Cursor plugin SDK — SDK for Cursor IDE integration (#11371)
- Agent skills SDK — SDK for AI agent integration
- Array param enums — Enum support for array parameters across all SDKs
Installer
- New web installer UI — Redesigned installer with light/dark modes, progress tracking SSL, certificate checks, migrations built in (#11175, [#11247])
Refactoring
- Migrated to Utopia Platform modules architecture — all HTTP endpoints, workers, and tasks organized into feature modules (#11035, [#11049], [#11057], [#11103], [#11208], [#11398])
- Refactored auth to single instance pattern (#10872, [#11130])
- Refactored usage metrics to stateless Bus event publisher pattern (#11449)
- Removed proxy container — Traefik handled directly (#11039)
- Consolidated CI workflows with dynamic database/mode matrix (#11531, [#11551])
- Upgraded PHPStan to v2 with full codebase baseline (#11550)
- Upgraded to PHPUnit 11/12 with PHP 8 attributes
Performance
- Sparse document updates — updateDocument() sends only changed attributes (#11465)
- Domain caching via shared Swoole Tables instead of per-worker Config cache (#11346)
- Memory leak fixes in webhook/stats/event processing (#11067, [#11241])
- SMTP keep-alive for connection reuse across mail jobs (#11496)
- Static file loading optimization with copy-on-write memory sharing
- Pre-parsed queries on hot paths
- Realtime performance improvements (#11251)
- Simplified repository authorization checks (#11616)
Notable Fixes
- OAuth fixes for custom domains, redirect schemes, and verified emails
- MFA recovery code validation fix
- CORS wildcard and preflight request handling
- Execution status and timeout reporting
- Relationship document validation
- Cache key improvements with attribute/index hash
- Realtime region handling and error resilience
- PostgreSQL race condition in shared mode project creation
- VCS template flow, deployment, and comment fixes
- Storage health error handling
- Schedule execution trigger and deletion fixes
- Abuse rate limiting reset on success
Upgrade Path
- Upgrade from 1.8.1 to 1.9.0. Use the database migration step in the web installer, the --migrate flag with the upgrade task, or manually run
docker compose exec appwrite migrate.
New Contributors
- @levivannoort made their first contribution in https://github.com/appwrite/appwrite/pull/10843
- @Ujjwaljain16 made their first contribution in https://github.com/appwrite/appwrite/pull/10925
- @VijaykumarPujar-tech made their first contribution in https://github.com/appwrite/appwrite/pull/10863
- @tejas-raskar made their first contribution in https://github.com/appwrite/appwrite/pull/10342
- @premtsd-code made their first contribution in https://github.com/appwrite/appwrite/pull/11193
- @Shivangisharma4 made their first contribution in https://github.com/appwrite/appwrite/pull/11185
Full Changelog: https://github.com/appwrite/appwrite/compare/1.8.1...1.9.0