--- id: initializing title: 'Initializing' slug: initializing custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' You can initialize a new Supabase client using the `createClient()` method. The Supabase client is your entrypoint to the rest of the Supabase functionality and is the easiest way to interact with everything we offer within the Supabase ecosystem. ## Parameters ## Examples ### createClient() ```js import { createClient } from '@supabase/supabase-js' // Create a single supabase client for interacting with your database const supabase = createClient( 'https://xyzcompany.supabase.co', 'public-anon-key' ) ``` ### With additional parameters ```js import { createClient } from '@supabase/supabase-js' const options = { schema: 'public', headers: { 'x-my-custom-header': 'my-app-name' }, autoRefreshToken: true, persistSession: true, detectSessionInUrl: true, } const supabase = createClient( 'https://xyzcompany.supabase.co', 'public-anon-key', options ) ``` ### API schemas ```js import { createClient } from '@supabase/supabase-js' // Provide a custom schema. Defaults to "public". const supabase = createClient( 'https://xyzcompany.supabase.co', 'public-anon-key', { schema: 'other_schema', } ) ``` By default the API server points to the `public` schema. You can enable other database schemas within the Dashboard. Go to `Settings > API > Schema` and add the schema which you want to expose to the API. Note: each client connection can only access a single schema, so the code above can access the `other_schema` schema but cannot access the `public` schema. ### Custom `fetch` implementation ```js import { createClient } from '@supabase/supabase-js' const supabase = createClient( 'https://xyzcompany.supabase.co', 'public-anon-key', { fetch: fetch.bind(globalThis), } ) ``` `supabase-js` uses the [`cross-fetch`](https://www.npmjs.com/package/cross-fetch) library to make HTTP requests, but an alternative `fetch` implementation can be provided as an option. This is most useful in environments where `cross-fetch` is not compatible (for instance Cloudflare Workers).