Type to search…

Firebase

shell
deno run -A npm:create-vite@latest react-firebase --template react-ts
shell
cd react-firebase
deno install --allow-scripts --node-modules-dir --npm firebase tailwindcss @tailwindcss/vite

Create a file src/firebase.ts to initialize your connection:

js
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_PROJECT.firebaseapp.com",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_PROJECT.appspot.com",
  messagingSenderId: "...",
  appId: "..."
};

const app = initializeApp(firebaseConfig);
export const db = getFirestore(app);

In src/App.tsx, we will fetch the list of pets from Firestore and display them.

js
import { useEffect, useState } from 'react';
import { db } from './firebase';
import { collection, getDocs } from 'firebase/firestore';

interface Pet { id: string; name: string; type: string; }

function App() {
  const [pets, setPets] = useState<Pet[]>([]);

  useEffect(() => {
    const fetchPets = async () => {
      const querySnapshot = await getDocs(collection(db, "pets"));
      const petList = querySnapshot.docs.map(doc => ({ id: doc.id, ...doc.data() } as Pet));
      setPets(petList);
    };
    fetchPets();
  }, []);

  return (
    <div>
      <h1>🐾 Edge Pet Store</h1>
      <ul>
        {pets.map(pet => (
          <li key={pet.id}>{pet.name} ({pet.type})</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

Run the development server:

shell
deno task dev

Better UI

  • config tailwind

  • @src/App.tsx and add functionality to add new pets
  • @src/App.tsx add loading indicator when fetching pets

Configure Cloudflare Worker (SPA Mode)

Create your wrangler.toml in the project root.

We use the not_found_handling setting to ensure the React Router (if you add one later) or hard refreshes don’t break.

toml
name = "firebase"
compatibility_date = "2026-03-16"

[assets]
directory = "dist"
not_found_handling = "single-page-application"

Build your React app:

shell
deno task build

Deploy to Cloudflare:

shell
deno run -A npm:wrangler deploy

Auth

Auth

add auth

sign in with google doesn’t work

add firebase mcp