@fluxbase/sdk-react
v2026.3.5
Published
React hooks for Fluxbase SDK
Maintainers
Readme
@fluxbase/sdk-react
React hooks for Fluxbase - Backend as a Service.
Features
- React Hooks - Idiomatic React hooks for all Fluxbase features
- TanStack Query - Built on React Query for optimal data fetching
- Type-safe - Full TypeScript support
- Auto-refetch - Smart cache invalidation and refetching
- Optimistic Updates - Instant UI updates
- SSR Support - Works with Next.js and other SSR frameworks
Installation
# npm
npm install @fluxbase/sdk @fluxbase/sdk-react @tanstack/react-query
# pnpm
pnpm add @fluxbase/sdk @fluxbase/sdk-react @tanstack/react-queryQuick Start
import { createClient } from "@fluxbase/sdk";
import { FluxbaseProvider, useAuth, useTable } from "@fluxbase/sdk-react";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
// Create clients
const fluxbaseClient = createClient({ url: "http://localhost:8080" });
const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<FluxbaseProvider client={fluxbaseClient}>
<YourApp />
</FluxbaseProvider>
</QueryClientProvider>
);
}
function YourApp() {
const { user, signIn, signOut } = useAuth();
const { data: products } = useTable("products", (q) =>
q.select("*").eq("active", true).order("created_at", { ascending: false })
);
return (
<div>
{user ? (
<>
<p>Welcome {user.email}</p>
<button onClick={signOut}>Sign Out</button>
</>
) : (
<button
onClick={() =>
signIn({ email: "[email protected]", password: "pass" })
}
>
Sign In
</button>
)}
<h2>Products</h2>
{products?.map((product) => (
<div key={product.id}>{product.name}</div>
))}
</div>
);
}Available Hooks
Authentication
useAuth()- Complete auth state and methodsuseUser()- Current user datauseSession()- Current sessionuseSignIn()- Sign in mutationuseSignUp()- Sign up mutationuseSignOut()- Sign out mutationuseUpdateUser()- Update user profile
Database
useTable()- Query table with filters and orderinguseFluxbaseQuery()- Custom query hookuseInsert()- Insert rowsuseUpdate()- Update rowsuseUpsert()- Insert or updateuseDelete()- Delete rowsuseFluxbaseMutation()- Generic mutation hook
Realtime
useRealtime()- Subscribe to database changesuseTableSubscription()- Auto-refetch on changesuseTableInserts()- Listen to insertsuseTableUpdates()- Listen to updatesuseTableDeletes()- Listen to deletes
Storage
useStorageUpload()- Upload filesuseStorageList()- List files in bucketuseStorageDownload()- Download filesuseStorageDelete()- Delete filesuseStorageSignedUrl()- Generate signed URLsuseStoragePublicUrl()- Get public URLs
RPC (PostgreSQL Functions)
useRPC()- Call PostgreSQL function (query)useRPCMutation()- Call PostgreSQL function (mutation)useRPCBatch()- Call multiple functions in parallel
Admin (Management & Operations)
useAdminAuth()- Admin authentication state and login/logoutuseUsers()- User management with pagination and CRUDuseAPIKeys()- API key creation and managementuseWebhooks()- Webhook configuration and delivery monitoringuseAppSettings()- Application-wide settings managementuseSystemSettings()- System key-value settings storage
📚 Complete Admin Hooks Guide - Comprehensive admin dashboard documentation
Documentation
Core Guides
- Getting Started - Installation and setup
- React Hooks - Comprehensive hooks documentation with examples
- Database Operations - Query building and data operations
API Reference
- React Hooks API - Auto-generated from source code
- Core SDK API - Core TypeScript SDK reference
TypeScript Support
All hooks are fully typed. Define your table schemas for complete type safety:
interface Product {
id: string
name: string
price: number
category: string
}
function ProductList() {
const { data } = useTable<Product>('products', (q) => q.select('*'))
// data is typed as Product[] | undefined
return <div>{data?.[0]?.name}</div>
}Examples
Check out working examples in the /example directory:
- React with Vite
- Next.js App Router
- Next.js Pages Router
- Authentication flows
- Realtime features
- File uploads
Contributing
Contributions are welcome! Please read our Contributing Guide for details.
License
MIT © Fluxbase
