Self-Hosted Backend: Appwrite 1.9 brings MongoDB
Appwrite 1.9 brings MongoDB support, resource-based API keys, and query filters for real-time subscriptions. Performance and compute updates are also included.
(Image: Appwrite)
Appwrite 1.9.0 is here and now supports MongoDB, finer security mechanisms, and more targeted real-time functions. It also includes an expanded compute area and numerous performance improvements.
Appwrite is an open-source Backend-as-a-Service (BaaS) platform that bundles authentication, database, storage, serverless functions, and real-time communication in one package for self-hosting. It is aimed at teams that want to maintain more control over their backend infrastructure than traditional cloud BaaS services allow.
MongoDB and Database Refinements
The main innovation: Appwrite now supports MongoDB as a database backend. This provides a document-oriented alternative alongside the previous TablesDB model for the first time. Developers can thus map dynamic data structures – such as event or log data with varying fields – without having to adapt a schema beforehand.
Furthermore, version 1.9.0 adds new string types such as mediumtext and longtext, supports 64-bit integers, and displays the memory usage of individual collections. Document lists can also be cached with configurable TTL, which reduces database load for frequently queried data sets.
New Admin APIs
Administrators receive several new interfaces: A Webhooks API centrally manages event notifications. A Schedules API provides insight into scheduled tasks and offers control functions. User Impersonation is also new. This allows an admin to log in as a specific user to understand errors directly from their perspective. Project variables can now be specifically marked as public, for example, to pass configuration values to the frontend.
The real-time interface now works more precisely. Clients define subscriptions with query filters and only receive matching events instead of all changes in a collection. A client could thus subscribe exclusively to updates for a specific user ID. Appwrite also provides metrics on connections, message volume, and bandwidth.
Finer Access Control
API keys can be restricted to specific resources starting with version 1.9.0. A key can, for example, be granted read access to storage without simultaneously enabling user management. JWT runtimes are individually configurable. Improvements in CORS, OAuth, and multi-domain support facilitate setups with multiple frontends.
In the serverless area, Appwrite now separates build and runtime resources. Those who need to combine compute-intensive builds with a lean runtime can dimension both independently. Custom startup commands, automatic cleanup of old deployments and orphaned executions, and clean worker shutdowns are intended to make operations more stable.
Videos by heise
Storage, Migration, and SDKs
Files can now be individually configured with encryption and compression parameters. List queries return the total storage consumption. New migration tools transfer sites and messaging resources between Appwrite instances. In addition, there is an official Rust SDK, a plugin for the AI-powered IDE Cursor, and an Agent Skills SDK that should facilitate the integration of AI agents.
Under the hood, the developers have restructured the architecture to the modular Utopia platform. The previous proxy container is eliminated, and Traefik is addressed directly. Sparse updates only send changed attributes; shared memory caching via Swoole Tables replaces the previous per-worker cache; and pre-processed queries speed up frequently used paths. Swoole is a PHP extension for asynchronous programming, used here for efficient shared memory caching. The developers have fixed various memory leaks in webhook, statistics, and event processing.
Upgrade
Appwrite 1.9.0 requires an upgrade from version 1.8.1 and necessitates a database migration. This can be initiated via the new web installer, the CLI flag --migrate, or manually via docker compose exec appwrite migrate.
All information about Appwrite 1.9.0 can be found in the release notes on GitHub.
(fo)