DEV Community

loading...
Cover image for Announcing Appwrite 0.8 - an open-source, self-hosted BaaS
Appwrite

Announcing Appwrite 0.8 - an open-source, self-hosted BaaS

kodumbeats
fullstack engineer @ Appwrite | linux sysadmin | rpi enthusiast
・5 min read

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
});
Enter fullscreen mode Exit fullscreen mode

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);
    });
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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!

Control Auth Methods

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 🚀

Benchmarks

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 to delete 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 to APP_FUNCTIONS_RUNTIMES.
  • Several function execution environment variables have been renamed:
    • APPWRITE_FUNCTION_EVENT_PAYLOAD is now APPWRITE_FUNCTION_EVENT_DATA
    • APPWRITE_FUNCTION_ENV_NAME is now APPWRITE_FUNCTION_RUNTIME_NAME
    • APPWRITE_FUNCTION_ENV_VERSION is now APPWRITE_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.

Discussion (5)

Collapse
regissaffi profile image
Regis Imuduhe Safari

Awesome work to Appwrite team 👏👏👏👏👏, I would like to ask if there is or there will be any way to migrate from Firebase to Appwrite at ease, like you can migrate your firestore data and cloud functions to Appwrite with minimal configurations?

Collapse
eldadfux profile image
Eldad A. Fux

Thank you Regis! We're researching for different ways to allow devs to move to Appwrite faster 🤞

Collapse
ennarto profile image
ennarto

Awesome! Any plans to support the new service from Amazon, AWS App Runner?
It looks like ideal for appwrite deployments since it handles autoscaling from a docker container without much hasle, and with predictable pricing.

Collapse
eldadfux profile image
Eldad A. Fux

We're always open for new suggestions! Please feel free to raise an issue on our Github repo: github.com/appwrite/appwrite

Collapse
eldadfux profile image
Eldad A. Fux

Awesome work by the team and awesome help from the amazing Appwrite OSS community ❤️ 👏