auth-helpers
auth-helpers copied to clipboard
Custom schema implementations don't work with the supabase ssr package
Bug report
- [x] I confirm this is a bug with Supabase, not with my own application.
- [x] I confirm I have searched the Docs, GitHub Discussions, and Discord.
Describe the bug
I tried creating a client with my custom schema named tasks
. But it throws errors and doesn't work.
Errors in the editor
Code for the request:
import { createClient } from "@/utils/supabase/client"; // this is the client with ssr as mentioned above
const supabase = createClient();
const { data, error } = await supabase.from("tb_worker").select();
console.log("🚀 ~ getData ~ error:\n", error);
Errors in the console when I try to request for the data
{
"code": "42P01",
"details": null,
"hint": null,
"message": "relation \"public.tb_worker\" does not exist"
}
To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
- Create a sample nextjs project with supabase from the docs
- Download sample database types for any project with custom schema.
- Update either the browser client or the server client with the custom schema like this
import { createBrowserClient } from "@supabase/ssr";
import { Database } from "../types/database";
export const createClient = () =>
createBrowserClient<Database>(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
{
db: {
schema: "tasks", // I'm using custom schema named tasks. You can change it to your schema name
},
}
);
- At this stage, you'll get typescript errors.
- You can still try to query for the data from the custom schema and will get the same errors.
import { createClient } from "@/utils/supabase/client"; // this is the client with ssr as mentioned above
const supabase = createClient();
const { data, error } = await supabase.from("tb_worker").select();
console.log("🚀 ~ getData ~ error:\n", error);
Expected behavior
Should get the data. It works perfectly with the supabase js library. Example:
page.tsx
"use client";
import { createSupbaseClent } from "@/utils/supabase/supabaseClient";
import { useEffect, useState } from "react";
export default function Page() {
const [notes, setNotes] = useState<any[] | null>(null);
const supabase = createSupbaseClent();
useEffect(() => {
const getData = async () => {
const { data, error } = await supabase.from("tb_worker").select();
console.log("🚀 ~ getData ~ error:\n", error);
setNotes(data);
};
getData();
}, []);
if (!notes) return <div>Loading ...</div>;
return (
<>
<pre>{JSON.stringify(notes, null, 2)}</pre>
</>
);
}
System information
- OS: [linux: Manjaro]
- Version of supabase-js: [2.39.7]
- Version of Node.js: [20]
Additional context
I've checked wherther it's an issue of Typescript types generated by the database type generation in the supabase dashboard. Maybe this bug is also related to that as well.
This seems to still be an issue