Firebase Tutorial
- Home
- Introduction
- Project Setup
- Authentication (Email/Pass)
- Social Authentication
- Cloud Firestore (Basics)
- Firestore Queries
- Real-time Updates
- Firestore Security Rules
- Cloud Storage
- Storage Security Rules
- Cloud Functions (Intro)
- Triggering Functions
- Firebase Hosting
- Firebase Analytics
- Crashlytics & Performance
- Remote Config
- App Check
- Offline Persistence
- Firebase with Next.js
- Best Practices
Firebase with Next.js
Integrating Firebase with Next.js allows you to build powerful full-stack applications with ease. However, you must decide what runs on the client vs. the server.
1. Client-side vs. Server-side
- Client-side: Use the standard Firebase Web SDK. Perfect for real-time updates and simple auth.
- Server-side: Use
firebase-admin. Required for SSR (Server Side Rendering) and API routes.
2. Using Firebase Admin (Server-only)
// lib/firebaseAdmin.js
import admin from "firebase-admin";
if (!admin.apps.length) {
admin.initializeApp({
credential: admin.credential.cert({
projectId: process.env.FIREBASE_PROJECT_ID,
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\n/g, "\n"),
}),
});
}
export const db = admin.firestore();3. Simple SSR Example
export async function getServerSideProps() {
const snapshot = await db.collection('posts').get();
const posts = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }));
return { props: { posts } };
}4. Environment Variables
Crucial! Store your credentials in .env.local.
NEXT_PUBLIC_FIREBASE_API_KEY=...
FIREBASE_PRIVATE_KEY="..."Check out:
next-firebase-auth-edge is a popular library for managing Firebase Auth across the edge in Next.js.