docs: Examples Key changes (#45170)

## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Documentation**
* Updated examples and guides to use Supabase publishable (client) keys
instead of anon keys for client-side usage across frameworks and
platforms.
* Renamed environment variable examples and .env templates to reflect
publishable key naming.
* Adjusted sample requests and client-init examples to send/use the
publishable key via the apikey header where applicable.
* Updated references from service_role to secret for server-side
credential guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: fadymak <fady@fadymak.com>
This commit is contained in:
authored and GitHub committed 2026-05-04 12:58:16 +02:00
1 parent 3d17ac15d9
commit d8bd6b047c
87 files changed
+187 -159

No files matched your search

+1 -1
View File
@@ -1,5 +1,5 @@
EXPO_PUBLIC_SUPABASE_URL=""
EXPO_PUBLIC_SUPABASE_ANON_KEY=""
EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY=""
EXPO_PUBLIC_APPLE_AUTH_SERVICE_ID=""
EXPO_PUBLIC_APPLE_AUTH_REDIRECT_URI=""
EXPO_PUBLIC_GOOGLE_AUTH_WEB_CLIENT_ID=""
@@ -21,7 +21,7 @@ const ExpoSecureStoreAdapter = {
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL ?? '',
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? '',
process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY ?? '',
{
auth: {
storage: ExpoSecureStoreAdapter as any,
@@ -22,7 +22,7 @@ const ExpoWebSecureStoreAdapter = {
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL ?? '',
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? '',
process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY ?? '',
{
auth: {
storage: ExpoWebSecureStoreAdapter,
+1 -1
View File
@@ -11,7 +11,7 @@ import 'package:mfa_app/pages/mfa/enroll_page.dart';
void main() async {
await Supabase.initialize(
url: 'YOUR_SUPABASE_URL',
anonKey: 'YOUR_ANON_KEY',
publishableKey: 'YOUR_PUBLISHABLE_KEY',
);
runApp(const MyApp());
}
@@ -6,7 +6,7 @@ void main() async {
/// TODO: update Supabase credentials with your own
await Supabase.initialize(
url: 'YOUR_SUPABASE_URL',
anonKey: 'YOUR_ANON_KEY',
publishableKey: 'YOUR_PUBLISHABLE_KEY',
);
runApp(const MyApp());
}
+1 -1
View File
@@ -1,3 +1,3 @@
# Get your keys at https://supabase.com/dashboard/project/_/settings/api
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key
+1 -1
View File
@@ -8,7 +8,7 @@ const client = hc<AppType>('/')
const supabase = createBrowserClient(
import.meta.env.VITE_SUPABASE_URL!,
import.meta.env.VITE_SUPABASE_ANON_KEY!
import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY!
)
function App() {
@@ -16,7 +16,7 @@ export const getSupabase = (c: Context) => {
type SupabaseEnv = {
VITE_SUPABASE_URL: string
VITE_SUPABASE_ANON_KEY: string
VITE_SUPABASE_PUBLISHABLE_KEY: string
}
export const supabaseMiddleware = (): MiddlewareHandler => {
@@ -24,14 +24,14 @@ export const supabaseMiddleware = (): MiddlewareHandler => {
const supabaseEnv = env<SupabaseEnv>(c)
const supabaseUrl = supabaseEnv.VITE_SUPABASE_URL ?? import.meta.env.VITE_SUPABASE_URL
const supabasePublishableKey =
supabaseEnv.VITE_SUPABASE_ANON_KEY ?? import.meta.env.VITE_SUPABASE_ANON_KEY
supabaseEnv.VITE_SUPABASE_PUBLISHABLE_KEY ?? import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
if (!supabaseUrl) {
throw new Error('SUPABASE_URL missing!')
}
if (!supabasePublishableKey) {
throw new Error('SUPABASE_ANON_KEY missing!')
throw new Error('SUPABASE_PUBLISHABLE_KEY missing!')
}
const supabase = createServerClient(supabaseUrl, supabasePublishableKey, {
+1 -1
View File
@@ -1,3 +1,3 @@
# Get your keys at https://supabase.com/dashboard/project/_/settings/api
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key
@@ -23,17 +23,17 @@ export const supabaseMiddleware = (): MiddlewareHandler => {
return async (c, next) => {
const supabaseEnv = env<SupabaseEnv>(c)
const supabaseUrl = supabaseEnv.SUPABASE_URL
const supabaseAnonKey = supabaseEnv.SUPABASE_PUBLISHABLE_KEY
const supabasePublishableKey = supabaseEnv.SUPABASE_PUBLISHABLE_KEY
if (!supabaseUrl) {
throw new Error('SUPABASE_URL missing!')
}
if (!supabaseAnonKey) {
if (!supabasePublishableKey) {
throw new Error('SUPABASE_PUBLISHABLE_KEY missing!')
}
const supabase = createServerClient(supabaseUrl, supabaseAnonKey, {
const supabase = createServerClient(supabaseUrl, supabasePublishableKey, {
cookies: {
getAll() {
return parseCookieHeader(c.req.header('Cookie') ?? '')
@@ -21,7 +21,7 @@ const ExpoSecureStoreAdapter = {
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL ?? '',
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? '',
process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY ?? '',
{
auth: {
storage: ExpoSecureStoreAdapter as any,
@@ -22,7 +22,7 @@ const ExpoWebSecureStoreAdapter = {
export const supabase = createClient(
process.env.EXPO_PUBLIC_SUPABASE_URL ?? '',
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ?? '',
process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY ?? '',
{
auth: {
storage: ExpoWebSecureStoreAdapter,
@@ -1,2 +1,2 @@
EXPO_PUBLIC_SUPABASE_URL=YOUR_SUPABASE_URL
EXPO_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY=YOUR_SUPABASE_PUBLISHABLE_KEY
@@ -4,9 +4,9 @@ import AsyncStorage from '@react-native-async-storage/async-storage'
import { createClient, processLock } from '@supabase/supabase-js'
const supabaseUrl = process.env.EXPO_PUBLIC_SUPABASE_URL!
const supabaseAnonKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY!
const supabasePublishableKey = process.env.EXPO_PUBLIC_SUPABASE_PUBLISHABLE_KEY!
export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
export const supabase = createClient(supabaseUrl, supabasePublishableKey, {
auth: {
...(Platform.OS !== 'web' ? { storage: AsyncStorage } : {}),
autoRefreshToken: true,