#wasm-bindings #firebase #bindings

firebase-js-rs

Unofficial Wasm bindings for Firebase JS SDKs

2 releases

0.1.1 Feb 27, 2023
0.1.0 Feb 26, 2023

#1339 in WebAssembly

38 downloads per month

MIT/Apache

7KB
70 lines

firebase-js-rs

Unofficial Wasm bindings for Firebase JS SDKs written in Rust.

Get strted

Following example shows how to add email and password sign in to Sycamore app.

Add and initialize SDK

Install firebase-js-rs by running the following Cargo command in your project directory:

cargo add firebase-js-rs

or alternatively add the following line to your Cargo.toml:

firebase-js-rs = "0.1.1"

Then add project in the Firebase console and install JS SDKs from the CDN.

<html>
  <head>
    <script src="https://www.gstatic.com/firebasejs/9.17.1/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/9.17.1/firebase-auth-compat.js"></script>
  </head>
</html>

Initialize Firebase app and get reference to the authentication service

use sycamore::prelude::*;
use firebase_js_rs::{app::initialize_app, Config};

fn main() {
  sycamore::render(|cx| {
    view! { cx,
          // Initialize Firebase
          let firebase_app = initialize_app(Config::initialize(
            "api_key", None, None, None, None, None, None,
            ));
          // Get reference to the auth service
            let auth = app.auth();
        }
    });
}

Create new user

let result = auth.create_user_with_email_and_password(email, password).await;

Sign in user

let result = auth.sign_in_with_email_and_password(email, password).await;

Observe authentication state

let callback = Closure::new(move |user: JsValue| {
  // Get info about user
});
auth.on_auth_state_changed(&callback);
callback.forget();

Dependencies

~1.2–3MB
~59K SLoC