Announcing a new Appwrite Release — a step closer to becoming a complete OSS Firebase Alternative
We’re incredibly excited to announce the release of Appwrite 0.8, packed with a ton of cool new features like JWT support, ARM support, Anonymous Login, and more! Last month, we gave a sneak peek of some of the changes, and we’re back today to keep you waiting no longer. Let’s dive in! 🤿
Appwrite is an open-source, self-hosted Backend-as-a-Service that aims to make app development easier with SDKs available in a variety of programming languages. Come hang out with us on Discord.
Anonymous Login and JWT 🔐
Not every app needs users to create an account right away. With Anonymous Login, save sessions without asking for email addresses, and convert those users to registered accounts later with ease. The implementation is just like creating a normal user session via the createSession
method:
let sdk = new Appwrite();sdk
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
.setProject('5df5acd0d48c2') // Your project ID
;let promise = sdk.account.createAnonymousSession();promise.then(function (response) {
console.log(response); // Success
}, function (error) {
console.log(error); // Failure
});
Also, if you’ve ever needed to act as a user from a server SDK, Appwrite now supports authentication via JSON Web Tokens (JWT). This change allows Appwrite to work with the server-side rendering capabilities of frameworks like Next.js, Nuxt.js, and Gatsby.js, as well as unlock user actions from server-side SDKs.
First, a JWT is created for the user from a Client SDK:
appwrite
.account.createJWT()
.then(function (response) {
console.log(response);
}, function (error) {
console.log(error);
});
Then, the JWT is used to act on behalf of the user server-side:
const sdk = require('node-appwrite');let client = new sdk.Client();client
.setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint
.setProject('5df5acd0d48c2') // Your project ID
.setJWT('919c2d18fb5d4...a2ae413da83346ad2') // Your JWT
ARM Support 🦾
The ARM ecosystem has been booming since Apple’s M1 processors landed in their new lineup of devices. Starting with 0.8, install Appwrite on your favorite 64-bit ARM device, from Amazon Graviton2 down to the Raspberry Pi 4! [1] ARM support falls in line with our mission to make Appwrite technology agnostic, and we’re excited to hear all of the new places where Appwrite can run.
To celebrate this milestone, we have ARM systems to give away as a part of #30DaysofAppwrite! 🥳 Through the month of May, we’re building a Medium.com blog clone to demonstrate how easy the developer experience is with Appwrite, and we invite you to build alongside us. Eligible submissions get some cool 😎 swag, and the best projects will receive Raspberry Pi 4 development kits. 😍
[1] For both Graviton2 servers and Raspberry Pis, we recommend at least 2GB of RAM for the best Appwrite experience.
Control your Console 🖥️
We’ve updated the console with a few new goodies. First, if you enable the new “root” account setting, only a single admin account can be created on your Appwrite server. If you need to share access to the Appwrite console, you can restrict account creation to specific IP addresses with the _APP_CONSOLE_WHITELIST_IPS
environment variable.
Additionally, Appwrite 0.8 brings new settings to users — now, you can choose which of our growing authentication methods you’d like to use for your apps: email/password login, anonymous login, JWT auth, and more!
New Cloud Function Runtimes 🏃
Appwrite 0.8 introduces Python 3.9, Deno 1.8, and Dart 2.12 as new runtimes for Cloud Functions. Upgrade existing functions or write new ones! If you’re using Cloud Functions in a cool way, let us know on Discord.
Slimmer and Faster ⏩
You’ll notice Appwrite 0.8 is a bit slimmer on system resources out-of-the-box. We found that the SMTP and antivirus services weren’t helping new developers, so we’ve toggled off ClamAV and the included SMTP server for development. Because of these changes, we have been able to reduce our minimum requirements to 1GB of RAM (though we recommend 2GB for the better experience).
We also updated our codebase to take advantage of the increased performance of some of our under the hood technologies. Based on our testing, we’re seeing improved performance of about 8% compared to previous Appwrite versions 🚀
Breaking Changes ⚒️
Before you upgrade your Appwrite server to 0.8, check out the breaking changes that were introduced to see if you need to update any code.
- The
deleteUser
method in the Users API has been renamed todelete
to remain consistent with the rest of the API. - Only logged in users with active sessions can execute functions. If your app relies on this behavior, check out Anonymous Login.
- Only the user who triggers an execution gets access to the relevant execution logs.
- The
createMembership
method has a new rate limit of 10 requests per 60 minutes per IP address. - The environment variable
_APP_FUNCTIONS_ENVS
has been renamed toAPP_FUNCTIONS_RUNTIMES
. - Several function execution environment variables have been renamed:
APPWRITE_FUNCTION_EVENT_PAYLOAD
is nowAPPWRITE_FUNCTION_EVENT_DATA
APPWRITE_FUNCTION_ENV_NAME
is nowAPPWRITE_FUNCTION_RUNTIME_NAME
APPWRITE_FUNCTION_ENV_VERSION
is nowAPPWRITE_FUNCTION_RUNTIME_VERSION
And More! 😍
That’s not all! To get all the details on Appwrite 0.8, check out all the changes in the changelog on GitHub. Are you curious about the big ideas we have up next, or have a great idea for Appwrite’s future? Check out the RFC Repo for more details. Also, our awesome-appwrite repo keeps growing with new tutorials, videos, and demos.
If you’ve just discovered Appwrite and would like to get started, check out out our 30 Days of Appwrite series where we explain step-by-step everything you need to know to build awesome Appwrite-powered apps. Follow us on Twitter, Dev.to, or anywhere you find your friendly neighborhood Appwrite.