mirror of
https://github.com/better-auth/better-auth.git
synced 2026-07-16 23:03:46 -05:00
[GH-ISSUE #8561] Email OTP: Case-sensitive email handling causes OTP verification failures #11120
Open
opened 2026-04-13 07:29:43 -05:00 by GiteaMirror
·
4 comments
No Branch/Tag Specified
changeset-release/main
main
feat/identity-provider-accounts
changeset-release/next
next
feat/scim-demo-workflow
fix/oauth-provider-session-deletion
feat/scim-active-user-link
feat/sso-provider-user-resolution
feat/oauth-provider-remove-silence-warnings
dependabot/npm_and_yarn/undici-7.28.0
dependabot/npm_and_yarn/vite-7.3.5
dependabot/github_actions/github-actions-62954de4be
dependabot/npm_and_yarn/demo/electron/demo-minor-patch-4169bf3d8e
changeset-release/release/vercel-announcement
release/vercel-announcement
2026-06-29/docs/optimize-og-images
feat/yandex-social-provider
feat/ssrf-fetch-boundary
codex/issue-8116-siwe-analysis
codex/pr-10225-next-comments
fix/phone-number-disable-input
perf/router-build-once
fix/oauth-user-provisioning-fields
codex/ignore-compose-override-spellcheck
2026-06-19/fix/stripe-org-reference-scope
feat/webhooks
feat/baseurl-canonical-serving-split
feat/magic-link-expires-in
fix/esbuild-security-bump
chore/sync-main-to-next-20260615
chore/revert-10053
codex/fix-expo-sdk56-dynamic-import
refactor/oauth-provider-client-authentication-module
fix/oauth-no-store-headers
claude/slack-update-stripe-docs-consistency-8Sc0w
local/fix-invite-accept-idempotency
docs/beta-mdx-component-fallback
fix/dependabot-hono-shell-quote
codex/stateless-account-cookie-resolution
fix/admin-create-user-role-escalation
feat/oauth-provider-oidc-acr
refactor/sign-in-challenges
refactor/optional-kysely-dependency
2026-06-06/chore/kysely-changeset
copilot/fix-code-review-comment
starsling/prisma-migration-reset
2026-06-02/fix/next-cookies-defer-rsc
feat/oauth-contribution-protocol
ping-maxwell/c-ping-maxwell/fix-kysely-adapter-core-utils-string-resolution-68c5
temp/server-only-test
2026-05-31/refactor/kysely-joins-json-helpers
2026-04-29/feat/google-include-granted-scopes
2026-04-29/fix/oauth-account-scope-semantics
fix/oauth-callback-path-declarative
2026-05-31/fix/sqlite-dialect-affected-rows
fix/next-cookie-separator
2026-05-29/fix/last-login-method-cookie-prefix
feat/oauth-provider-custom-subject
ping-maxwell/c-ping-maxwell/fix-error-link-apostrophe-f89a
client-assertions-main
2026-05-15/ci/fix-sqlite-abi-mismatch
2026-05-15/fix/organization-team-add-cascade
2026-05-15/fix/parse-set-cookie-value-validation
2026-05-13/feat/captcha-wildcard-endpoints
fix/i18n-before-hook-translation
fix/disable-migration-generate
2026-05-10/fix/cookie-drain-order
2026-05-10/feat/hooks-finally
2026-05-09/fix/cookie-drain-order
2026-05-09/feat/hooks-finally
2026-05-08/feat/register-before-send
fix/stripe/subscription-data-merge
2026-05-01/chore/pnpm-v11-harden
chore/pnpm-v11
2026-04-27/fix/nextcookies-idempotent-writes
2026-04-26/fix/harden-proxy-host-validation
2026-04-26/refactor/stripe-callback-signature-cleanup
2026-04-26/fix/stripe-subscription-callback-timing
2026-04-11/fix/sveltekit-app-modules
feat/open-api-zod-contract
feat/oauth-idp-initiated-bounce
2026-04-21/fix/oauth-rfc-input-validation
fix/two-factor-identity-guard
fix/resource
feat/emailpassword-authorize
feat/oauth-provider-at-hash-v2
fix/release-grep-fallback
claude/address-review-comments-JhFLr
feat/async-auth
fix/two-factor-totp-verified-enrollment
feat/plugin-ui
codex/blog-1-6-release-post
2026-04-06/fix/type-any-guards
2026-04-05/chore/downgrade-better-call
2026-04-04/ci/skip-vercel-fork-prs
2026-03-28/ci/add-autofix-ci
chore/release-preview-script
himself65/2026/02/19/role
2026-03-20/docs/improve-website
2026-03-20/fix/anonymous-onlinkaccount-expo
2026-02-17/fix/anonymous-link-state
fix/8607-saml-inresponseto
fix/8549-scim-patch-noop
v1.4.x
refactor/migration-snapshot-tests
worktree-magic-link-additional-data
chore/migrate-build-to-rollup
worktree-fix-dynamic-baseurl-8447
2026-03-06/chore/public-api-check
fix/close-8156-regression-test
fix/secondary-storage-json-error-handling
himself65/verification-namespace
cursor/issue-8307-validation-79a3
himself65/2026/01/30/error-mdx
v1.4.x-staging
fix/email-otp-user
fix/restrict-full-organization-access-roles
himself65/2026/02/12/count
himself65/2026/02/04/define-plugin
2026-02-04/feat/add-pluralize
cursor/better-auth-js-integration-ec21
cursor/expo-state-mismatch-394c
2026-02-01/fix/org-update-role-sync-members
cursor/issue-7607-investigation-e146
cursor/email-generation-helper-0ff6
himself65/2026/01/21/avoid-spread-operator
himself65/2026/01/14/cli
claude/slack-add-docs-pr-NMvgO
claude/slack-add-advanced-useplural-WHKYL
feat/hooks-pos
feat/2fa-phone
feat/2fa
fix/rotation
fix/username-check
v1.3.x
refactor/organization
feat/multiple-client-ids-social-providers
v1.7.0-rc.1
v1.6.23
v1.7.0-rc.0
v1.7.0-beta.10
v1.6.22
v1.6.21
v1.6.20
v1.7.0-beta.9
v1.7.0-beta.8
v1.7.0-beta.7
v1.7.0-beta.6
v1.6.19
v1.6.18
v1.6.17
better-auth@1.7.0-beta.5
auth@1.7.0-beta.5
@better-auth/test-utils@1.7.0-beta.5
@better-auth/telemetry@1.7.0-beta.5
@better-auth/stripe@1.7.0-beta.5
@better-auth/sso@1.7.0-beta.5
@better-auth/scim@1.7.0-beta.5
@better-auth/redis-storage@1.7.0-beta.5
@better-auth/prisma-adapter@1.7.0-beta.5
@better-auth/passkey@1.7.0-beta.5
@better-auth/oauth-provider@1.7.0-beta.5
@better-auth/mongo-adapter@1.7.0-beta.5
@better-auth/memory-adapter@1.7.0-beta.5
@better-auth/kysely-adapter@1.7.0-beta.5
@better-auth/i18n@1.7.0-beta.5
@better-auth/expo@1.7.0-beta.5
@better-auth/electron@1.7.0-beta.5
@better-auth/drizzle-adapter@1.7.0-beta.5
@better-auth/core@1.7.0-beta.5
@better-auth/cimd@1.7.0-beta.5
@better-auth/api-key@1.7.0-beta.5
v1.7.0-beta.5
better-auth@1.6.16
auth@1.6.16
@better-auth/test-utils@1.6.16
@better-auth/telemetry@1.6.16
@better-auth/stripe@1.6.16
@better-auth/sso@1.6.16
@better-auth/scim@1.6.16
@better-auth/redis-storage@1.6.16
@better-auth/prisma-adapter@1.6.16
@better-auth/passkey@1.6.16
@better-auth/oauth-provider@1.6.16
@better-auth/mongo-adapter@1.6.16
@better-auth/memory-adapter@1.6.16
@better-auth/kysely-adapter@1.6.16
@better-auth/i18n@1.6.16
@better-auth/expo@1.6.16
@better-auth/electron@1.6.16
@better-auth/drizzle-adapter@1.6.16
@better-auth/core@1.6.16
@better-auth/api-key@1.6.16
v1.6.16
better-auth@1.6.15
auth@1.6.15
@better-auth/test-utils@1.6.15
@better-auth/telemetry@1.6.15
@better-auth/stripe@1.6.15
@better-auth/sso@1.6.15
@better-auth/scim@1.6.15
@better-auth/redis-storage@1.6.15
@better-auth/prisma-adapter@1.6.15
@better-auth/passkey@1.6.15
@better-auth/oauth-provider@1.6.15
@better-auth/mongo-adapter@1.6.15
@better-auth/memory-adapter@1.6.15
@better-auth/kysely-adapter@1.6.15
@better-auth/i18n@1.6.15
@better-auth/expo@1.6.15
@better-auth/electron@1.6.15
@better-auth/drizzle-adapter@1.6.15
@better-auth/core@1.6.15
@better-auth/api-key@1.6.15
v1.6.15
@better-auth/api-key@1.6.14
better-auth@1.6.14
auth@1.6.14
@better-auth/test-utils@1.6.14
@better-auth/telemetry@1.6.14
@better-auth/stripe@1.6.14
@better-auth/sso@1.6.14
@better-auth/scim@1.6.14
@better-auth/redis-storage@1.6.14
@better-auth/prisma-adapter@1.6.14
@better-auth/passkey@1.6.14
@better-auth/oauth-provider@1.6.14
@better-auth/mongo-adapter@1.6.14
@better-auth/memory-adapter@1.6.14
@better-auth/kysely-adapter@1.6.14
@better-auth/i18n@1.6.14
@better-auth/expo@1.6.14
@better-auth/electron@1.6.14
@better-auth/drizzle-adapter@1.6.14
@better-auth/core@1.6.14
v1.6.14
better-auth@1.7.0-beta.4
auth@1.7.0-beta.4
@better-auth/test-utils@1.7.0-beta.4
@better-auth/telemetry@1.7.0-beta.4
@better-auth/stripe@1.7.0-beta.4
@better-auth/sso@1.7.0-beta.4
@better-auth/scim@1.7.0-beta.4
@better-auth/redis-storage@1.7.0-beta.4
@better-auth/prisma-adapter@1.7.0-beta.4
@better-auth/passkey@1.7.0-beta.4
@better-auth/oauth-provider@1.7.0-beta.4
@better-auth/mongo-adapter@1.7.0-beta.4
@better-auth/memory-adapter@1.7.0-beta.4
@better-auth/kysely-adapter@1.7.0-beta.4
@better-auth/i18n@1.7.0-beta.4
@better-auth/expo@1.7.0-beta.4
@better-auth/electron@1.7.0-beta.4
@better-auth/drizzle-adapter@1.7.0-beta.4
@better-auth/core@1.7.0-beta.4
@better-auth/cimd@1.7.0-beta.4
@better-auth/api-key@1.7.0-beta.4
v1.7.0-beta.4
better-auth@1.6.13
auth@1.6.13
@better-auth/test-utils@1.6.13
@better-auth/telemetry@1.6.13
@better-auth/stripe@1.6.13
@better-auth/sso@1.6.13
@better-auth/scim@1.6.13
@better-auth/redis-storage@1.6.13
@better-auth/prisma-adapter@1.6.13
@better-auth/passkey@1.6.13
@better-auth/oauth-provider@1.6.13
@better-auth/mongo-adapter@1.6.13
@better-auth/memory-adapter@1.6.13
@better-auth/kysely-adapter@1.6.13
@better-auth/i18n@1.6.13
@better-auth/expo@1.6.13
@better-auth/electron@1.6.13
@better-auth/drizzle-adapter@1.6.13
@better-auth/core@1.6.13
@better-auth/api-key@1.6.13
v1.6.13
@better-auth/api-key@1.6.12
better-auth@1.6.12
auth@1.6.12
@better-auth/test-utils@1.6.12
@better-auth/telemetry@1.6.12
@better-auth/stripe@1.6.12
@better-auth/sso@1.6.12
@better-auth/scim@1.6.12
@better-auth/redis-storage@1.6.12
@better-auth/prisma-adapter@1.6.12
@better-auth/passkey@1.6.12
@better-auth/oauth-provider@1.6.12
@better-auth/mongo-adapter@1.6.12
@better-auth/memory-adapter@1.6.12
@better-auth/kysely-adapter@1.6.12
@better-auth/i18n@1.6.12
@better-auth/expo@1.6.12
@better-auth/electron@1.6.12
@better-auth/drizzle-adapter@1.6.12
@better-auth/core@1.6.12
v1.6.12
better-auth@1.6.11
auth@1.6.11
@better-auth/test-utils@1.6.11
@better-auth/telemetry@1.6.11
@better-auth/stripe@1.6.11
@better-auth/sso@1.6.11
@better-auth/scim@1.6.11
@better-auth/api-key@1.6.11
@better-auth/redis-storage@1.6.11
@better-auth/core@1.6.11
@better-auth/oauth-provider@1.6.11
@better-auth/mongo-adapter@1.6.11
@better-auth/memory-adapter@1.6.11
@better-auth/kysely-adapter@1.6.11
@better-auth/i18n@1.6.11
@better-auth/expo@1.6.11
@better-auth/electron@1.6.11
@better-auth/drizzle-adapter@1.6.11
@better-auth/prisma-adapter@1.6.11
@better-auth/passkey@1.6.11
v1.6.11
better-auth@1.7.0-beta.3
auth@1.7.0-beta.3
@better-auth/test-utils@1.7.0-beta.3
@better-auth/telemetry@1.7.0-beta.3
@better-auth/stripe@1.7.0-beta.3
@better-auth/sso@1.7.0-beta.3
@better-auth/scim@1.7.0-beta.3
@better-auth/redis-storage@1.7.0-beta.3
@better-auth/prisma-adapter@1.7.0-beta.3
@better-auth/passkey@1.7.0-beta.3
@better-auth/oauth-provider@1.7.0-beta.3
@better-auth/mongo-adapter@1.7.0-beta.3
@better-auth/memory-adapter@1.7.0-beta.3
@better-auth/kysely-adapter@1.7.0-beta.3
@better-auth/i18n@1.7.0-beta.3
@better-auth/expo@1.7.0-beta.3
@better-auth/electron@1.7.0-beta.3
@better-auth/drizzle-adapter@1.7.0-beta.3
@better-auth/core@1.7.0-beta.3
@better-auth/cimd@1.7.0-beta.3
@better-auth/api-key@1.7.0-beta.3
v1.7.0-beta.3
better-auth@1.6.10
auth@1.6.10
@better-auth/test-utils@1.6.10
@better-auth/telemetry@1.6.10
@better-auth/stripe@1.6.10
@better-auth/sso@1.6.10
@better-auth/scim@1.6.10
@better-auth/redis-storage@1.6.10
@better-auth/prisma-adapter@1.6.10
@better-auth/passkey@1.6.10
@better-auth/oauth-provider@1.6.10
@better-auth/mongo-adapter@1.6.10
@better-auth/memory-adapter@1.6.10
@better-auth/kysely-adapter@1.6.10
@better-auth/i18n@1.6.10
@better-auth/expo@1.6.10
@better-auth/electron@1.6.10
@better-auth/drizzle-adapter@1.6.10
@better-auth/core@1.6.10
@better-auth/api-key@1.6.10
v1.6.10
better-auth@1.6.9
auth@1.6.9
@better-auth/test-utils@1.6.9
@better-auth/telemetry@1.6.9
@better-auth/stripe@1.6.9
@better-auth/sso@1.6.9
@better-auth/scim@1.6.9
@better-auth/redis-storage@1.6.9
@better-auth/prisma-adapter@1.6.9
@better-auth/passkey@1.6.9
@better-auth/oauth-provider@1.6.9
@better-auth/mongo-adapter@1.6.9
@better-auth/memory-adapter@1.6.9
@better-auth/kysely-adapter@1.6.9
@better-auth/i18n@1.6.9
@better-auth/expo@1.6.9
@better-auth/electron@1.6.9
@better-auth/drizzle-adapter@1.6.9
@better-auth/core@1.6.9
@better-auth/api-key@1.6.9
v1.6.9
better-auth@1.6.8
auth@1.6.8
@better-auth/test-utils@1.6.8
@better-auth/telemetry@1.6.8
@better-auth/stripe@1.6.8
@better-auth/sso@1.6.8
@better-auth/scim@1.6.8
@better-auth/redis-storage@1.6.8
@better-auth/prisma-adapter@1.6.8
@better-auth/passkey@1.6.8
@better-auth/oauth-provider@1.6.8
@better-auth/mongo-adapter@1.6.8
@better-auth/memory-adapter@1.6.8
@better-auth/kysely-adapter@1.6.8
@better-auth/i18n@1.6.8
@better-auth/expo@1.6.8
@better-auth/electron@1.6.8
@better-auth/drizzle-adapter@1.6.8
@better-auth/core@1.6.8
@better-auth/api-key@1.6.8
v1.6.8
@better-auth/api-key@1.7.0-beta.2
better-auth@1.7.0-beta.2
auth@1.7.0-beta.2
@better-auth/test-utils@1.7.0-beta.2
@better-auth/telemetry@1.7.0-beta.2
@better-auth/stripe@1.7.0-beta.2
@better-auth/sso@1.7.0-beta.2
@better-auth/scim@1.7.0-beta.2
@better-auth/redis-storage@1.7.0-beta.2
@better-auth/prisma-adapter@1.7.0-beta.2
@better-auth/passkey@1.7.0-beta.2
@better-auth/oauth-provider@1.7.0-beta.2
@better-auth/mongo-adapter@1.7.0-beta.2
@better-auth/memory-adapter@1.7.0-beta.2
@better-auth/kysely-adapter@1.7.0-beta.2
@better-auth/i18n@1.7.0-beta.2
@better-auth/expo@1.7.0-beta.2
@better-auth/electron@1.7.0-beta.2
@better-auth/drizzle-adapter@1.7.0-beta.2
@better-auth/core@1.7.0-beta.2
@better-auth/cimd@1.7.0-beta.2
v1.7.0-beta.2
better-auth@1.6.7
auth@1.6.7
@better-auth/test-utils@1.6.7
@better-auth/telemetry@1.6.7
@better-auth/stripe@1.6.7
@better-auth/sso@1.6.7
@better-auth/scim@1.6.7
@better-auth/redis-storage@1.6.7
@better-auth/prisma-adapter@1.6.7
@better-auth/passkey@1.6.7
@better-auth/oauth-provider@1.6.7
@better-auth/mongo-adapter@1.6.7
@better-auth/memory-adapter@1.6.7
@better-auth/kysely-adapter@1.6.7
@better-auth/i18n@1.6.7
@better-auth/expo@1.6.7
@better-auth/electron@1.6.7
@better-auth/drizzle-adapter@1.6.7
@better-auth/core@1.6.7
@better-auth/api-key@1.6.7
v1.6.7
better-auth@1.6.6
auth@1.6.6
@better-auth/test-utils@1.6.6
@better-auth/telemetry@1.6.6
@better-auth/stripe@1.6.6
@better-auth/sso@1.6.6
@better-auth/scim@1.6.6
@better-auth/redis-storage@1.6.6
@better-auth/prisma-adapter@1.6.6
@better-auth/passkey@1.6.6
@better-auth/oauth-provider@1.6.6
@better-auth/mongo-adapter@1.6.6
@better-auth/memory-adapter@1.6.6
@better-auth/kysely-adapter@1.6.6
@better-auth/i18n@1.6.6
@better-auth/expo@1.6.6
@better-auth/electron@1.6.6
@better-auth/drizzle-adapter@1.6.6
@better-auth/core@1.6.6
@better-auth/api-key@1.6.6
v1.6.6
better-auth@1.6.5
auth@1.6.5
@better-auth/test-utils@1.6.5
@better-auth/telemetry@1.6.5
@better-auth/stripe@1.6.5
@better-auth/sso@1.6.5
@better-auth/scim@1.6.5
@better-auth/redis-storage@1.6.5
@better-auth/prisma-adapter@1.6.5
@better-auth/passkey@1.6.5
@better-auth/oauth-provider@1.6.5
@better-auth/mongo-adapter@1.6.5
@better-auth/memory-adapter@1.6.5
@better-auth/kysely-adapter@1.6.5
@better-auth/i18n@1.6.5
@better-auth/expo@1.6.5
@better-auth/electron@1.6.5
@better-auth/drizzle-adapter@1.6.5
@better-auth/core@1.6.5
@better-auth/api-key@1.6.5
v1.6.5
@better-auth/api-key@1.6.4
better-auth@1.6.4
auth@1.6.4
@better-auth/test-utils@1.6.4
@better-auth/telemetry@1.6.4
@better-auth/stripe@1.6.4
@better-auth/sso@1.6.4
@better-auth/scim@1.6.4
@better-auth/redis-storage@1.6.4
@better-auth/prisma-adapter@1.6.4
@better-auth/passkey@1.6.4
@better-auth/oauth-provider@1.6.4
@better-auth/mongo-adapter@1.6.4
@better-auth/memory-adapter@1.6.4
@better-auth/kysely-adapter@1.6.4
@better-auth/i18n@1.6.4
@better-auth/expo@1.6.4
@better-auth/electron@1.6.4
@better-auth/drizzle-adapter@1.6.4
@better-auth/core@1.6.4
v1.6.4
@better-auth/cimd@1.7.0-beta.1
v1.7.0-beta.1
@better-auth/api-key@1.6.3
better-auth@1.6.3
auth@1.6.3
@better-auth/test-utils@1.6.3
@better-auth/telemetry@1.6.3
@better-auth/stripe@1.6.3
@better-auth/sso@1.6.3
@better-auth/scim@1.6.3
@better-auth/redis-storage@1.6.3
@better-auth/prisma-adapter@1.6.3
@better-auth/passkey@1.6.3
@better-auth/oauth-provider@1.6.3
@better-auth/mongo-adapter@1.6.3
@better-auth/memory-adapter@1.6.3
@better-auth/kysely-adapter@1.6.3
@better-auth/i18n@1.6.3
@better-auth/expo@1.6.3
@better-auth/electron@1.6.3
@better-auth/drizzle-adapter@1.6.3
@better-auth/core@1.6.3
v1.6.3
@better-auth/api-key@1.7.0-beta.0
better-auth@1.7.0-beta.0
auth@1.7.0-beta.0
@better-auth/test-utils@1.7.0-beta.0
@better-auth/telemetry@1.7.0-beta.0
@better-auth/stripe@1.7.0-beta.0
@better-auth/sso@1.7.0-beta.0
@better-auth/scim@1.7.0-beta.0
@better-auth/redis-storage@1.7.0-beta.0
@better-auth/prisma-adapter@1.7.0-beta.0
@better-auth/passkey@1.7.0-beta.0
@better-auth/oauth-provider@1.7.0-beta.0
@better-auth/mongo-adapter@1.7.0-beta.0
@better-auth/memory-adapter@1.7.0-beta.0
@better-auth/kysely-adapter@1.7.0-beta.0
@better-auth/i18n@1.7.0-beta.0
@better-auth/expo@1.7.0-beta.0
@better-auth/electron@1.7.0-beta.0
@better-auth/drizzle-adapter@1.7.0-beta.0
@better-auth/core@1.7.0-beta.0
v1.7.0-beta.0
better-auth@1.6.2
auth@1.6.2
@better-auth/test-utils@1.6.2
@better-auth/telemetry@1.6.2
@better-auth/stripe@1.6.2
@better-auth/sso@1.6.2
@better-auth/scim@1.6.2
@better-auth/redis-storage@1.6.2
@better-auth/prisma-adapter@1.6.2
@better-auth/passkey@1.6.2
@better-auth/oauth-provider@1.6.2
@better-auth/mongo-adapter@1.6.2
@better-auth/memory-adapter@1.6.2
@better-auth/kysely-adapter@1.6.2
@better-auth/i18n@1.6.2
@better-auth/expo@1.6.2
@better-auth/electron@1.6.2
@better-auth/drizzle-adapter@1.6.2
@better-auth/core@1.6.2
@better-auth/api-key@1.6.2
v1.6.2
better-auth@1.6.1
auth@1.6.1
@better-auth/test-utils@1.6.1
@better-auth/telemetry@1.6.1
@better-auth/stripe@1.6.1
@better-auth/sso@1.6.1
@better-auth/scim@1.6.1
@better-auth/redis-storage@1.6.1
@better-auth/prisma-adapter@1.6.1
@better-auth/passkey@1.6.1
@better-auth/oauth-provider@1.6.1
@better-auth/mongo-adapter@1.6.1
@better-auth/memory-adapter@1.6.1
@better-auth/kysely-adapter@1.6.1
@better-auth/i18n@1.6.1
@better-auth/expo@1.6.1
@better-auth/electron@1.6.1
@better-auth/drizzle-adapter@1.6.1
@better-auth/core@1.6.1
@better-auth/api-key@1.6.1
v1.6.1
better-auth@1.6.0
auth@1.6.0
@better-auth/test-utils@1.6.0
@better-auth/telemetry@1.6.0
@better-auth/stripe@1.6.0
@better-auth/sso@1.6.0
@better-auth/scim@1.6.0
@better-auth/redis-storage@1.6.0
@better-auth/prisma-adapter@1.6.0
@better-auth/passkey@1.6.0
@better-auth/oauth-provider@1.6.0
@better-auth/mongo-adapter@1.6.0
@better-auth/memory-adapter@1.6.0
@better-auth/kysely-adapter@1.6.0
@better-auth/i18n@1.6.0
@better-auth/expo@1.6.0
@better-auth/electron@1.6.0
@better-auth/drizzle-adapter@1.6.0
@better-auth/core@1.6.0
@better-auth/api-key@1.6.0
v1.6.0
v1.5.7-beta.1
v1.5.1-beta.4
v1.5.6
v1.4.22
v1.5.5
v1.5.4
v1.5.3
v1.5.2
v1.5.1-beta.3
v1.5.1-beta.2
v1.5.1
v1.4.21
v1.5.1-beta.1
v1.5.0
v1.4.20
v1.5.0-beta.20
v1.5.0-beta.19
v1.5.0-beta.18
v1.4.19
v1.5.0-beta.17
v1.5.0-beta.16
v1.5.0-beta.15
v1.5.0-beta.14
v1.5.0-beta.13
v1.5.0-beta.12
v1.5.0-beta.11
v1.4.18
v1.5.0-beta.10
v1.5.0-beta.9
v1.4.17
v1.4.16
v1.4.15
v1.5.0-beta.8
v1.4.14
v1.4.13
v1.5.0-beta.7
v1.4.12
v1.4.12-beta.2
v1.5.0-beta.6
v1.4.12-beta.1
v1.5.0-beta.5
v1.4.11
v1.5.0-beta.4
v1.4.11-beta.2
v1.5.0-beta.3
v1.4.11-beta.1
v1.4.10
v1.5.0-beta.2
v1.4.10-beta.1
v1.4.9-beta.1
v1.5.0-beta.1
v1.4.9
v1.4.8
v1.4.8-beta.7
v1.4.8-beta.6
v1.4.8-beta.5
v1.4.8-beta.4
v1.4.8-beta.3
v1.4.8-beta.2
v1.4.8-beta.1
v1.4.7
v1.4.7-beta.4
v1.4.7-beta.3
v1.4.7-beta.2
v1.4.6-beta.5
v1.4.7-beta.1
v1.4.6
v1.4.6-beta.4
v1.4.6-beta.3
v1.4.5
v1.4.6-beta.2
v1.4.6-beta.1
v1.4.5-beta.2
v1.4.5-beta.1
v1.4.4-beta.3
v1.4.4
v1.4.4-beta.2
v1.4.4-beta.1
v1.4.3
v1.4.2
v1.4.2-beta.5
v1.4.2-beta.4
v1.4.2-beta.3
v1.4.2-beta.2
v1.4.2-beta.1
v1.4.1
v1.4.1-beta.1
v1.4.0
v1.4.0-beta.28
v1.4.0-beta.27
v1.4.0-beta.26
v1.4.0-beta.25
v1.4.0-beta.24
v1.4.0-beta.23
v1.4.0-beta.22
v1.4.0-beta.21
v1.4.0-beta.20
v1.4.0-beta.19
v1.4.0-beta.18
v1.4.0-beta.17
v1.4.0-beta.16
v1.4.0-beta.15
v1.3.34
v1.3.33
v1.4.0-beta.14
v1.3.32
v1.3.31
v1.3.30
v1.4.0-beta.13
v1.3.29
v1.4.0-beta.12
v1.3.28
v1.4.0-beta.11
v1.4.0-beta.10
v1.4.0-beta.9
v1.4.0-beta.8
v1.3.27
v1.4.0-beta.7
v1.3.26
v1.3.25
v1.3.24
v1.4.0-beta.6
v1.3.23
v1.3.22
v1.3.21
v1.3.20
v1.3.19
v1.4.0-beta.5
v1.3.18
v1.4.0-beta.4
v1.3.17
v1.4.0-beta.3
v1.3.16
v1.3.15
v1.3.14
v1.4.0-beta.2
v1.3.13
v1.4.0-beta.1
v1.3.12
v1.3.11-beta.2
v1.3.11
v1.3.11-beta.1
v1.3.10
v1.3.10-beta.7
v1.3.10-beta.6
v1.3.10-beta.5
v1.3.10-beta.4
v1.3.10-beta.3
v1.3.10-beta.2
v1.3.10-beta.1
v1.3.9
v1.3.9-beta.4
v1.3.9-beta.3
v1.3.9-beta.2
v1.3.9-beta.1
v1.3.8
v1.3.8-beta.11
v1.3.8-beta.10
v1.3.8-beta.9
v1.3.8-beta.8
v1.3.8-beta.7
v1.3.8-beta.6
v1.3.8-beta.5
v1.3.8-beta.4
v1.3.8-beta.3
v1.3.8-beta.2
v1.3.8-beta.1
v1.3.7
v1.3.7-beta.4
v1.3.7-beta.3
v1.3.7-beta.2
v1.3.7-beta.1
v1.3.6
v1.3.6-beta.2
v1.3.6-beta.1
v1.3.5
v1.3.5-beta.7
v1.3.5-beta.6
v1.3.5-beta.5
v1.3.5-beta.4
v1.3.5-beta.3
v1.3.5-beta.2
v1.3.5-beta.1
better-auth@1.3.4
@better-auth/stripe@1.3.4
@better-auth/sso@1.3.4
@better-auth/expo@1.3.4
@better-auth/cli@1.3.4
v1.3.4-beta.3
v1.3.4-beta.2
v1.3.4-beta.1
v1.3.3
v1.3.2
v1.3.1
v1.3.1-beta.1
v1.3.0
v1.3.0-beta.11
v1.3.0-beta.10
v1.3.0-beta.9
v1.3.0-beta.8
v1.3.0-beta.7
v1.3.0-beta.6
v1.3.0-beta.5
v1.3.0-beta.4
v1.2.12
v1.3.0-beta.3
v1.3.0-beta.2
v1.3.0-beta.1
v1.2.11
v1.2.10
v1.2.10-pkce-fix.3
v1.2.10-beta.1
v1.2.9
v1.2.9-beta.10
v1.2.9-beta.9
feat/2867-oidcprovider-trusted
v1.2.9-beta.8
v1.2.9-beta.7
v1.2.9-beta.6
v1.2.9-beta.5
v1.2.9-beta.4
v1.2.9-beta.3
v1.2.9-beta.2
v1.2.9-beta.1
v1.2.8
v1.2.8-beta.8
v1.2.8-beta.7
v1.2.8-beta.6
v1.2.8-beta.5
v1.2.8-beta.4
v1.2.8-beta.3
v1.2.8-beta.2
v1.2.8-beta.1
v1.2.7
v1.2.7-beta.1
v1.2.6
v1.2.6-beta.13
v1.2.6-beta.12
v1.2.6-beta.11
v1.2.6-beta.10
v1.2.6-beta.9
v1.2.6-beta.8
v1.2.6-beta.7
v1.2.6-beta.6
v1.2.6-beta.5
v1.2.6-beta.4
v1.2.6-beta.3
v1.2.6-beta.2
v1.2.6-beta.1
v1.2.5
v1.2.5-beta.10
v1.2.5-beta.9
v1.2.5-beta.8
v1.2.5-beta.7
v1.2.5-beta.6
v1.2.5-beta.5
v1.2.5-beta.4
v1.2.5-beta.3
v1.2.5-beta.2
v1.2.5-beta.1
v1.2.4
v1.2.4-beta.12
v1.2.4-beta.11
v1.2.4-beta.10
v1.2.4-beta.9
v1.2.4-beta.8
v1.2.4-beta.7
v1.2.4-beta.6
v1.2.4-beta.5
v1.2.4-beta.4
v1.2.4-beta.3
v1.2.4-beta.2
v1.2.4-beta.1
v1.2.3
v1.2.3-beta.3
v1.2.3-beta.2
v1.2.3-beta.1
v1.2.2
v1.2.2-beta.6
v1.2.2-beta.5
v1.2.2-beta.4
v1.2.2-beta.3
v1.2.2-beta.2
v1.2.2-beta.1
v1.2.1
v1.2.1-beta.8
v1.2.1-beta.7
v1.2.1-beta.6
v1.2.1-beta.5
v1.2.1-beta.4
v1.2.1-beta.3
v1.2.1-beta.2
v1.2.1-beta.1
v1.2.0
v1.2.0-beta.19
v1.2.0-beta.18
v1.2.0-beta.17
v1.1.22-beta.2
v1.1.22-beta.1
v1.2.0-beta.16
v1.1.21
v1.1.21-beta.1
v1.2.0-beta.15
v1.1.20
v1.1.20-beta.5
v1.1.20-beta.4
v1.2.0-beta.14
v1.2.0-beta.13
v1.1.20-beta.3
v1.1.20-beta.2
v1.2.0-beta.12
v1.1.20-beta.1
v1.2.0-beta.11
v1.1.19
v1.1.19-beta.3
v1.2.0-beta.10
v1.2.0-beta.9
v1.2.0-beta.8
v1.2.0-beta.7
v1.1.19-beta.2
v1.1.19-beta.1
v1.1.18
v1.2.0-beta.6
v1.2.0-beta.5
v1.1.18-beta.3
v1.1.18-beta.2
v1.1.18-beta.1
v1.2.0-beta.4
v1.2.0-beta.3
v1.2.0-beta.2
v1.1.17
v1.2.0-beta.1
v1.1.17-beta.5
v1.1.17-beta.4
v1.1.17-beta.3
v1.1.17-beta.2
v1.1.17-beta.1
v1.1.16
v1.1.16-beta.10
v1.1.16-beta.9
v1.1.16-beta.8
v1.1.16-beta.7
v1.1.16-beta.6
v1.1.16-beta.5
v1.1.16-beta.4
v1.1.16-beta.3
v1.1.16-beta.2
v1.1.16-beta.1
v1.1.15
v1.1.15-beta.7
v1.1.15-beta.6
v1.1.15-beta.5
v1.1.15-beta.4
v1.1.15-beta.3
v1.1.15-beta.2
v1.1.15-beta.1
v1.1.14
v1.1.14-beta.6
v1.1.14-beta.5
v1.1.14-beta.4
v1.1.14-beta.3
v1.1.14-beta.2
v1.1.14-beta.1
v1.1.13
v1.1.13-beta.3
v1.1.13-beta.2
v1.1.13-beta.1
v1.1.12
v1.1.12-beta.4
v1.1.12-beta.3
v1.1.12-beta.2
v1.1.12-beta.1
v1.1.11
v1.1.11-beta.1
v1.1.10
v1.1.10-beta.2
v1.1.10-beta.1
v1.1.9
v1.1.9-beta.1
v1.1.8
v1.1.8-beta.3
v1.1.8-beta.2
v1.1.8-beta.1
v1.1.7
v1.1.7-beta.5
v1.1.7-beta.4
v1.1.7-beta.3
v1.1.7-beta.2
v1.1.7-beta.1
v1.1.6
v1.1.5
v1.1.4
v1.1.4-beta.2
v1.1.4-beta.1
v1.1.3
v1.1.3-beta.9
v1.1.3-beta.8
v1.1.3-beta.7
v1.1.3-beta.6
v1.1.3-beta.4
v1.1.3-beta.2
v1.1.3-beta.1
v1.1.2
v1.1.2-beta.4
v1.1.2-beta.3
v1.1.2-beta.2
v1.1.2-beta.1
v1.1.1
v1.1.0
v1.0.23-beta.6
v1.0.23-beta.5
v1.0.23-beta.4
v1.0.23-beta.3
v1.0.23-beta.2
v1.0.23-beta.1
v1.0.22
v1.0.22-beta.4
v1.0.22-beta.3
v1.0.22-beta.2
v1.0.22-beta.1
v1.0.21
v1.0.20
v1.0.19
v1.0.18
v1.0.17
v1.0.16
v1.0.16-beta.2
v1.0.16-beta.1
v1.0.15
v1.0.15-beta.1
v1.0.14
v1.0.13
v1.0.12
v1.0.12-beta.3
v1.0.12-beta.2
v1.0.12-beta.1
v1.0.11
v1.0.11-beta.8
v1.0.11-beta.7
v1.0.11-beta.6
v1.0.11-beta.5
v1.0.11-beta.4
v1.0.11-beta.3
v1.0.11-beta.2
v1.0.11-beta.1
v1.0.10
v1.0.10-beta.3
v1.0.10-beta.2
v1.0.10-beta.1
v1.0.9
v1.0.9-beta.7
v1.0.9-beta.6
v1.0.9-beta.5
v1.0.9-beta.4
v1.0.9-beta.3
v1.0.9-beta.2
v1.0.9-beta.1
v1.0.8
v1.0.8-beta.4
v1.0.8-beta.3
v1.0.8-beta.2
v1.0.8-beta.1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
v1.0.0-canary.14
v1.0.0-canary.13
v1.0.0-canary.12
v1.0.0-canary.11
v1.0.0-canary.10
v1.0.0-canary.9
v1.0.0-canary.8
v1.0.0-canary.7
v1.0.0-canary.6
v0.8.9-beta.2
v0.8.9-beta.1
v1.0.0-canary.5
v1.0.0-canary.4
v1.0.0-canary.3
v1.0.0-canary.2
v1.0.0-canary.1
v0.8.8
v0.8.8-beta.2
v0.8.8-beta.1
v0.9.0-canary.1
v0.8.7
v0.8.7-canary.2
v0.8.7-canary.1
v0.8.7-beta.5
v0.8.7-beta.4
v0.8.7-beta.3
v0.8.7-beta.2
v0.8.7-beta.1
v0.8.6
v0.8.6-beta.6
v0.8.6-beta.5
v0.8.6-beta.4
v0.8.6-beta.3
v0.8.6-beta.2
v0.8.6-beta.1
v0.8.5
v0.8.5-beta.3
v0.8.5-beta.2
v0.8.5-beta.1
v0.8.4
v0.8.4-beta.7
v0.8.4-beta.6
v0.8.4-beta.5
v0.8.4-beta.4
v0.8.4-beta.2
v0.8.4-beta.1
v0.8.3
v0.8.3-beta.7
v0.8.3-beta.6
v0.8.3-beta.5
v0.8.3-beta.4
v0.8.3-beta.3
v0.8.3-beta.2
v0.8.3-beta.1
v0.8.2
v0.8.2-beta.3
v0.8.2-beta.2
v0.8.2-beta.1
v0.8.1
v0.8.1-beta.5
v0.8.1-beta.4
v0.8.1-beta.3
v0.8.1-beta.2
v0.8.1-beta.1
v0.8.0
v0.7.6-beta.4
v0.7.6-beta.3
v0.7.6-beta.2
v0.7.6-beta.1
v0.7.5
v0.7.5-beta.9
v0.7.5-beta.8
v0.7.5-beta.7
v0.7.5-beta.6
v0.7.5-beta.5
v0.7.5-beta.4
v0.7.5-beta.3
v0.7.5-beta.2
v0.7.5-beta.1
v0.7.4
v0.7.4-beta.1
v0.7.3
v0.7.3-beta.11
v0.7.3-beta.10
v0.7.3-beta.9
v0.7.3-beta.8
v0.7.3-beta.7
v0.7.3-beta.6
v0.7.3-beta.5
v0.7.3-beta.4
v0.7.3-beta.3
v0.7.3-beta.2
v0.7.3-beta.1
v0.7.2
v0.7.2-beta.5
v0.7.2-beta.4
v0.7.2-beta.3
v0.7.2-beta.2
v0.7.2-beta.1
v0.7.1
v0.7.1-beta.6
v0.7.1-beta.5
v0.7.1-beta.4
v0.7.1-beta.3
v0.7.1-beta.2
v0.7.1-beta.1
v0.7.0
v0.7.0-beta.1
v0.6.3-beta.5
v0.6.3-beta.4
v0.6.3-beta.3
v0.6.3-beta.2
v0.6.3-beta.1
v0.6.2
v0.6.2-beta.8
v0.6.2-beta.7
v0.6.2-beta.6
v0.6.2-beta.5
v0.6.2-beta.4
v0.6.2-beta.3
v0.6.2-beta.2
v0.6.2-beta.1
v0.6.1
v0.6.1-beta.9
v0.6.1-beta.8
v0.6.1-beta.7
v0.6.1-beta.6
v0.6.1-beta.5
v0.6.1-beta.4
v0.6.1-beta.3
v0.6.1-beta.2
v0.6.1-beta.1
v0.6.0
v0.6.0-beta.1
v0.5.4-beta.9
v0.5.4-beta.8
v0.5.4-beta.7
v0.5.4-beta.6
v0.5.4-beta.5
v0.5.4-beta.4
v0.5.4-beta.3
v0.5.4-beta.2
v0.5.4-beta.1
v0.5.3
v0.5.3-beta.17
v0.5.3-beta.16
v0.5.3-beta.15
v0.5.3-beta.14
v0.5.3-beta.13
v0.5.3-beta.12
v0.5.3-beta.11
v0.5.3-beta.10
v0.5.3-beta.9
v0.5.3-beta.8
v0.5.3-beta.7
v0.5.3-beta.6
v0.5.3-beta.5
v0.5.3-beta.4
v0.5.3-beta.3
v0.5.3-beta.2
v0.5.3-beta.1
v0.5.2
v0.5.2-beta.21
v0.5.2-beta.20
v0.5.2-beta.19
v0.5.2-beta.18
v0.5.2-beta.17
v0.5.2-beta.16
v0.5.2-beta.15
v0.5.2-beta.14
v0.5.2-beta.13
v0.5.2-beta.12
v0.5.2-beta.11
v0.5.2-beta.10
v0.5.2-beta.9
v0.5.2-beta.8
v0.5.2-beta.7
v0.5.2-beta.6
v0.5.2-beta.5
v0.5.2-beta.4
v0.5.2-beta.3
v0.5.2-beta.2
v0.5.2-beta.1
v0.5.1
v0.5.1-beta.7
v0.5.1-beta.6
v0.5.1-beta.5
v0.5.1-beta.4
v0.5.1-beta.3
v0.5.1-beta.2
v0.5.1-beta.1
v0.5.0
v0.4.14-beta.2
v0.4.14-beta.1
v0.4.13
v0.4.12
v0.4.12-beta.7
v0.4.12-beta.6
v0.4.12-beta.5
v0.4.12-beta.4
v0.4.12-beta.3
v0.4.12-beta.2
v0.4.12-beta.1
v0.4.11
v0.4.11-beta.3
v0.4.11-beta.2
v0.4.11-beta.1
v0.4.10-beta.10
v0.4.10-beta.9
v0.4.10
v0.4.10-beta.8
v0.4.10-beta.7
v0.4.10-beta.6
v0.4.10-beta.5
v0.4.10-beta.4
v0.4.10-beta.3
v0.4.10-beta.2
v0.4.10-beta.1
v0.4.9
v0.4.9-beta.14
v0.4.9-beta.13
v0.4.9-beta.12
v0.4.9-beta.11
v0.4.9-beta.10
v0.4.9-beta.9
v0.4.9-beta.8
v0.4.9-beta.7
v0.4.9-beta.6
v0.4.9-beta.5
v0.4.9-beta.4
v0.4.9-beta.3
v0.4.9-beta.2
v0.4.9-beta.1
v0.4.8
v0.4.7
v0.4.7-beta.2
v0.4.7-beta.1
v0.4.6
v0.4.5
v0.4.4
v0.4.4-beta.1
v0.4.3
v0.4.3-beta.1
v0.4.2
v0.4.2-beta.1
v0.4.1
v0.4.0
v0.3.6
v0.3.5
v0.3.5-beta.8
v0.3.5-beta.7
v0.3.5-beta.6
v0.3.5-beta.5
v0.3.5-beta.4
v0.3.5-beta.3
v0.3.5-beta.2
v0.3.5-beta.1
v0.3.4
v0.3.4-beta.6
v0.3.4-beta.5
v0.3.4-beta.4
v0.3.4-beta.3
v0.3.4-beta.2
v0.3.4-beta.1
v0.3.3
v0.3.3-beta.12
v0.3.3-beta.11
v0.3.3-beta.10
v0.3.3-beta.9
v0.3.3-beta.8
v0.3.3-beta.7
v0.3.3-beta.6
v0.3.3-beta.5
v0.3.3-beta.4
v0.3.3-beta.3
v0.3.3-beta.2
v0.3.3-beta.1
v0.3.2
v0.3.1
v0.3.0
v0.2.11
v0.2.10
v0.2.9
v0.2.9-beta.10
v0.2.9-beta.9
v0.2.9-beta.8
v0.2.9-beta.7
v0.2.9-beta.6
v0.2.9-beta.5
v0.2.9-beta.4
v0.2.9-beta.3
v0.2.9-beta.2
v0.2.9-beta.1
v0.2.8
v0.2.8-beta.13
v0.2.8-beta.12
v0.2.8-beta.11
v0.2.8-beta.10
v0.2.8-beta.9
v0.2.8-beta.8
v0.2.8-beta.7
v0.2.8-beta.6
v0.2.8-beta.5
v0.2.8-beta.4
v0.2.8-beta.3
v0.2.8-beta.2
v0.2.8-beta.1
v0.2.7
v0.2.6
v0.2.6-beta.10
v0.2.6-beta.9
v0.2.6-beta.8
v0.2.6-beta.7
v0.2.6-beta.6
v0.2.6-beta.5
v0.2.6-beta.4
v0.2.6-beta.3
v0.2.6-beta.2
v0.2.6-beta.1
v0.2.5
v0.2.5-beta.5
v0.2.5-beta.4
v0.2.5-beta.3
v0.2.5-beta.2
v0.2.5-beta.1
v0.2.4
v0.2.3
v0.2.3-beta.14
v0.2.3-beta.13
v0.2.3-beta.12
v0.2.3-beta.11
v0.2.3-beta.10
v0.2.3-beta.9
v0.2.3-beta.8
v0.2.3-beta.7
v0.2.3-beta.6
v0.2.3-beta.5
v0.2.3-beta.4
v0.2.3-beta.3
v0.2.3-beta.2
v0.2.3-beta.1
v0.2.2
v0.2.1
v0.2.1-beta.1
v0.2.0
v0.1.1-beta.6
v0.1.1-beta.5
v0.1.1-beta.4
v0.1.1-beta.3
v0.1.1-beta.2
v0.1.1-beta.1
v0.1.0
v0.0.10-beta.27
v0.0.10-beta.26
v0.0.10-beta.25
v0.0.10-beta.24
v0.0.10-beta.23
v0.0.10-beta.22
v0.0.10-beta.21
v0.0.10-beta.20
v0.0.10-beta.19
v0.0.10-beta.18
v0.0.10-beta.17
v0.0.10-beta.16
v0.0.10-beta.15
v0.0.10-beta.14
v0.0.10-beta.13
v0.0.10-beta.12
v0.0.10-beta.11
v0.0.10-beta.10
v0.0.10-beta.9
v0.0.10-beta.8
v0.0.10-beta.7
v0.0.10-beta.6
v0.0.10-beta.5
v0.0.10-beta.4
v0.0.10-beta.3
v0.0.10-beta.2
v0.0.10-beta.1
v0.0.9
v0.0.9-beta.38
v0.0.9-beta.37
v0.0.9-beta.36
v0.0.9-beta.35
v0.0.9-beta.34
v0.0.9-beta.33
v0.0.9-beta.32
v0.0.9-beta.31
v0.0.9-beta.30
v0.0.9-beta.29
v0.0.9-beta.28
v0.0.9-beta.27
v0.0.9-beta.26
v0.0.9-beta.25
v0.0.9-beta.24
v0.0.9-beta.23
v0.0.9-beta.22
v0.0.9-beta.21
v0.0.9-beta.20
v0.0.9-beta.19
v0.0.9-beta.18
v0.0.9-beta.17
v0.0.9-beta.16
v0.0.9-beta.15
v0.0.9-beta.14
v0.0.9-beta.13
v0.0.9-beta.12
v0.0.9-beta.11
v0.0.9-beta.10
v0.0.9-beta.9
v0.0.9-beta.8
v0.0.9-beta.7
v0.0.9-beta.6
v0.0.9-beta.5
v0.0.9-beta.4
v0.0.9-beta.3
v0.0.9-beta.2
v0.0.9-beta.1
v0.0.8
v0.0.8-beta.29
v0.0.8-beta.28
v0.0.8-beta.27
v0.0.8-beta.26
v0.0.8-beta.25
v0.0.8-beta.24
v0.0.8-beta.23
v0.0.8-beta.22
v0.0.8-beta.21
v0.0.8-beta.20
v0.0.8-beta.19
v0.0.8-beta.18
v0.0.8-beta.17
v0.0.8-beta.16
v0.0.8-beta.15
v0.0.8-beta.14
v0.0.8-beta.13
v0.0.8-beta.12
v0.0.8-beta.11
v0.0.8-beta.10
v0.0.8-beta.9
v0.0.8-beta.8
v0.0.8-beta.7
v0.0.8-beta.6
v0.0.8-beta.5
v0.0.8-beta.4
v0.0.8-beta.3
v0.0.8-beta.2
v0.0.8-beta.1
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.2-beta.8
v0.0.2-beta.7
v0.0.2-beta.6
v0.0.2-beta.5
v0.0.2-beta.4
v0.0.2-beta.3
v0.0.2-beta.2
v0.0.2-beta.1
Labels
Clear labels
adapter
astro
awaiting external contributor
blocked
breaking
breaking change
bug
c-devops
core
credentials
database
dependencies
devops
devtools
docs
documentation
duplicate
elysia
enhancement
enterprise
expo
express
fastify
good first issue
help wanted
hono
identity
infra
integration
invalid
javascript
locked
maintenance
need-more-information
needs: info
needs: repro
nextjs
nuxt
oauth
organization
P0
payments
perf
platform
plugin
pull-request
question
ready
regression
remix
security
social-provider
solid
stale
svelte
tanstack-start
tracking
version-bump
vue
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/better-auth#11120
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @cursor[bot] on GitHub (Mar 12, 2026).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/8561
Originally assigned to: @bytaesu on GitHub.
Description
The email-otp plugin has inconsistent email normalization across its endpoints. Some endpoints normalize
ctx.body.emailto lowercase before building the OTP identifier and querying the user, while others use the raw input as-is. Since OTP identifiers are case-sensitive strings, a casing mismatch between the request and verification steps causes valid OTPs to appear invalid.Example Scenario
User@Example.comuser@example.comforget-password-otp-User@Example.comforget-password-otp-user@example.comAffected Endpoints
Endpoints that properly normalize (✓):
/email-otp/send-verification-otp— usesctx.body.email.toLowerCase()/email-otp/verify-email— usesctx.body.email.toLowerCase()/sign-in/email-otp— usesrawEmail.toLowerCase()Endpoints missing normalization (✗):
/email-otp/request-password-reset— uses rawctx.body.email/forget-password/email-otp— uses rawctx.body.email/email-otp/reset-password— uses rawctx.body.emailRoot Cause
The
toOTPIdentifier()utility function (packages/better-auth/src/plugins/email-otp/utils.ts) passes the email through as-is without normalizing it. This means every call site must remember to normalize independently, which has been inconsistently applied.Suggested Fix
Option A — Normalize at call sites (minimal change):
Option B — Normalize inside
toOTPIdentifier()(more robust):Option B prevents the issue from recurring if new endpoints are added.
References
@bytaesu commented on GitHub (Mar 12, 2026):
I'll check this after merging PR #8560
@Prakash21singh commented on GitHub (Mar 13, 2026):
Hi, I noticed this issue and the suggested fix (normalizing email in
toOTPIdentifier).Since you mentioned you’re currently working on another PR, would you like me to work on this fix and open a PR for it? Happy to take it if it helps.
@bytaesu commented on GitHub (Mar 17, 2026):
Hi @Prakash21singh,
Now that #8560 has been merged, it looks clean to work on this.
Would you like to take it on? Feel free to go ahead 😁
This probably won't be too complex.
@Prakash21singh commented on GitHub (Mar 17, 2026):
Thanks! I'll take a look at it and start working on the issue. If I run into anything unclear, I'll ask here.