[GH-ISSUE #4948] Custom subscription column not included in authClient.subscription.list and auth.api.listActiveSubscriptions #27441

Closed
opened 2026-04-17 18:27:46 -05:00 by GiteaMirror · 7 comments
Owner

Originally created by @akmalmzamri on GitHub (Sep 27, 2025).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/4948

Is this suited for github?

  • Yes, this is suited for github

To Reproduce

Add a new column to the schema

export const subscriptions = pgTable("subscriptions", {
  // other columns
  downgradeAtPeriodEnd: boolean("downgrade_at_period_end").default(false).notNull(),
})

I had the impression that it will be automatically included in the list subscription API, either via the client authClient.subscription.list or the server auth.api.listActiveSubscriptions. Unfortunately, both calls didn't include the newly added column.

I've looked into the code, but it doesn't seems to do any filtering out
350ccfd389/packages/stripe/src/index.ts (L927-L977)

Not sure if this is a bug or if I'm missing out some configuration

Current vs. Expected behavior

I expected the newly added column will be returned by the list subscription API, but it is not

What version of Better Auth are you using?

1.3.18

System info

{
  "system": {
    "platform": "win32",
    "arch": "x64",
    "version": "Windows 10 Pro",
    "release": "10.0.19045",
    "cpuCount": 12,
    "cpuModel": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz",
    "totalMemory": "31.92 GB",
    "freeMemory": "4.17 GB"
  },
  "node": {
    "version": "v20.10.0",
    "env": "development"
  },
  "packageManager": {
    "name": "npm",
    "version": "10.2.3"
  },
  "frameworks": [
    {
      "name": "next",
      "version": "15.4.5"
    },
    {
      "name": "react",
      "version": "^19.1.0"
    }
  ],
  "databases": [
    {
      "name": "postgres",
      "version": "^3.4.7"
    },
    {
      "name": "drizzle",
      "version": "0.44.4"
    }
  ],
  "betterAuth": {
    "version": "1.3.18",
    "config": null
  }
}

Which area(s) are affected? (Select all that apply)

Package

Auth config (if applicable)


Additional context

No response

Originally created by @akmalmzamri on GitHub (Sep 27, 2025). Original GitHub issue: https://github.com/better-auth/better-auth/issues/4948 ### Is this suited for github? - [x] Yes, this is suited for github ### To Reproduce Add a new column to the schema ``` export const subscriptions = pgTable("subscriptions", { // other columns downgradeAtPeriodEnd: boolean("downgrade_at_period_end").default(false).notNull(), }) ``` I had the impression that it will be automatically included in the list subscription API, either via the client `authClient.subscription.list` or the server `auth.api.listActiveSubscriptions`. Unfortunately, both calls didn't include the newly added column. I've looked into the code, but it doesn't seems to do any filtering out https://github.com/better-auth/better-auth/blob/350ccfd389e3ce9d0ad239aee4d254f2e331d00b/packages/stripe/src/index.ts#L927-L977 Not sure if this is a bug or if I'm missing out some configuration ### Current vs. Expected behavior I expected the newly added column will be returned by the list subscription API, but it is not ### What version of Better Auth are you using? 1.3.18 ### System info ```bash { "system": { "platform": "win32", "arch": "x64", "version": "Windows 10 Pro", "release": "10.0.19045", "cpuCount": 12, "cpuModel": "Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz", "totalMemory": "31.92 GB", "freeMemory": "4.17 GB" }, "node": { "version": "v20.10.0", "env": "development" }, "packageManager": { "name": "npm", "version": "10.2.3" }, "frameworks": [ { "name": "next", "version": "15.4.5" }, { "name": "react", "version": "^19.1.0" } ], "databases": [ { "name": "postgres", "version": "^3.4.7" }, { "name": "drizzle", "version": "0.44.4" } ], "betterAuth": { "version": "1.3.18", "config": null } } ``` ### Which area(s) are affected? (Select all that apply) Package ### Auth config (if applicable) ```typescript ``` ### Additional context _No response_
GiteaMirror added the lockedbug labels 2026-04-17 18:27:46 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Sep 27, 2025):

The API response for subscriptions in Better Auth is based on static schema and TypeScript interface definitions, not on the physical database columns. Adding a new column like downgradeAtPeriodEnd to your database schema alone won't expose it in API responses. You need to update both the subscription schema definition (usually in schema.ts) and the Subscription TypeScript interface to include your new field. Once both are updated, the API will include the new column in responses from authClient.subscription.list and auth.api.listActiveSubscriptions (sourcesource). There’s no dynamic pass-through for arbitrary columns—schema and type enforcement is intentional for safety and predictability.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

<!-- gh-comment-id:3341937716 --> @dosubot[bot] commented on GitHub (Sep 27, 2025): <!-- Answer --> The API response for subscriptions in Better Auth is based on static schema and TypeScript interface definitions, not on the physical database columns. Adding a new column like `downgradeAtPeriodEnd` to your database schema alone won't expose it in API responses. You need to update both the subscription schema definition (usually in `schema.ts`) and the `Subscription` TypeScript interface to include your new field. Once both are updated, the API will include the new column in responses from `authClient.subscription.list` and `auth.api.listActiveSubscriptions` ([source](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/schema.ts), [source](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/types.ts)). There’s no dynamic pass-through for arbitrary columns—schema and type enforcement is intentional for safety and predictability. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/f0099e3d-1229-4969-beb9-44561510d3ab?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/cdda13d9-dd27-4d31-b09a-5d8bec92de21/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/better-auth/better-auth/issues/4948)
Author
Owner

@akmalmzamri commented on GitHub (Sep 27, 2025):

Hi @dosu. I've done both, and I can see the column in my DB.

<!-- gh-comment-id:3341941682 --> @akmalmzamri commented on GitHub (Sep 27, 2025): Hi @dosu. I've done both, and I can see the column in my DB.
Author
Owner

@dosubot[bot] commented on GitHub (Sep 27, 2025):

If you've updated both the schema and the TypeScript interface but the new column still isn't showing up in the API response, double-check these common pitfalls:

  1. Make sure your Drizzle schema and the Better Auth drizzleAdapter config explicitly map the new column name (e.g., if your DB column is downgrade_at_period_end, your schema should use downgradeAtPeriodEnd: boolean("downgrade_at_period_end") and your adapter config should reference this field name exactly) reference.
  2. If you use a fieldName property in your config, it must match the actual DB column name exactly, or you should remove it—otherwise, the field will be undefined in the API/session object even if it exists in the DB reference.
  3. Restart your API server or rebuild your app after making schema/type changes to ensure everything is picked up.
  4. The Stripe integration's API response spreads all fields from the subscription object returned by the adapter, so if the field is present in the adapter's result, it should appear in the API response reference.

If it's still missing, please share your Drizzle schema for the subscriptions table, your Better Auth config (especially the drizzleAdapter and any mapping for subscriptions), and your Subscription TypeScript interface. That will help spot any mismatches or omissions.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

<!-- gh-comment-id:3341943476 --> @dosubot[bot] commented on GitHub (Sep 27, 2025): <!-- Answer --> If you've updated both the schema and the TypeScript interface but the new column still isn't showing up in the API response, double-check these common pitfalls: 1. Make sure your Drizzle schema and the Better Auth drizzleAdapter config explicitly map the new column name (e.g., if your DB column is `downgrade_at_period_end`, your schema should use `downgradeAtPeriodEnd: boolean("downgrade_at_period_end")` and your adapter config should reference this field name exactly) [reference](https://github.com/better-auth/better-auth/issues/1027#issuecomment-2563044915). 2. If you use a `fieldName` property in your config, it must match the actual DB column name exactly, or you should remove it—otherwise, the field will be undefined in the API/session object even if it exists in the DB [reference](https://github.com/better-auth/better-auth/issues/4870#issuecomment-3327318252). 3. Restart your API server or rebuild your app after making schema/type changes to ensure everything is picked up. 4. The Stripe integration's API response spreads all fields from the subscription object returned by the adapter, so if the field is present in the adapter's result, it should appear in the API response [reference](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/index.ts). If it's still missing, please share your Drizzle schema for the subscriptions table, your Better Auth config (especially the drizzleAdapter and any mapping for subscriptions), and your Subscription TypeScript interface. That will help spot any mismatches or omissions. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/abc539e6-9315-4df5-9a5c-f4a7d61cd177?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/cdda13d9-dd27-4d31-b09a-5d8bec92de21/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/better-auth/better-auth/issues/4948)
Author
Owner

@akmalmzamri commented on GitHub (Sep 28, 2025):

@dosu

Make sure your Drizzle schema and the Better Auth drizzleAdapter config explicitly map the new column name (e.g., if your DB column is downgrade_at_period_end, your schema should use downgradeAtPeriodEnd: boolean("downgrade_at_period_end") and your adapter config should reference this field name exactly)

Yes, I believe this is configured correctly. I can already get the value if I fetch from my DB directly.

If you use a fieldName property in your config, it must match the actual DB column name exactly, or you should remove it—otherwise, the field will be undefined in the API/session object even if it exists in the DB

Tried this (with and without fieldName), but still not working

export const auth = betterAuth({
  ...authConfig,
  hooks,
  plugins: [...plugins, stripePlugin],
  subscription: {
    additionalFields: {
      downgradeAtPeriodEnd: {
        type: "boolean",
        fieldName: "downgrade_at_period_end",
        default: false,
        validator: {
          input: z.boolean(),
        },
        required: false,
      },
    },
  },
})

Restart your API server or rebuild your app after making schema/type changes to ensure everything is picked up.

Still not working, unfortunately.

The Stripe integration's API response spreads all fields from the subscription object returned by the adapter, so if the field is present in the adapter's result, it should appear in the API response reference.

Yes, I believe so too, which is weird...

Anyway, here's my schema

export const subscriptions = pgTable("subscriptions", {
  id: text("id").primaryKey(),
  plan: text("plan").notNull(),
  referenceId: text("reference_id")
    .notNull()
    .references(() => users.id),
  stripeCustomerId: text("stripe_customer_id"),
  stripeSubscriptionId: text("stripe_subscription_id"),
  status: text("status").notNull(),
  periodStart: timestamp("period_start"),
  periodEnd: timestamp("period_end"),
  cancelAtPeriodEnd: boolean("cancel_at_period_end").default(false).notNull(),
  downgradeAtPeriodEnd: boolean("downgrade_at_period_end").default(false).notNull(),
  seats: integer("seats"),
  trialStart: timestamp("trial_start"),
  trialEnd: timestamp("trial_end"),
})

and here's the config

const baseConfig = {
  database: drizzleAdapter(db, {
    provider: "pg",
    usePlural: true,
    schema: {
      users,
      sessions,
      accounts,
      verifications,
      subscriptions,
    },
  }),
  session: {
    cookieCache: {
      enabled: true,
      maxAge: 5 * 60,
    },
  },
  emailAndPassword: {
    enabled: true,
  },
  socialProviders: {
    google: {
      clientId: process.env.GOOGLE_CLIENT_ID!,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
    },
  },
}

const stripePlugin = stripeConfig({
  stripeClient: stripe,
  stripeWebhookSecret: env.STRIPE_WEBHOOK_SECRET,
  createCustomerOnSignUp: true,
  subscription: {
    enabled: true,
    plans: subscriptionPlans,
  },
})

export const auth = betterAuth({
  ...baseConfig,
  plugins: [...plugins, stripePlugin],
})
<!-- gh-comment-id:3344215170 --> @akmalmzamri commented on GitHub (Sep 28, 2025): @dosu > Make sure your Drizzle schema and the Better Auth drizzleAdapter config explicitly map the new column name (e.g., if your DB column is downgrade_at_period_end, your schema should use downgradeAtPeriodEnd: boolean("downgrade_at_period_end") and your adapter config should reference this field name exactly) Yes, I believe this is configured correctly. I can already get the value if I fetch from my DB directly. > If you use a fieldName property in your config, it must match the actual DB column name exactly, or you should remove it—otherwise, the field will be undefined in the API/session object even if it exists in the DB Tried this (with and without `fieldName`), but still not working ``` export const auth = betterAuth({ ...authConfig, hooks, plugins: [...plugins, stripePlugin], subscription: { additionalFields: { downgradeAtPeriodEnd: { type: "boolean", fieldName: "downgrade_at_period_end", default: false, validator: { input: z.boolean(), }, required: false, }, }, }, }) ``` > Restart your API server or rebuild your app after making schema/type changes to ensure everything is picked up. Still not working, unfortunately. > The Stripe integration's API response spreads all fields from the subscription object returned by the adapter, so if the field is present in the adapter's result, it should appear in the API response [reference](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/index.ts). Yes, I believe so too, which is weird... Anyway, here's my schema ``` export const subscriptions = pgTable("subscriptions", { id: text("id").primaryKey(), plan: text("plan").notNull(), referenceId: text("reference_id") .notNull() .references(() => users.id), stripeCustomerId: text("stripe_customer_id"), stripeSubscriptionId: text("stripe_subscription_id"), status: text("status").notNull(), periodStart: timestamp("period_start"), periodEnd: timestamp("period_end"), cancelAtPeriodEnd: boolean("cancel_at_period_end").default(false).notNull(), downgradeAtPeriodEnd: boolean("downgrade_at_period_end").default(false).notNull(), seats: integer("seats"), trialStart: timestamp("trial_start"), trialEnd: timestamp("trial_end"), }) ``` and here's the config ``` const baseConfig = { database: drizzleAdapter(db, { provider: "pg", usePlural: true, schema: { users, sessions, accounts, verifications, subscriptions, }, }), session: { cookieCache: { enabled: true, maxAge: 5 * 60, }, }, emailAndPassword: { enabled: true, }, socialProviders: { google: { clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }, }, } const stripePlugin = stripeConfig({ stripeClient: stripe, stripeWebhookSecret: env.STRIPE_WEBHOOK_SECRET, createCustomerOnSignUp: true, subscription: { enabled: true, plans: subscriptionPlans, }, }) export const auth = betterAuth({ ...baseConfig, plugins: [...plugins, stripePlugin], }) ```
Author
Owner

@dosubot[bot] commented on GitHub (Sep 28, 2025):

The reason your custom field downgradeAtPeriodEnd isn't appearing in the API response is that it's missing from both the static subscription schema (packages/stripe/src/schema.ts) and the Subscription TypeScript interface (packages/stripe/src/types.ts). The Stripe plugin only recognizes and returns fields defined in these files, regardless of your DB schema or Drizzle config. To fix this, add downgradeAtPeriodEnd to both the static schema and the interface, then rebuild/restart your app. Once that's done, the field should appear in your API responses as expected.
Reference: schema.ts | Reference: types.ts

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

<!-- gh-comment-id:3344216431 --> @dosubot[bot] commented on GitHub (Sep 28, 2025): <!-- Answer --> The reason your custom field `downgradeAtPeriodEnd` isn't appearing in the API response is that it's missing from both the static subscription schema (`packages/stripe/src/schema.ts`) and the `Subscription` TypeScript interface (`packages/stripe/src/types.ts`). The Stripe plugin only recognizes and returns fields defined in these files, regardless of your DB schema or Drizzle config. To fix this, add `downgradeAtPeriodEnd` to both the static schema and the interface, then rebuild/restart your app. Once that's done, the field should appear in your API responses as expected. [Reference: schema.ts](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/schema.ts) | [Reference: types.ts](https://github.com/better-auth/better-auth/blob/f6cbdcc84ee5d2971fdcc8b23ff7c174f88cf45b/packages/stripe/src/types.ts) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/0b47ceba-4f88-4aae-bc53-e510dc4421b4?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/cdda13d9-dd27-4d31-b09a-5d8bec92de21/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/better-auth/better-auth/issues/4948)
Author
Owner

@akmalmzamri commented on GitHub (Sep 28, 2025):

@dosu That's internal to the better-auth/stripe package. Is there a way for me to define it from my app?

<!-- gh-comment-id:3344224500 --> @akmalmzamri commented on GitHub (Sep 28, 2025): @dosu That's internal to the better-auth/stripe package. Is there a way for me to define it from my app?
Author
Owner

@dosubot[bot] commented on GitHub (Sep 28, 2025):

There isn't a supported way to expose custom subscription fields like downgradeAtPeriodEnd in the Better Auth Stripe plugin API response purely from your app config. The fields included in the API response are statically defined inside the package's schema and TypeScript types, and there's no dynamic extension point or hook for adding custom fields from the app side—even with additionalFields or fieldName in your config. To include new fields, you would need to patch or fork the package and update its internal schema and types, or work around it by syncing the data yourself via a custom endpoint or using the Stripe SDK directly (example discussion).

If dynamic extension of subscription fields is important for your use case, you might consider opening a feature request so it can be considered for future releases.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

<!-- gh-comment-id:3344226640 --> @dosubot[bot] commented on GitHub (Sep 28, 2025): <!-- Answer --> There isn't a supported way to expose custom subscription fields like downgradeAtPeriodEnd in the Better Auth Stripe plugin API response purely from your app config. The fields included in the API response are statically defined inside the package's schema and TypeScript types, and there's no dynamic extension point or hook for adding custom fields from the app side—even with additionalFields or fieldName in your config. To include new fields, you would need to patch or fork the package and update its internal schema and types, or work around it by syncing the data yourself via a custom endpoint or using the Stripe SDK directly ([example discussion](https://github.com/better-auth/better-auth/issues/4046#issuecomment-3206154721)). If dynamic extension of subscription fields is important for your use case, you might consider opening a feature request so it can be considered for future releases. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/fd9a56db-e41e-41c7-9b3e-64ac5e4c8960?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/cdda13d9-dd27-4d31-b09a-5d8bec92de21/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/better-auth/better-auth/issues/4948)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#27441