--- id: client-libraries title: Client Libraries description: 'Supabase provides client libraries in several languages.' --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; The [Supabase Client](/docs/client/supabase-client) makes it simple for developers to build secure and scalable products. ## Auth Create new users using [`signUp()`](/docs/client/auth-signup). ```js const { error, data } = await supabase.auth.signUp({ email: 'example@email.com', password: 'example-password', }) ``` ```py # Not yet implemented ``` Existing users can log in using [`signIn()`](/docs/client/auth-signin). ```js const { error, data } = await supabase.auth.signIn({ email: 'example@email.com', password: 'example-password', }) ``` ```py # Not yet implemented ``` If there is an email, but no password passed to [`signIn()`](/docs/client/auth-signin), the user will receive a magic link. ```js const { error, data } = await supabase.auth.signIn({ email: 'example@email.com' }) ``` ```py # Not yet implemented ``` Third party logins are also handled through [`signIn()`](/docs/client/auth-signin). ```js const { user, error } = await supabase.auth.signIn({ // provider can be 'github', 'google', 'gitlab', or 'bitbucket' provider: 'github' }) ``` ```py # Not yet implemented ``` ## Managing data Since Postgres is a Relational database, the client makes it simple to query tables and fetch related data in one round-trip, using [`select()`](/docs/client/select). ```js const { data, error } = await supabase .from('countries') .select(` name, cities ( name ) `) ``` ```py # Not yet implemented ``` You can do advanced [filtering](/docs/client/using-filters) to extract only the data that you need. ```js const { data, error } = await supabase .from('cities') .select('name, country_id') .lt('country_id', 100) .limit(10) ``` ```py # Not yet implemented ``` You can create data easily using [`insert()`](/docs/client/insert). ```js const { data, error } = await supabase .from('cities') .insert([ { name: 'The Shire', country_id: 554 }, { name: 'Rohan', country_id: 555 }, ]) ``` ```py # Not yet implemented ``` ## Realtime Changes The Supabase client makes it simple to listen to realtime database changes, using [`subscribe()`](/docs/client/subscribe). ```js const mySubscription = supabase .from('countries') .on('*', payload => { console.log('Change received!', payload) }) .subscribe() ``` ```py # Not yet implemented ``` You can even [listen to Row Level changes](/docs/client/subscribe#listening-to-row-level-changes). ```js const mySubscription = supabase .from('countries:id.eq.200') .on('UPDATE', handleRecordUpdated) .subscribe() ``` ```py # Not yet implemented ``` ## Next steps - View the [Client Docs](/docs/client/supabase-client) - Sign in: [app.supabase.io](https://app.supabase.io)