Convex 是一個全 TypeScript 的反應式後端平台,把資料庫、伺服器函數、即時同步、檔案儲存、向量搜尋與工作流全部整合在單一平台,號稱「All gas, no breakages」。 開發者用 TypeScript 寫資料庫查詢,查詢直接在資料庫中執行,並對資料變更自動反應、即時推送給前端——不需要寫 SQL、不需要維護 WebSocket、不需要自己調校資料庫,還具備 ACID 事務與端到端型別安全。
如果你正在選型後端服務(尤其是 React/Next.js 全端開發或 AI Agent 應用),這篇文章會幫你搞清楚 Convex 到底是什麼、跟 Firebase/Supabase 差在哪、什麼情境下該選它。
一句話總結
Convex 把「資料庫 + 後端邏輯 + 即時同步」打包成一個全 TypeScript 的開發體驗——資料庫查詢用 TypeScript 寫、在伺服器執行、變更自動推送前端,開發者不用管 SQL、ORM、WebSocket 連線或資料庫調優。
核心架構:反應式資料庫
Convex 的核心概念是反應式資料庫(Reactive Database):
- 資料庫查詢完全用 TypeScript 撰寫,直接在資料庫中執行
- 就像 React 元件對 state 變化做出反應,Convex 的查詢會對資料庫變更即時反應
- 查詢依賴的資料一變,Convex 自動重跑查詢並主動推送更新給用戶端
它採用「文件-關聯(Document-Relational)」模型:可以把 JSON 嵌套物件存進資料庫,也能用文件 ID 建立表與表之間的關聯。
三種伺服器函數
所有後端邏輯放在 convex/ 資料夾,分三類:
| 函數類型 | 用途 | 特性 |
|---|---|---|
| Query(查詢) | 唯讀資料讀取 | 純函數,不允許寫入、不允許非確定性外部網路請求 |
| Mutation(變更) | 資料庫讀寫 | 自動包裝成事務(Transaction),寫入衝突自動重試,免寫 begin/end |
| Action(動作) | 一般伺服器邏輯 | 可呼叫外部 API、LLM、發 Email;要讀寫資料庫得呼叫 query/mutation |
三類函數都支援排程器(Scheduler)與 Cron 做持久性延遲執行。
端到端 TypeScript
資料庫 schema、伺服器函數、前端 React 元件全部用 TypeScript。schema 一變,前端的 useQuery 等 hooks 型別自動同步更新——不用手動跑 code generation。AI 寫程式時出錯,型別檢查會在 ship 前抓到。
主要功能
| 功能 | 說明 |
|---|---|
| 即時同步(Realtime Sync) | 前端用 useQuery hook 自動訂閱,資料變更自動推送,免去手寫 useEffect 監聽器 |
| ACID 事務 | 可序列化隔離 + 樂觀並行控制,並行寫入絕不損壞資料 |
| 向量搜尋 | 內建原生向量索引,支援混合向量/文字搜尋(RAG 直接可用) |
| Durable Workflows | @convex-dev/workflow 元件,伺服器重啟也存活的多步驟流程,支援動態分支、迴圈、awaitEvent 等待外部事件 |
| AI Agents | 官方 @convex-dev/agent 元件,內建 threads、context、向量搜尋,把耗時的 Agent 工作流與前端 UI 隔離 |
| Components | 沙盒化的開源模組(Stripe、Resend、Twilio、WorkOS、PostHog 等),npm install 即用 |
Convex vs Firebase vs Supabase
| 面向 | Convex | Firebase | Supabase |
|---|---|---|---|
| 核心模型 | 全 TypeScript 反應式資料庫 | NoSQL 文件資料庫 | Postgres 關係型資料庫 |
| 資料庫語言 | TypeScript(免寫 SQL) | NoSQL API | SQL |
| 型別安全 | 端到端自動推導 | 弱 | 需手動維護 |
| 即時同步 | 內建,同一個 WebSocket 通道 | 內建 | 內建但高併發需自行維護 |
| 一致性 | 讀寫同通道,絕對一致 | 事件式(可能不一致) | 讀寫不同通道,可能短暫不一致 |
| 資料庫調優 | Convex 全權負責 | Google 負責 | 開發者共同承擔 |
| 開源 | 開源可自架 | 閉源 | 開源可自架 |
| 社群 | 較小(快速成長中) | 最大 | 大 |
選擇建議:
- Convex:想要極致開發速度 + 型別安全 + AI Agent/RAG 原生支援的 TypeScript 團隊
- Firebase:需要最大社群、最成熟生態,能接受 NoSQL 限制與廠商鎖定
- Supabase:需要 Postgres/SQL 生態(pgvector、PostGIS、RLS),或需要歐盟資料駐留
定價
| 方案 | 價格 | 內容 |
|---|---|---|
| 免費版 | $0 | 每月 100 萬次函數調用、0.5 GB 儲存、40 個部署專案 |
| Pro | $25/開發者/月 | 超額按用量計費 |
實際成本模擬(中等讀寫負擔的 SaaS):
- 1,000 MAU:~$0(完全落在免費額度內)
- 10,000 MAU:~$25/月
- 100,000 MAU:~$75–$300/月
社群與採用數據
- npm:每週 1.2M–1.3M 次下載
- GitHub:convex-backend 21,081 stars
- 採用案例:Candle 擴充到數十萬 MAU;ClawHub(OpenClaw)一週內撐到每週 100 萬活躍用戶
創辦人背景(Dropbox 血統)
| 創辦人 | 職位 | 背景 |
|---|---|---|
| Jamie Turner | CEO | Dropbox 高級工程總監(Storage、Databases、Business Platform) |
| James Cowling | CTO | Dropbox 高級首席工程師,主導 multi-exabyte 儲存系統遷移出 S3;MIT 博士,導師是圖靈獎得主 Barbara Liskov |
這解釋了為什麼 Convex 對分散式系統、事務與一致性這麼講究——創辦人就是做這個的。
適合的應用場景
- 高即時協作應用:多人編輯、Figma/Linear 類工具、狀態需零延遲同步的產品
- React/Next.js/SvelteKit 全端開發:減少一半以上的前後端橋接程式碼,且完美契合 Cursor、Claude Code 等 AI 寫碼工具
- AI Agent 與 RAG 應用:內建向量搜尋、對話歷史持久化、Durable Workflows(能撐住長時間執行或第三方 API 中斷)
- 小團隊快速出 MVP/SaaS:免去 ORM、WebSocket 維護與資料庫調校,一人或小團隊就能上生產環境
快速開始
# 建立新專案
npm create convex@latest
# 進入專案後啟動 dev server
npx convex dev
# 前端呼叫(React 範例)
import { useQuery } from "convex/react";
import { api } from "./_generated/api";
function App() {
// 資料變更時自動 re-render,免寫 useEffect 監聽器
const messages = useQuery(api.messages.list);
return <ul>{messages?.map(m => <li key={m._id}>{m.text}</li>)}</ul>;
}
常見問題 FAQ
Convex 是開源的嗎?
是。convex-backend 在 GitHub 上開源(21K+ stars),可以自架;託管雲端版(Convex Cloud)目前主要支援美國地區,歐盟用戶可自架開源版本。
Convex 跟 Supabase 哪個好?
取決於需求:想要 Postgres/SQL 生態(pgvector、RLS、歐盟駐留)選 Supabase;想要全 TypeScript 開發體驗、極致型別安全、AI Agent 原生支援選 Convex。Convex 的最大優勢是資料庫調優全包 + 讀寫同通道的一致性保證。
Convex 免費嗎?
有免費版:每月 100 萬次函數調用、0.5 GB 儲存、40 個部署專案。1 萬 MAU 以下的小型 SaaS 通常完全落在免費或最低 Pro 費用內。
一定要用 React 嗎?
不是。Convex 支援多種框架(也有原生 JS client),但 React 整合最成熟(useQuery hooks 是招牌功能)。
延伸閱讀
原始來源:Convex 官方網站、Convex 文件
