[GH-ISSUE #2748] Do not know how to serialize a BigInt error after adding custom signUpEmailPhone plugin #26653

Closed
opened 2026-04-17 17:18:11 -05:00 by GiteaMirror · 1 comment
Owner

Originally created by @devmdfaiz on GitHub (May 22, 2025).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/2748

Describe the bug

After adding the signUpEmailPhone plugin in my Better Auth configuration, I'm consistently getting the following error when fetching session data:

TypeError: Do not know how to serialize a BigInt

This error appears only after I added the custom fields (phone, countryCode) via the plugin. I confirmed that my phone field is of type varchar, so it shouldn't be the issue.

Reproduction steps

Add the following Better Auth plugin:

export function signUpEmailPhone() {
  return {
    id: "sign-up-email-phone",
    schema: {
      user: {
        fields: {
          phone: {
            type: "string",
            required: true,
          },
          countryCode: {
            type: "string",
            required: true,
          },
        },
      },
    },
  } satisfies BetterAuthPlugin;
}

My database schema for the user table (using drizzle-orm) looks like:

export const user = pgTable("user", {
  id: text("id").primaryKey(),
  name: text("name").notNull(),
  email: text("email").notNull().unique(),
  countryCode: text("country_code"),
  phone: varchar("phone", { length: 10 }).unique(),
  emailVerified: boolean("email_verified").notNull(),
  image: text("image"),
  createdAt: timestamp("created_at").notNull(),
  updatedAt: timestamp("updated_at").notNull(),
  role: text("role"),
  banned: boolean("banned"),
  banReason: text("ban_reason"),
  banExpires: timestamp("ban_expires"),
  twoFactorEnabled: boolean("two_factor_enabled"),
});

After signup or login, when I try to fetch the session using:

const { data } = useSession();

I get the error mentioned above.

Expected behavior

Session should return properly without attempting to serialize any BigInt field, especially when none are explicitly defined in my schema.

Screenshots / Logs

# SERVER_ERROR:  TypeError: Do not know how to serialize a BigInt
    at JSON.stringify (<anonymous>)
    at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15)
    at api.<computed> (file:///D:/Web%20Project/Telepie/Telepie-Branch/adding-better-auth/node_modules/.pnpm/better-auth@1.2.8/node_modules/better-auth/dist/api/index.mjs:534:46)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at processRequest (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:179:22)
    at handler (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:200:16)
    at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20)
# SERVER_ERROR:  TypeError: Do not know how to serialize a BigInt
    at JSON.stringify (<anonymous>)
    at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15)
l\src\router.ts:200:16)
    at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20)
# SERVER_ERROR:  TypeError: Do not know how to serialize a BigInt
    at JSON.stringify (<anonymous>)
    at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15)
    at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15)
call\src\to-response.ts:78:15)
    at api.<computed> (file:///D:/Web%20Project/Telepie/Telepie-Branch/adding-better-auth/node_modules/.pnpm/better-auth@1.2.8/node_modules/better-auth/dist/api/index.mjs:534:46)
odules/better-auth/dist/api/index.mjs:534:46)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at processRequest (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:179:22)
    at handler (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:200:16)
    at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20)

Environment:

better-auth version: ^1.2.7

Database: PostgreSQL

ORM: Drizzle ORM

Runtime: Node.js 20.14.0

Using: Express.js

Originally created by @devmdfaiz on GitHub (May 22, 2025). Original GitHub issue: https://github.com/better-auth/better-auth/issues/2748 Describe the bug After adding the signUpEmailPhone plugin in my Better Auth configuration, I'm consistently getting the following error when fetching session data: `TypeError: Do not know how to serialize a BigInt` This error appears only after I added the custom fields (phone, countryCode) via the plugin. I confirmed that my phone field is of type varchar, so it shouldn't be the issue. Reproduction steps Add the following Better Auth plugin: ``` export function signUpEmailPhone() { return { id: "sign-up-email-phone", schema: { user: { fields: { phone: { type: "string", required: true, }, countryCode: { type: "string", required: true, }, }, }, }, } satisfies BetterAuthPlugin; } ``` My database schema for the user table (using drizzle-orm) looks like: ``` export const user = pgTable("user", { id: text("id").primaryKey(), name: text("name").notNull(), email: text("email").notNull().unique(), countryCode: text("country_code"), phone: varchar("phone", { length: 10 }).unique(), emailVerified: boolean("email_verified").notNull(), image: text("image"), createdAt: timestamp("created_at").notNull(), updatedAt: timestamp("updated_at").notNull(), role: text("role"), banned: boolean("banned"), banReason: text("ban_reason"), banExpires: timestamp("ban_expires"), twoFactorEnabled: boolean("two_factor_enabled"), }); ``` After signup or login, when I try to fetch the session using: `const { data } = useSession();` I get the error mentioned above. Expected behavior Session should return properly without attempting to serialize any BigInt field, especially when none are explicitly defined in my schema. Screenshots / Logs ``` # SERVER_ERROR: TypeError: Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15) at api.<computed> (file:///D:/Web%20Project/Telepie/Telepie-Branch/adding-better-auth/node_modules/.pnpm/better-auth@1.2.8/node_modules/better-auth/dist/api/index.mjs:534:46) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at processRequest (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:179:22) at handler (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:200:16) at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20) # SERVER_ERROR: TypeError: Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15) l\src\router.ts:200:16) at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20) # SERVER_ERROR: TypeError: Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15) at toResponse (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\to-response.ts:78:15) call\src\to-response.ts:78:15) at api.<computed> (file:///D:/Web%20Project/Telepie/Telepie-Branch/adding-better-auth/node_modules/.pnpm/better-auth@1.2.8/node_modules/better-auth/dist/api/index.mjs:534:46) odules/better-auth/dist/api/index.mjs:534:46) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at processRequest (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:179:22) at handler (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\router.ts:200:16) at <anonymous> (D:\Web Project\Telepie\Telepie-Branch\adding-better-auth\node_modules\.pnpm\better-call@1.0.9\node_modules\better-call\src\adapters\node\index.ts:11:20) ``` Environment: better-auth version: ^1.2.7 Database: PostgreSQL ORM: Drizzle ORM Runtime: Node.js 20.14.0 Using: Express.js
GiteaMirror added the locked label 2026-04-17 17:18:11 -05:00
Author
Owner

@Kinfe123 commented on GitHub (May 31, 2025):

have made a pr on better-call. please follow up there.

<!-- gh-comment-id:2925773481 --> @Kinfe123 commented on GitHub (May 31, 2025): have made a [pr](https://github.com/Bekacru/better-call/pull/21) on better-call. please follow up there.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#26653