Announcing Appwrite 0.9: The open source Firebase alternative
Tags: flutter, android, kotlin, opensource
Published: 2021-07-07 14:27:41

The last month was a crazy one. We've put together over **250 commits**, **20k lines of code** and countless hours to bring you the best Appwrite version ever! With that, we're incredibly excited to announce the release of **Appwrite 0.9**, packed with a ton of cool new features like **Android support**, **Kotlin Server SDK**, **Flutter Desktop Support**, and much more! Without spending any more time, 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](https://appwrite.io/discord).

## 🤖 Android Support 

It's finally here 📌 Appwrite now has official support for Android! [Our SDK](https://github.com/appwrite/sdk-for-android) has been out in the wild for over 2 weeks now - we've gathered some amazing feedback from the community, and we're now ready to present it to all of you! We've got all the setup instructions in our new [Getting Started Guide](https://appwrite.io/docs/getting-started-for-android?), but here's what you'll need to do, in a nutshell 🥜. 

Include the **mavenCentral()** repository in your project's **build.gradle(.kts)** file
```groovy
repositories {      
    mavenCentral()
}
```
Add the Android SDK in your app's **build.gradle(.kts)** file. 
```groovy
dependencies {
    implementation("io.appwrite:sdk-for-android:0.0.1")
}
```

🤩 Then make your first request using 

```kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import io.appwrite.Client
import io.appwrite.services.Account

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val client = Client(applicationContext)
            .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint
            .setProject("5df5acd0d48c2") // Your project ID

        val account = Account(client)

        GlobalScope.launch {
            val response = account.create(
                email = "email@example.com",
                password = "password",
            )      
        }
    }
}
```

We also have some example apps to help you get started
* A bare minimum [Playground App](https://github.com/appwrite/playground-for-android) to help you quickly start building apps.
* A [Getting Started App](https://github.com/appwrite/demo-getstarted-with-android) that has interactions with all of Appwrite's endpoints.
* A [Simple Quiz App](https://github.com/appwrite/demo-quiz-with-android) built with Appwrite.


## 🦾 Kotlin Server SDK 

We also released a brand new [Kotlin Server SDK](https://github.com/appwrite/sdk-for-kotlin) to go along with the Android one! Setting up the Kotlin SDK is a similar drill. You can check out our [Getting Started Guide](https://appwrite.io/docs/getting-started-for-server) or follow along for a quick summary.

Add the dependency to your **pom.xml** file.

```xml
<dependencies>
    <dependency>
        <groupId>io.appwrite</groupId>
        <artifactId>sdk-for-kotlin</artifactId>
        <version>0.0.1</version>
    </dependency>
</dependencies>
```
Or your **build.gradle(.kts)** file if using **Gradle** as your build system.

```groovy
dependencies {
    implementation("io.appwrite:sdk-for-kotlin:0.0.1")
}
```

🚀 Then make your first request using 

```kotlin
import io.appwrite.Client
import io.appwrite.services.Users

suspend fun main() {
    val client = Client(context)
      .setEndpoint("https://[HOSTNAME_OR_IP]/v1") 
      .setProject("5df5acd0d48c2")
      .setKey("919c2d18fb5d4...a2ae413da83346ad2")

    val users = Users(client)
    val response = users.create(
        email = "email@example.com",
        password = "password",
    )

    val json = response.body?.string()
}
```

We also have some example apps to help you get started
* A bare minimum [Playground App](https://github.com/appwrite/playground-for-kotlin) to help you quickly start building apps.
* We also have some really cool [Cloud Function demos](https://github.com/appwrite/demos-for-functions) using our Kotlin SDK. 


## 🖥️ Flutter Desktop Support 

With Appwrite 0.9, we've enabled platform wide support for your Flutter Desktop Apps! You can now register your Linux, Windows and Mac apps from the Dashboard! 

![Flutter Desktop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cy3kn6js39mr4ebt59f0.png)

## 🏃 New Cloud Function Runtimes 

Our Cloud Function runtimes list continues to grow with over 20+ (!) runtimes. This time we've added support for **deno-1.10**, **deno-1.11**, **dart 2.13**, **node-16.0** , **java-11.0** and **java-16.0**. We've got you covered 💪 no matter what your favourite language is! If you're looking for some creative ways to get started with Cloud Functions, feel free to check out [our demos](https://github.com/appwrite/demos-for-functions).

## ⚒️ Breaking Changes 

Breaking changes are hard, but unfortunately, they're a necessary evil! We've kept those nasty breaking changes to a bare minimum with this release and only made changes to our Server SDKs:


* `env` has been renamed to `runtime` in the `POST v1/functions` endpoint. If you're using named parameters in your server SDKs, you will need to update them.

* `deleteUser` has been replaced in favour of the `delete` method in all our Server SDKs. 

## 🚀 Everything else 

* Our Image Preview 📸 endpoint now let's you specify a gravity giving you much more control when cropping your images!  

* One of our community members [**@Meldiron**](https://github.com/Meldiron), helped speed up our Cloud Function executions by upto a [**whopping 4s 🤯**](https://github.com/appwrite/appwrite/pull/1308) in some cases. 

* We revamped our **User Sessions UI** in the Dashboard to give you more fine grained information about a user's session.
![sessions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1wrsalkufc911a78pgjm.png)
   

* We've added some additional metadata in our **File Preview Dialog** to make it easier to view your file types, file size and the creation date.
![meta-data](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/guwnzctwy968b7hjjauc.png)
 

* Internally, we've optimized our database connection pools for overall improved server performance 🤩

* Gone are the days of running multiple migration scripts to upgrade to the latest version of Appwrite! From Appwrite 0.9, it's just a single script! 

* Based on popular demand, we've added a [new endpoint](https://appwrite.io/docs/client/account?sdk=web-default#accountGetSession) to get a session by ID and another endpoint to force update the user verification status from Server Side SDKs.

* Last but not the least, we've [overhauled our Email Templates](https://github.com/appwrite/appwrite/pull/1225) in an attempt to offer lot more customization in the future! 

* Let's not forget, you also helped us reach a major milestone of **10k Github stars** ⭐️ making us one of the **top 2000** projects in Github history! We also crossed a landmark **2.2M Docker pulls** and **over 40k reads** on our blog posts! Thank you so much for all your support!
![star](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/coo9vs3uxisxd2oubjhd.png)


## 😍 And More! 

We still haven't covered everything! There's lots more bug fixes and other micro optimizations we made under the hood to make your experience with Appwrite better! To get all the details on Appwrite 0.9, check out all the changes in the [changelog on GitHub](https://github.com/appwrite/appwrite/blob/master/CHANGES.md). 

If you're upgrading from an older version of Appwrite, be sure to follow our [Upgrading guide](https://appwrite.io/docs/upgrade) so that you don't loose your way in uncharted territories 😉.

Are you curious about the big ideas we have up next, or have a great idea for Appwrite's future? Check out the [RFC Repository](https://github.com/appwrite/rfc) for more details. Also, our [awesome-appwrite repository](https://github.com/appwrite/awesome-appwrite) 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](https://30days.appwrite.io/) series where we explain step-by-step everything you need to know to build awesome Appwrite-powered apps. Follow us on [Twitter](https://twitter.com/appwrite_io), [Dev.to](https://dev.to/appwrite), or anywhere you find your friendly neighbourhood Appwrite.