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.
π€ Android Support
It's finally here π Appwrite now has official support for Android! Our SDK 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, but here's what you'll need to do, in a nutshell π₯.
Include the mavenCentral() repository in your project's build.gradle(.kts) file
repositories {
mavenCentral()
}
Add the Android SDK in your app's build.gradle(.kts) file.
dependencies {
implementation("io.appwrite:sdk-for-android:0.0.1")
}
π€© Then make your first request using
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 to help you quickly start building apps.
- A Getting Started App that has interactions with all of Appwrite's endpoints.
- A Simple Quiz App built with Appwrite.
π¦Ύ Kotlin Server SDK
We also released a brand new Kotlin Server SDK to go along with the Android one! Setting up the Kotlin SDK is a similar drill. You can check out our Getting Started Guide or follow along for a quick summary.
Add the dependency to your pom.xml file.
<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.
dependencies {
implementation("io.appwrite:sdk-for-kotlin:0.0.1")
}
π Then make your first request using
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 to help you quickly start building apps.
- We also have some really cool Cloud Function demos 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!
π 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.
βοΈ 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 toruntime
in thePOST 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 thedelete
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, helped speed up our Cloud Function executions by upto a whopping 4s π€― in some cases.
We revamped our User Sessions UI in the Dashboard to give you more fine grained information about a user's session.
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.
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 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 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!
π 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.
If you're upgrading from an older version of Appwrite, be sure to follow our Upgrading guide 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 for more details. Also, our awesome-appwrite repository 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 neighbourhood Appwrite.
Top comments (3)
Thanks to all team members!
Good work, but you will need more to work on the security concern since saving
strings
in android is not safe and if anyone can conncet the API using these strings only, it could be an issue.Thanks a lot but you can add these strings as part of your build config and access them inside your code using
BuildConfig.[your string name]
This is a pretty standard practice π