Announcing Appwrite 0.13 with Major Upgrades to Storage and Functions
Tags: webdev, programming, news, opensource
Published: 2022-03-02 16:57:27

Only one month after the release of Appwrite 0.12, we’re excited to announce the release of Appwrite 0.13. 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 backend-as-a-service.

## ⏰ TL;DR

![TLDR](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exoxagqjkh1sda6ni0vj.png)
 
This new release has been focused on two main areas. The first is **Appwrite Storage**. We have added many new features, 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 our 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](https://appwrite.io) 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 much more!

## 📦 Storage Buckets

![Storage Buckets](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/163r12p6fnxipiwgzxm0.png)
 
**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

We designed Appwrite 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 our updated contribution guide.

## 📈 Support for (VERY) Big Files

![Large Files](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0jhc6l89zzeyjy8r9zv.png)

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 we keep 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

![Appwrite CLI](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2g1q9aaud0mq5b9f8mz0.png)
 
Beside version 0.13, we’re also excited to share the release of the new **Appwrite CLI version 2.0**. The new version was completely rewritten to decouple our 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 (WAY) Faster Runtimes for Cloud Functions

![Improved Functions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z401azyztzoc8w4orzgi.png)
 
One of the biggest improvements of Appwrite 0.13 is our **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. We’ll soon release our latest benchmarks to emphasize how the new performance improvements look like.

## 🤩 Many More Features

![OAuth Providers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o3ct4p9damc35huclasc.png)
 

Appwrite 0.13 includes many more new features. We have added two new OAuth providers for **Stripe and Notion**. We have **upgraded the Microsoft OAuth adapter** to accept new settings and be much more flexible. New support for **OAuth refresh token** was added, and we added a **new error logging adapter** for managing your Appwrite server errors with LogOwl.

In the new version we have also improved the format of errors displayed by the Appwrite API. 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 our [official release notes](https://github.com/appwrite/appwrite/blob/master/CHANGES.md). In the next couple of weeks, we will continue the Appwrite 0.13 release party with more content, events, and demos created by the core team to highlight the different features and powerful capabilities in this new version of Appwrite. Stay tuned!