Everything You Need to Know About Appwrite 0.13, the 100% Open Source Firebase Alternative

Eldad A. Fux
JavaScript in Plain English
6 min readMar 20, 2022

--

Only one month after the release of Appwrite 0.12, and Appwrite 0.13 is already available. The new release includes multiple major features to take your Appwrite experience to the extreme and help you implement some new and exciting use cases on top of your shiny, open-source, and self-hosted Firebase Alternative.

TL;DR

This new release has been focused on two main areas. The first is Appwrite Storage. Many new features have been added, including buckets, (especially) big file support, stream downloads, and new storage adapters for S3, DigitalOcean Spaces, and other S3 compatible devices.

The second area of improvement is Appwrite’s Cloud Functions. The new Appwrite Functions API uses the new executor build on top of open-runtimes (more on open-runtime below) that improves Appwrite functions execution performance by over 10 times(!) and now allows the anxiously anticipated sync & async executions.

On top of these major additions, you can also expect multiple new and improved OAuth adapters, new logging providers, many bug fixes, and some UI improvements to the Appwrite console. Keep reading to learn everything you need to know about the 0.13 release.

New to Appwrite?

Appwrite is an open-source back-end-as-a-service that abstracts all the complexity of building a modern application by providing you with a set of REST APIs for your core back-end needs. Appwrite takes the heavy lifting for developers and handles user authentication and authorization, databases, file storage, cloud functions, webhooks, and more. Appwrite is fully open-source, and you can self-host it anywhere you want. Appwrite is developed in the open, the project has over 16k GitHub stars, and a contributor community of over 550 developers across the planet.

Storage Buckets

Appwrite Storage Buckets

Storage buckets are very similar to collections for the Appwrite Database. Buckets allow you to group different files under the same permissions and settings. For each bucket, you can define which file type it should accept, the max file size allowed and and toggle file encryption and file antivirus scan.

Using buckets, you can choose between bucket-level or file-level permissions and set a dedicated bucket per user or a bucket for each type of file your app needs to store, like profile images or PDF files.

Storage Adapters and S3 Support

Appwrite was designed to be flexible and technology agnostic with the idea that you should be able to integrate Appwrite with your favorite technology stack. With this release, you can now use your S3 or S3 compatible services like DigitalOcean spaces as the storage adapter for your Appwrite files.

This allows you to quickly scale Appwrite using managed solutions for all the Appwrite persistent services (storage and database). With this change, the Appwrite layer of your setup becomes completely stateless and easier to manage on self-hosted setups. Furthermore, with cloud providers like AWS, DigitalOcean, and others you can also utilize managed backup and monitoring solutions and be carefree about managing your Appwrite storage layer.

This release unlocks new possibilities, and the Appwrite team has already started working on new storage adapters for even more flexibility. Contributing a new storage adapter is also possible and relatively simple using the storage contribution guide.

Support for (VERY) Big Files

Big files support on Appwrite

Another significant improvement that Appwrite 0.13 adds to the storage API is supporting very large file uploads. In previous Appwrite versions, each file is loaded to your server memory which means that the biggest file you can upload is limited to the amount of free memory you have available. This is no longer the case. Appwrite 0.13 now internally handles files in small chunks to ensure you always have enough memory available to serve other API calls and background jobs.

Theoretically, once you change your _APP_STORAGE_LIMIT env var, Appwrite doesn’t enforce any limit on the size of files you’ll be uploading. That said, you might hit other filesystem or vendor limits. For example, AWS and DigitalOcean S3 services have a file size limit of 5TB, ext4 filesystem has a limit of 16TB, and NTFS has a limit of 256TB.

With big files support enabled in Appwrite, the Appwrite server will still support the built-in ability to compress and encrypt files but limit those features to files smaller or equal to 20MB. This design ensures Appwrite keeps a decent balance between flexibility and performance. With storage buckets support, you can also completely disable file compression and encryption at your discretion.

CLI v2.0 and a new Build Worker

Beside version 0.13, the new Appwrite CLI version 2.0 has been released. The new version was completely rewritten to decouple the CLI from Docker, and have a better and easier workflow for deploying new Cloud Functions.

The new CLI 2.0 will have two new commands, init for creating resources and deploy for deploying resources. The new CLI will also support starter templates for Functions in different languages, Console scope to manage the creation of projects, API keys, and more, and an appwrite.json file to store your configuration and deploy on different Appwrite instances.

Improved and Faster Runtimes for Functions

One of the biggest improvements of Appwrite 0.13 is the new Functions runtime and execution architecture. The new architecture uses TCP communication instead of the Docker CLI to start, run, and execute functions. The new communication method allows warm functions to run over 10X faster compared to previous Appwrite releases.

The new architecture also allows the Appwrite Functions API to execute functions synchronously and asynchronously. This new capability should allow an enormous amount of new use-cases to be built on top of the Appwrite functions and brings Appwrite very close to serverless capabilities of major cloud providers like GCP and AWS.

More Features

Appwrite 0.13 includes many more new features. Two new OAuth providers for Stripe and Notion have been aded. The Microsoft OAuth adapter has been upgraded to accept new settings and be much more flexible. New support for OAuth refresh token was added, and a new error logging adapter for managing your Appwrite server errors with LogOwl has been introduced.

In the new version, the format of errors displayed by the Appwrite API has been improved. Now each error includes a specific type of code as documented in the updated error codes page in the official documentation.

Learn More

Appwrite 0.13 includes many more features, bug fixes, and security patches you should really care about that just can’t fit in one blog post. You can learn more by reviewing the official release notes.

More content at PlainEnglish.io. Sign up for our free weekly newsletter. Follow us on Twitter and LinkedIn. Join our community Discord.

--

--

Entrepreneur, Software Architect, open source enthusiastic and the creator of appwrite.io. You can follow me on twitter: https://twitter.com/eldadfux