Documentation can be found below, on the Supabase Developer Documentation and additionally in the Generated API Docs.
**CHANGELOG is available in the repository root. **
- The
supabase-csharpNuget package has been renamed toSupabaseand a depreciation notice set to encourage adoption. - Almost all APIs stay the same when migrating from v0.16.x except the change in namespace from
PostgresttoSupabase.Postgrest. Some minor refactoring will be required in the codebase. - The assembly name has been changed from
supabasetoSupabase.
- Integration with Supabase.Realtime
- Realtime listeners for database changes
- Integration with Postgrest
- Access your database using a REST API generated from your schema & database functions
- Integration with Gotrue
- User authentication, including OAuth, email/password, and native sign-in
- Integration with Supabase Storage
- Store files in S3 with additional managed metadata
- Integration with Supabase Edge Functions
- Run serverless functions on the edge
- Nuget Release
- To get started, create a new project in the Supabase Admin Panel.
- Grab your Supabase URL and Supabase Public Key from the Admin Panel (Settings -> API Keys).
- Initialize the client!
Reminder: supabase-csharp has some APIs that require the service_key rather than the public_key (for instance:
the administration of users, bypassing database roles, etc.). If you are using
the service_key be sure it is not exposed client side. Additionally, if you need to use both a service account and
a public/user account, please do so using a separate client instance for each.
The clients emit traces and metrics through System.Diagnostics, so you can wire them into
OpenTelemetry (or any ActivityListener/MeterListener) without the clients taking a dependency on
the OpenTelemetry packages. Emission is zero-cost while nothing is listening, so it is always on and
stays silent until you subscribe.
Rather than registering each client's source by hand, use SupabaseDiagnostics.SourceNames, which
gathers the names of every instrumented client. Each client shares one name between its
ActivitySource and its Meter, so the same list works for tracing and metrics:
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
using Supabase;
// Requires the OpenTelemetry.Extensions.Hosting and an exporter package (e.g. OTLP) in your app.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource(SupabaseDiagnostics.SourceNames.ToArray())
.AddOtlpExporter())
.WithMetrics(metrics => metrics
.AddMeter(SupabaseDiagnostics.SourceNames.ToArray())
.AddOtlpExporter());This covers the Auth (Gotrue), Postgrest, Functions, and Storage clients. Realtime is not yet instrumented, so no websocket telemetry is emitted. URLs are recorded without their query string, and no token, credential, or payload is placed in a tag. See each client's own README for the specific spans and metrics it produces.
- Getting Started
- Unity
- Desktop/Mobile Clients (e.g. Xamarin, MAUI, etc.)
- Server-Side Applications
- Release Notes/Breaking Changes
- Using the Client
- Examples
Join the ranks! See a problem? Help fix it!
We are more than happy to have contributions! Please submit a PR.