What is Supabase?
Supabase is an open-source platform that gives you a full backend for your app — database, authentication, file storage, and realtime updates — without having to set up and manage servers yourself.
At its core is a real PostgreSQL database. That's the same database used by major companies like Instagram and Notion. Unlike some other "app platforms," Supabase doesn't lock you into a proprietary data format — your data lives in standard Postgres tables that you can query with regular SQL, export at any time, or even migrate to your own server later.
The best comparison is Firebase (Google's equivalent), but with a real relational database instead of a document store, and with the full codebase available on GitHub.
Why use it?
If your app needs to store data, manage users, or keep things in sync across devices, you need a backend. Supabase gives you all of that in one place, with a polished dashboard that makes it feel manageable even if you've never touched a database before.
Postgres is a superpower. Being able to write SQL — even simple queries like SELECT * FROM users WHERE plan = 'pro' — means you can answer questions about your data instantly. You're not stuck with the limited querying options that come with document databases.
Auth is genuinely hard to build yourself. Supabase Auth handles email/password, magic links, OAuth (Google, GitHub, Discord, and more), and multi-factor authentication. All the session management, password hashing, and token refresh logic is handled for you.
Realtime without extra infrastructure. Subscribe to any table change from your front-end and Supabase will push updates to connected clients in milliseconds. Building a collaborative tool, a live feed, or a chat feature becomes dramatically simpler.
Free vs Paid
| Feature | Free | Pro ($25/mo) |
|---|---|---|
| Database size | 500 MB | 8 GB (expandable) |
| File storage | 1 GB | 100 GB |
| Monthly active users | 50,000 | 100,000 |
| Project pausing | After 1 week idle | Never |
| Bandwidth | 5 GB | 250 GB |
| Daily backups | No | Yes |
| Support | Community | |
| Custom domains | No | Yes |
The free tier is well-suited for prototypes, side projects, and apps with modest traffic. The biggest practical limitation is that free projects pause after a week without activity — your data is safe, you just have to click "Resume" in the dashboard to bring it back online.
Step-by-step setup
-
Create a project. Go to supabase.com, sign up, and click "New project." Choose a name, set a strong database password (save it somewhere safe), and pick a region close to your users.
-
Create your first table. In the left sidebar, go to Table Editor > New table. Give it a name, add your columns, and enable "Row Level Security" (RLS) — this keeps your data safe by default.
-
Install the Supabase client. In your project, run
npm install @supabase/supabase-js. Then create a client file:import { createClient } from '@supabase/supabase-js' export const supabase = createClient( process.env.NEXT_PUBLIC_SUPABASE_URL, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY )You'll find your URL and anon key in Project Settings > API.
-
Query your data. Fetching rows is simple:
const { data, error } = await supabase.from('tasks').select('*') -
Set up auth. Call
supabase.auth.signUp()orsupabase.auth.signInWithPassword()to handle registration and login. For OAuth, callsupabase.auth.signInWithOAuth({ provider: 'google' }). -
Write Row Level Security policies. In the dashboard, go to Authentication > Policies. Add a policy that allows users to only see their own rows:
auth.uid() = user_id. This is the most important step for keeping your data secure.
Common questions
What's the difference between Supabase and Firebase? Firebase uses a document/NoSQL database (Firestore), which is very flexible but can get messy at scale. Supabase uses Postgres, a relational database — better for structured data and complex queries. Supabase is also open-source; Firebase is not.
Will my free project really pause? Yes — after 7 days of no API activity, Supabase pauses the project to conserve resources. Your data is completely safe. You just log in and click "Restore." For a production app, you'd want the Pro plan to avoid this.
Do I need to know SQL? You can get surprisingly far with the table editor UI and the JavaScript SDK without writing any SQL. But learning a few basic SQL queries will unlock a lot of power and make debugging much easier.