---
title: 'Use Supabase with SolidJS'
subtitle: 'Learn how to create a Supabase project, add some sample data to your database, and query the data from a SolidJS app.'
breadcrumb: 'Framework Quickstarts'
---
<$Partial path="quickstart_db_setup.mdx" />
## 3. Create a SolidJS app
Create a SolidJS app using the `degit` command.
```bash
npx degit solidjs/templates/vanilla/basic my-app
```
The template ships with a `pnpm-lock.yaml`. Remove it so `npm install` in the next steps doesn't create a second, conflicting lockfile:
```bash
rm my-app/pnpm-lock.yaml
```
## 4. Set up AI tooling (optional)
<$Partial path="quickstart_ai_tooling.mdx" />
## 5. Install the Supabase client library
The fastest way to get started is to use the `supabase-js` client library which provides a convenient interface for working with Supabase from a SolidJS app.
Navigate to the SolidJS app and install `supabase-js`.
```bash
cd my-app && npm install @supabase/supabase-js
```
## 6. Declare Supabase environment variables
Create a `.env.local` file and populate with your Supabase connection variables that you can get from the helper below, or [from the project **Connect** panel](/dashboard/project/_?showConnect=true&framework=solidjs&connectTab=frameworks):
```text name=.env.local
VITE_SUPABASE_URL=
VITE_SUPABASE_PUBLISHABLE_KEY=
```
<$Partial path="api_settings.mdx" variables={{ "framework": "solidjs", "tab": "frameworks" }} />
## 7. Create the Supabase client
Create a `src/lib` directory in your SolidJS app, create a file called `supabaseClient.ts`, and add the following code to initialize the Supabase client:
```ts name=src/lib/supabaseClient.ts
import { createClient } from '@supabase/supabase-js'
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL
const supabasePublishableKey = import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
export const supabase = createClient(supabaseUrl, supabasePublishableKey)
```
## 8. Query data from the app
In `src/App.tsx`, add a `getInstruments` function to fetch the data and display the query result to the page.
```tsx name=src/App.tsx
import { createResource, For, Show } from 'solid-js'
import { supabase } from './lib/supabaseClient'
async function getInstruments() {
const { data, error } = await supabase.from('instruments').select()
if (error) {
throw error
}
return data
}
function App() {
const [instruments] = createResource(getInstruments)
return (
Error loading instruments: {instruments.error?.message}
}
>
{(instrument) =>
{instrument.name}
}
)
}
export default App
```
## 9. Start the app
Start the app and go to http://localhost:3000 in a browser and you should see the list of instruments.
```bash
npm run dev
```
<$Partial path="quickstart_going_to_production.mdx" />
## Next steps
- Set up [Auth](/docs/guides/auth) for your app
- [Insert more data](/docs/guides/database/import-data) into your database
- Upload and serve static files using [Storage](/docs/guides/storage)