Firebase is Google's app development platform. Apps built on it typically keep their users in Firebase Authentication, their data in Cloud Firestore, and their files in Cloud Storage for Firebase.
How does the integration work?
Appwrite Migrations reads your Firebase project through a Google Cloud service account and copies its resources into an Appwrite project. You choose which resources to move in the migration wizard, and Appwrite runs the migration in the background.
| Resource | Migration |
|---|---|
| Users | Automatic |
| Databases | Automatic |
| Rows | Partial: top-level Firestore documents only |
| Files | Automatic |
| Functions | Manual |
Some things don't carry over. Appwrite reads Firestore but not the Realtime Database, and nested documents are not migrated automatically. Users who signed in with an OAuth provider need to sign in again after the migration, because their sessions belong to that provider. Cloud Functions must be rewritten as Appwrite Functions because of syntax and runtime differences.
On Appwrite Cloud, resource usage during a migration doesn't count toward your usage charges. Firebase may still charge for data transfer.
How to implement
To migrate a Firebase project to Appwrite, there are several steps you must complete:
Step 1: Create a service account
Open your project in the Firebase console, click the gear icon to open Project settings, and go to Service accounts. Click Manage service account permissions to open the Google Cloud console, then click Create service account and give it a name.
Grant the service account these roles:
| Role | Access |
|---|---|
| Firebase Viewer | Read access to your entire Firebase project, including its database and Storage. |
| Identity Toolkit Viewer | Read access to your users, including their password hash configuration. |
Step 2: Create a JSON key
Find the new service account, open its menu, and click Manage keys. Click Add key > Create new key, choose JSON, and click Create. Your browser downloads the key file. Keep it private, because it grants read access to your Firebase project.
Step 3: Start the migration in Appwrite
For this step, you must create an account on Appwrite Cloud or self-host Appwrite if you haven't already.
Create a new project, open Project settings, and go to the Migrations tab. Click Create migration and select Firebase as the source. Paste the contents of the JSON key file, select the resources to migrate, and click Start migration.
You can also start a migration from a Server SDK with createFirebaseMigration, using an API key with the migrations.write scope.
Step 4: Finish the move
Once the migration completes:
- Add your web, Flutter, Android, and iOS apps as platforms in your Appwrite project. Appwrite rejects requests from apps it doesn't know.
- Review the permissions on migrated resources so users can only reach their own data.
- Rewrite your Cloud Functions on a supported Appwrite Functions runtime.
Read more about Firebase and Appwrite
If you would like to learn more about migrating from Firebase to Appwrite, we have some resources that you should visit:
