DEV Community

Cover image for It's Here! Announcing the Release of Appwrite 0.12!
Eldad A. Fux for Appwrite

Posted on

It's Here! Announcing the Release of Appwrite 0.12!

We're excited to share that Appwrite 0.12 is now officially available! The new Appwrite version includes our biggest ever performance improvements, enhanced developer experience, and many new features designed to make developers' lives easier. Trust us, this one's a biggie! In addition, the latest release includes over 1,500 commits and contributions from 29 new contributors that have helped make this release possible.

🧪 Database on Steroids

In version 0.12, we have completely rewritten the Appwrite data management layer. We have improved the internal data structures, background workers, and we’ve enabled new concepts such as attributes (instead of rules) and indexes to allow maximum performance and flexibility.

Image description

We’ve also added a new easy-to-understand query syntax. The new syntax allows new capabilities, like OR statements, and opens the door for the core team to implement many more advanced features we’re passionate about, like includes operator and GEO-based queries.

The team has done a lot of work to enable other databases providers, and we hope to release support for more loved databases soon. A major part of our agenda is to enable dev teams the comfort and confidence to use Appwrite the way they wish to, with tools they already love, know, and feel confident with.

The new database does introduce some breaking changes before we move to version 1.0. Please take time to review the list of changes and our migration tutorial. To support existing Appwrite users we'll continue to support the 0.11 branch for at least the next six months.

📑 Pagination Just Got A LOT Faster!

With Appwrite 0.12, we are happy to introduce the new cursor pagination strategy. While the traditional offset and limit pagination is very intuitive and easy to understand it doesn’t scale well. To tackle this problem, we have limited the limit+offset pagination to a maximum of 5,000 documents. With this limit, you can still use the offset+limit pagination for small dataset, but as your data grows, you can migrate to the new cursor pagination that scales very well with almost no regard to your collection size.

The chart below demonstrates how significant this performance difference can be on a collection containing 1M documents. The bigger the dataset, the bigger the difference, and now Appwrite can allow you to scale your pagination with confidence.

Cursor vs Offset Pagination

The new change will apply to all the Appwrite resources where pagination is possible. Whether it's your custom collections, list of files, users, functions and other relevant resources.

🚧 Permissions are Easier and More Flexible

When we initially designed Appwrite, we wanted to have a simple declarative permission model that is also secure by default. With the release of Appwrite 0.12, we're happy to introduce the next evolution of the Appwrite permissions: Permission Models. You will now be able to choose between two different permission models for your collections, collection-level permissions and document-level permissions.

Appwrite's Permission Models

If you're already familiar with Appwrite, the document-level model will act in the same way as you already know. Each document can have read and write permissions that define which Appwrite entity (user/team/role) has access to each operation.

The new Collection Level model introduces new and easier to use collection permissions. Using the collection permissions, you only need to set the read and write permissions once. In addition, the collections permission will act the same for all the documents regardless of any permissions that may have been set on a specific document.

The new model offers more flexibility for other use cases, which may not require you to leverage the original, document-level permissions. The new collection-level permission can also lead to enhanced performance as the Appwrite API is not required to validate each permission individually.

🎛 More Dashboards, and More Control

Appwrite's Usage Stats

We have upgraded the Appwrite console with more dashboards with your Appwrite projects' usage metrics. This is the first of many upgrades where we aim to make more usage metrics easily available through the console. Using our new dashboards, you can quickly get insights into your project performance, size, and cost. In addition, the new dashboard will now show data for your entire project, files, users, collections and documents over time. We've also added charts for your CRUD operations.

🤟 Anyone Ask for Custom IDs?

Custom IDs were probably one of the most requested features we’ve ever got. Now they're here! With custom IDs, you can define human-readable IDs on most Appwrite resources including users, teams, functions, projects, files, collections, and documents. If you still want to use the previous unique IDs, you can use the reserved unique() keyword.

Appwrite's Custom IDs

With custom IDs, you can have a much smoother development experience. Instead of using meaningless strings in your code, you can now use proper naming conventions that allow you to easily migrate your code between different Appwrite environments without managing complex configuration files or programmatic setups for your project.

✅ Your Services, Your Choice!

Image description

We always wanted Appwrite to play well with other tools. However, we understand that one tool can’t always be the right solution to every problem. For that reason, we’ve created our server API, Cloud Functions, and our Microservice architecture that enables you to use Appwrite alongside your existing stack and even your own backend server.

With version 0.12, Appwrite became more flexible by allowing you to choose which Appwrite services you wish to enable or disable. This is also a great security feature designed to reduce your attack surface by blocking services and resources you don’t consume. You can visit the new Services section from your project settings and choose which services to use. For convenience, each project you own can have different settings.

🚨 Introducing Logging Providers!

Error logging and monitoring are crucial for any application, Appwrite being no exception. We wanted to make it extremely easy to collect and monitor your logs while staying true to our philosophy of being completely platform agnostic. With Appwrite 0.12, we've introduced support for some amazing open source logging providers like Sentry, Raygun and AppSignal!

Loggers

We're always on the lookout for more logging providers and we'd love your contributions to the logging library.

📚 Learn More

Appwrite 0.12 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. In the next couple of weeks, we will continue the Appwrite 0.12 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.

🗂⚡️☁️ What's Next?

If you like Appwrite 0.12, you will love Appwrite 0.13! Appwrite 0.12 release will enable us more flexibility and solid foundations to take Appwrite to new places, never seen in the backend-as-a-service space.

Appwrite 0.13 will be the first release of many to enjoy the perks of the hard work the Appwrite core team with over 500 collaborators have done for the Appwrite project and ecosystem. The next version will include some very cool features like buckets support for the Appwrite storage, more flexibility with new storage devices, Sync & Async serverless functions that have been highly requested, and amazing performance boost thanks to our improved function execution model and new runtimes.

Beside the upcoming releases and features, we’ve just recently announced the ability to sign up and be the first to use the upcoming Appwrite Cloud. The Appwrite Cloud is already in the works, and once available it will provide the easiest way to build on top of Appwrite and to scale your backend effortlessly. You can learn more on our new dedicated landing page for the Appwrite Cloud.

Discussion (16)

Collapse
tananga profile image
tananga • Edited on

I love Appwrite. Its great that you guys relesed new version but personally I think that you should put all hands into Appwrite Cloud. Im a flutter developer who knows a little bit about docker and kubernetes. The only reason why Im using appwrite only in my side small projects is because I dont know a lot about hosting. Cloud will allow me to dont think about anything else than my Flutter code and Im ready to pay a lot for it. Thank you for attention. Appwrite cloud will be a game changer.

Collapse
eldadfux profile image
Eldad A. Fux Author

We're working hard on the 🌩 version 💪, don't forget to sign for updates on appwrite.io/cloud

Collapse
barnabtz profile image
Fon Barnabas Afuoh

appwrite is just the best for me... from local to cloud. so amazing. how about increasing video size. max is 10mb.

Collapse
eldadfux profile image
Eldad A. Fux Author

You can change the file size limit using env vars: appwrite.io/docs/environment-varia... - 0.13 release will support big files and range headers.

Collapse
ahmedhammad0900 profile image
AhmedHammad0900

Hardly waiting for this release
github.com/utopia-php/storage/pull/16
you are doing a wonderful job every day .. is there a relase day for 0.13 ?

Collapse
matrixdev profile image
The MatrixDex

Amazing work! This project is evolving so damm fast

Collapse
eldadfux profile image
Eldad A. Fux Author

Thank you ❤️

Collapse
diegovieira profile image
Diego Vieira

Is there a way to stop a document from being updated or created eg if one of the fields don’t match a regex?

Parse call this Triggers
docs.parseplatform.org/cloudcode/g...

Thanks

Collapse
eldadfux profile image
Eldad A. Fux Author

In Appwrite you will want to use Cloud Functions to handle this kind of extra logic. We're still checking for ways to make data validation more flexible without regex, as regex validation is complex and might come with some security risks: sec.okta.com/articles/2020/07/dang....

Collapse
mfilteau profile image
Martin Filteau

I use appwrite mostly for web applications on a private network. It would be so nice to be able to setup/manage the web hosting from within appwrite, just like I can do with Firebase.

Collapse
eldadfux profile image
Eldad A. Fux Author

It's on the roadmap 🤞

Collapse
maulanarifai114 profile image
Raden Maulana Rifa'i Abdullah

Image description

You should set this menu to sticky

Collapse
eldadfux profile image
Eldad A. Fux Author

Yeh, listed it down for us to work on it as soon as we can 👍

Collapse
manyeya profile image
Khutso siema

is Appwrite ready to be used in production on an enterprise level?

Collapse
tanahmed profile image
Tan Ahmed

How similar is this to supabase?

Collapse
adityaoberai profile image
Aditya Oberai

Supabase and Appwrite are both great products, but Appwrite focuses on simplicity in use and better productivity by maintaining a great developer experience and is also agnostic to the Database technology you want to use.

We definitely have some awesome features in Appwrite such as Cloud Functions, Database, File Storage, User Authentication and Management, Websocket Server for Realtime updates and more. And top it off, all you need to self host Appwrite on your system is a single Docker command. So do give it a try and let us know if you need any help along the way 😁