Guides
React

React

React hooks for Polybase DB.

Install Polybase DB React

npm install @polybase/react

React + Polybase DB Client

There are React hooks and providers for Polybase DB Client, designed to be use with @polybase/client (opens in a new tab).

Add Polybase Provider

import * as React from "react";
import { PolybaseProvider } from "@polybase/react";
import { Polybase } from "@polybase/client";
 
const polybase = new Polybase();
 
export const App = () => {
  return (
    <PolybaseProvider polybase={polybase}>
      {/* ... your app routes */}
    </PolybaseProvider>
  );
};

Read a record (with updates)

ℹ️

<PolybaseProvider> must be a parent component.

import * as React from "react";
import { usePolybase, useDocument } from "@polybase/react";
 
export const Component = () => {
  const polybase = usePolybase();
  const { data, error, loading } =
    useDocument<OptionalCustomType>(polybase.collection("users").record("id"));
 
  return data.data.name;
};

List collection records (with updates)

ℹ️

<PolybaseProvider> must be a parent component.

import * as React from "react";
import { usePolybase, useCollection } from "@polybase/react";
 
export const Component = () => {
  const polybase = usePolybase();
  const { data, error, loading } =
    useCollection<OptionalCustomType>(polybase.collection("users"));
 
  const usersEl = map(data, ({ data }) => {
    return <div key={data.id}>{data.name}</div>;
  });
 
  return usersEl;
};

React + Polybase DB Auth

There are React hooks and providers for authentication, designed to be use with @polybase/auth (opens in a new tab).

AuthProvider

import * as React from "react";
import { PolybaseProvider, AuthProvider } from "@polybase/react";
import { Polybase } from "@polybase/client";
import { Auth } from "@polybase/auth"
 
const polybase = new Polybase();
const auth = new Auth()
 
export const App = () => {
  return (
    <PolybaseProvider polybase={polybase}>
      <AuthProvider auth={auth} polybase={polybase}>
        {/* ... your app routes */}
      </AuthProvider>
    </PolybaseProvider>
  );
};

Once you have added AuthProvider as a parent component then use the following hooks.

useAuth()

ℹ️

<AuthProvider> must be a parent component.

import * as React from "react";
import { useAuth } from "@polybase/react";
 
export const Component = () => {
  const { auth, state, loading } = useAuth();
 
  // `state` is null if not logged in, or logged in state e.g. { type: "metamask", userId: "..." }
 
  // `auth` is the prop passed to AuthProvider as auth 
 
  return (
    <div>
      <button onClick={() => auth.signIn()}>Sign In</button>
      <button onClick={() => auth.signOut()}>Sign Out</button>
    </div>
  )
};

useIsAuthenticated()

ℹ️

<AuthProvider> must be a parent component.

import * as React from "react";
import { useIsAuthenticated } from "@polybase/react";
 
export const Component = () => {
  const [isLoggedIn, loading] = useIsAuthenticated();
 
  // ... do something with logged in state
};

Polybase DB Docs