[PR #7802] [MERGED] v1.4.19 #15809

Closed
opened 2026-04-13 10:14:10 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/7802
Author: @himself65
Created: 2/4/2026
Status: Merged
Merged: 2/18/2026
Merged by: @himself65

Base: mainHead: v1.4.x-staging


📝 Commits (10+)

  • 0545fb3 chore(stripe): remove unused better-call devDependency (#7664)
  • 23443c3 feat(oauth-provider): add iss parameter to authorization responses (RFC 9207) (#7669)
  • c38cb20 feat(oauth-provider): add configurable rate limiting for OAuth endpoints (#7666)
  • ea40b8c docs(oauth-provider): remove production warning (#7671)
  • e94dbcc fix(sso): add better-call peerDeps (#7676)
  • 6e4c641 fix(stripe): restore better-call peerDeps (#7675)
  • 8458bed fix(access): allow passing statements directly into newRole (#7687)
  • 6c5911f docs: add callout for access control bundle size (#7688)
  • 7e856d1 docs: add sub-pages to error docs (#7678)
  • 7b69303 feat(adapter): improve select support (#7667)

📊 Changes

103 files changed (+3550 additions, -594 deletions)

View changed files

📝 CLAUDE.md (+10 -0)
📝 docs/app/docs/[[...slug]]/page.client.tsx (+7 -2)
📝 docs/components/community-plugins-table.tsx (+26 -40)
📝 docs/components/docs/layout/toc-thumb.tsx (+1 -2)
📝 docs/components/docs/page.client.tsx (+8 -2)
📝 docs/components/icons.tsx (+5 -124)
📝 docs/components/side-bar.tsx (+173 -52)
📝 docs/components/sidebar-content.tsx (+105 -24)
📝 docs/components/ui/use-copy-button.tsx (+1 -2)
📝 docs/content/docs/comparison.mdx (+4 -7)
📝 docs/content/docs/concepts/client.mdx (+12 -0)
📝 docs/content/docs/concepts/database.mdx (+1 -1)
📝 docs/content/docs/concepts/plugins.mdx (+1 -1)
📝 docs/content/docs/integrations/expo.mdx (+48 -0)
📝 docs/content/docs/integrations/tanstack.mdx (+13 -0)
📝 docs/content/docs/plugins/admin.mdx (+5 -1)
📝 docs/content/docs/plugins/generic-oauth.mdx (+69 -0)
📝 docs/content/docs/plugins/oauth-provider.mdx (+55 -4)
📝 docs/content/docs/plugins/organization.mdx (+4 -0)
📝 docs/content/docs/plugins/phone-number.mdx (+19 -15)

...and 80 more files

📄 Description

Cherry-pick Summary from Canary to v1.4.x-staging

Commits Skipped (Breaking changes / Version bumps / v1.5.x only features)

Commit Description Reason
e5683a7a6 chore: bump all packages to v1.5.0-beta.16 Version bump
d5955d6ab chore: bump version (#7882) Version bump
f15d28bc7 feat(test-utils): add test utilities plugin (#7746) Incompatible with v1.4.x architecture
7da833258 docs: add test-utils plugin to sidebar (#7958) test-utils related
1c9aab3bc feat: electron integration (#7647) New feature for v1.5.x
3149b40ec chore(electron): construct channel prefix (#7833) Electron-related
d8af79613 chore(electron): add electron to peerDependencies (#7858) Electron-related
3d17eaee3 chore(electron): add openapi metadata (#7872) Electron-related
b1f917e5e refactor(electron): hoist setupRenderer (#7936) Electron-related
7306c5af0 feat(electron): allow manual token exchange (#7976) Electron-related
1e18da762 feat(electron): fetch user image securely (#7844) Electron-related
b7de9e7b2 chore(electron): fix race condition (#8025) Electron-related
71a0297b4 feat(oauth-proxy): rewrite for distributed environments (#7720) Major rewrite
dcd933761 feat(stripe): add seat-based billing (#7930) Major new feature
04217429c fix(stripe): drop metered billing (#7951) Breaking change
7950f98df fix(stripe): remove getSubscriptionUsage endpoint (#7949) Breaking change
9b5a78617 fix(stripe): move meters config into plans (#7946) Breaking change
4fb522764 fix(stripe): prevent duplicate line item (#7947) Depends on breaking changes
d692555a6 chore: use throw APIError.from (#7934) v1.5.x API change
ed68d3d3c feat: awaitable social provider config (#4829) API change
00c95728f Revert "feat: make name field optional" (#7617) Revert of feature
10aa14d40 feat(scim): introduce ownership model (#7931) New SCIM feature
4595d12cf feat(scim): add SCIM connection management (#7898) New SCIM feature
0eec06c5f feat: support infer init context (#7923) v1.5.x feature
5d8cde2eb fix: type extends (#7922) v1.5.x feature
cf8322707 feat: auth cli (#7964) New CLI feature
40b8b685f chore: migrate ci workflows to StarSling runners (#7933) CI infrastructure
5466cf758 chore: release workflow should run on github (#8004) CI infrastructure
0d24f3f8b chore(ci): add Docker Compose healthchecks (#8010) CI infrastructure
221b6aef6 chore: fix turbo cache configuration in ci (#7950) CI infrastructure

Commits with Conflicts (Need manual resolution)

Commit Description Conflict Area
fe92103d4 fix(stripe): clarify error when authorizeReference is missing (#7741) Stripe middleware/tests
59a189b8a fix(passkey): compute expirationTime per-request (#7731) Passkey implementation
ac35b2694 chore: bump deps (#7775) Dependencies/lock file
d1b825187 fix(passkey): use deleteVerificationByIdentifier (#7790) Passkey tests
ef26e179a fix(db): skip adapter.delete in deleteWithHooks (#7792) DB tests
755852ae8 fix(microsoft): add verifyIdToken support (#7795) Social tests
c0d6787cc fix(sso): correct IdentityProvider configuration (#7708) SSO tests
6516ba100 fix(sso): fix broken relay state redirect (#7781) SSO implementation
01faefc2c fix(sso): validate aud claim in OIDC tokens (#7816) SSO implementation
bf2b29832 fix(sso): harden SAML ACS error redirects (#7815) SSO implementation
b6fbe93a9 chore(deps): bump @modelcontextprotocol/sdk (#7797) Dependencies
5c6ccfa68 docs: update to React Router v7 (#7457) Documentation
32d0682ec fix(organization): remove unreachable null check (#7825) Organization plugin
639b20fce chore(i18n): re-export types (#7974) i18n package structure
d1b26b1a1 chore: should keep singleton of ctx (#7654) Context handling
5685ecd17 Revert "chore: should keep singleton of ctx" Context handling
64bb8b4d2 fix(custom-session): use getSetCookie() (#7879) Custom session
ae30da5de Revert custom-session fix Custom session
6846aec6e Revert "Revert custom-session fix" Custom session
b313e4f5b docs: updated incorrect import (#7978) Documentation

Safe Commits That Could Still Be Cherry-picked

Commit Description Category
425ec38f8 fix(sso): import cjs dep (#8041) SSO fix
67b53e61b chore(deps): bump fast-xml-parser (#8034) Security bump
07d216dc2 feat: support callback for trusted providers (#7904) Minor feature
0dbff0ee5 test(oauth-provider): update consent assertions (#8029) Test fix
b857d0342 fix(client): infer additional fields (#7986) Client fix
7c52f359b fix(organization): refetch activeMember (#7989) Organization fix
6c52e5f6a fix(captcha): include error codes (#7991) Captcha fix
7f29f4b66 chore(sso): add missing option types (#8002) Types fix
d9b7f7ec4 fix(rate-limit): harden default rules (#8006) Rate limit fix
a4a3727dd fix(email-otp): avoid user enumeration (#7971) Security fix
74e06e426 fix(stripe): fall back to customers.list (#7965) Stripe fix
ad111866c fix(mongo-adapter): updating FK id as ObjectID (#7977) Mongo fix
dce7bf1c0 fix(core): exclude tsconfig.json from package (#7967) Build fix
ddc274072 fix(stripe): propagate trial data in webhooks (#7955) Stripe fix
86ca6d0b1 fix: separate rate limit request/response handling (#7939) Rate limit fix
a30fc6d6b fix(core): coerce string where values (#7860) Adapter fix
150d2a345 fix(one-tap): remove broken FedCM API call (#7928) One-tap fix
0a4da9af3 fix: support all where operators in list filter (#7859) Filter fix
a50d2ba0c fix(sso): only call provisionUser for new users (#7870) SSO fix
5b2604b0b fix(oauth-provider): support scope narrowing (#7873) OAuth fix
e4a0a3e01 fix(oauth): handle refresh_token_expires_in (#7810) OAuth fix
dfeefc4f5 fix: standardize name field masking (#7794) Name field fix
724914227 fix(i18n): allow getLocale when request undefined (#7834) i18n fix
34fe5f98c feat(oauth-provider): export oAuthState (#7843) Minor export
a2e1d5fef feat(sso): add shared redirectURI option (#7818) SSO feature
cc65d9085 feat(providers): add Railway OAuth provider (#7730) New provider
1e30369b2 feat(oauth): support legacy OAuth clients without PKCE (#7609) OAuth feature
cb5ff2889 feat(magic-link): add allowedAttempts options (#5552) Magic link feature
b0a4f6c8e feat(email-otp): support name, image, additionalFields (#7876) Email OTP feature
2d30e9c26 feat(i18n): pass GenericEndpointContext to getLocale (#7866) i18n feature
8ca2de405 fix(nextjs): detect RSC context (#7763) Next.js fix
68f70b7b1 fix(sso): use POST with body params (#7903) SSO fix
5a8e1c0a0 chore(scim): fix empty IN queries (#7808) SCIM fix
e439dfe33 chore(cli): move better-sqlite3 to devDeps (#7771) CLI fix
229c63703 test(email-otp): simplify test assertions (#7884) Test improvement
c5803173f test: use vitest best practice (#7888) Test improvement
62d51d00c test: check client output (#7979) Test improvement
93bbe2a54 docs: improve TanStack Start integration guide (#7742) Documentation
0d30d7ab9 docs: add better-auth-waitlist to community plugins (#7889) Documentation
05d85fea5 docs: update better-auth-paystack name (#7908) Documentation

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/7802 **Author:** [@himself65](https://github.com/himself65) **Created:** 2/4/2026 **Status:** ✅ Merged **Merged:** 2/18/2026 **Merged by:** [@himself65](https://github.com/himself65) **Base:** `main` ← **Head:** `v1.4.x-staging` --- ### 📝 Commits (10+) - [`0545fb3`](https://github.com/better-auth/better-auth/commit/0545fb351e90580a5067e7428aee22e62267f87c) chore(stripe): remove unused `better-call` devDependency (#7664) - [`23443c3`](https://github.com/better-auth/better-auth/commit/23443c3e0dc971f44f32411cffdbef4ae6731765) feat(oauth-provider): add iss parameter to authorization responses (RFC 9207) (#7669) - [`c38cb20`](https://github.com/better-auth/better-auth/commit/c38cb20fbc451a8c11de690b91721ba7e5475a8a) feat(oauth-provider): add configurable rate limiting for OAuth endpoints (#7666) - [`ea40b8c`](https://github.com/better-auth/better-auth/commit/ea40b8c3aa4d5a34964ce5452b3c46f5dfda9b03) docs(oauth-provider): remove production warning (#7671) - [`e94dbcc`](https://github.com/better-auth/better-auth/commit/e94dbcc059badf5e238c788cbce5bb1aa3c03cb4) fix(sso): add `better-call` peerDeps (#7676) - [`6e4c641`](https://github.com/better-auth/better-auth/commit/6e4c6415d746dfbf4fca417faaad48ecf0cb3f3b) fix(stripe): restore `better-call` peerDeps (#7675) - [`8458bed`](https://github.com/better-auth/better-auth/commit/8458bed8d5c98ed4376f185ee48d35621f3481a6) fix(access): allow passing statements directly into `newRole` (#7687) - [`6c5911f`](https://github.com/better-auth/better-auth/commit/6c5911f15d4f15fe2e7afed1c87afcc41b46f87e) docs: add callout for access control bundle size (#7688) - [`7e856d1`](https://github.com/better-auth/better-auth/commit/7e856d12c0d20d0bc5e86d8b5f2d3c8993bd74cc) docs: add sub-pages to `error` docs (#7678) - [`7b69303`](https://github.com/better-auth/better-auth/commit/7b69303943c0298158295aa12ad6c21fdf56d3fa) feat(adapter): improve `select` support (#7667) ### 📊 Changes **103 files changed** (+3550 additions, -594 deletions) <details> <summary>View changed files</summary> 📝 `CLAUDE.md` (+10 -0) 📝 `docs/app/docs/[[...slug]]/page.client.tsx` (+7 -2) 📝 `docs/components/community-plugins-table.tsx` (+26 -40) 📝 `docs/components/docs/layout/toc-thumb.tsx` (+1 -2) 📝 `docs/components/docs/page.client.tsx` (+8 -2) 📝 `docs/components/icons.tsx` (+5 -124) 📝 `docs/components/side-bar.tsx` (+173 -52) 📝 `docs/components/sidebar-content.tsx` (+105 -24) 📝 `docs/components/ui/use-copy-button.tsx` (+1 -2) 📝 `docs/content/docs/comparison.mdx` (+4 -7) 📝 `docs/content/docs/concepts/client.mdx` (+12 -0) 📝 `docs/content/docs/concepts/database.mdx` (+1 -1) 📝 `docs/content/docs/concepts/plugins.mdx` (+1 -1) 📝 `docs/content/docs/integrations/expo.mdx` (+48 -0) 📝 `docs/content/docs/integrations/tanstack.mdx` (+13 -0) 📝 `docs/content/docs/plugins/admin.mdx` (+5 -1) 📝 `docs/content/docs/plugins/generic-oauth.mdx` (+69 -0) 📝 `docs/content/docs/plugins/oauth-provider.mdx` (+55 -4) 📝 `docs/content/docs/plugins/organization.mdx` (+4 -0) 📝 `docs/content/docs/plugins/phone-number.mdx` (+19 -15) _...and 80 more files_ </details> ### 📄 Description ## Cherry-pick Summary from Canary to v1.4.x-staging ### Commits Skipped (Breaking changes / Version bumps / v1.5.x only features) | Commit | Description | Reason | |--------|-------------|--------| | `e5683a7a6` | chore: bump all packages to v1.5.0-beta.16 | Version bump | | `d5955d6ab` | chore: bump version (#7882) | Version bump | | `f15d28bc7` | feat(test-utils): add test utilities plugin (#7746) | Incompatible with v1.4.x architecture | | `7da833258` | docs: add test-utils plugin to sidebar (#7958) | test-utils related | | `1c9aab3bc` | feat: electron integration (#7647) | New feature for v1.5.x | | `3149b40ec` | chore(electron): construct channel prefix (#7833) | Electron-related | | `d8af79613` | chore(electron): add electron to peerDependencies (#7858) | Electron-related | | `3d17eaee3` | chore(electron): add openapi metadata (#7872) | Electron-related | | `b1f917e5e` | refactor(electron): hoist setupRenderer (#7936) | Electron-related | | `7306c5af0` | feat(electron): allow manual token exchange (#7976) | Electron-related | | `1e18da762` | feat(electron): fetch user image securely (#7844) | Electron-related | | `b7de9e7b2` | chore(electron): fix race condition (#8025) | Electron-related | | `71a0297b4` | feat(oauth-proxy): rewrite for distributed environments (#7720) | Major rewrite | | `dcd933761` | feat(stripe): add seat-based billing (#7930) | Major new feature | | `04217429c` | fix(stripe): drop metered billing (#7951) | Breaking change | | `7950f98df` | fix(stripe): remove getSubscriptionUsage endpoint (#7949) | Breaking change | | `9b5a78617` | fix(stripe): move meters config into plans (#7946) | Breaking change | | `4fb522764` | fix(stripe): prevent duplicate line item (#7947) | Depends on breaking changes | | `d692555a6` | chore: use throw APIError.from (#7934) | v1.5.x API change | | `ed68d3d3c` | feat: awaitable social provider config (#4829) | API change | | `00c95728f` | Revert "feat: make name field optional" (#7617) | Revert of feature | | `10aa14d40` | feat(scim): introduce ownership model (#7931) | New SCIM feature | | `4595d12cf` | feat(scim): add SCIM connection management (#7898) | New SCIM feature | | `0eec06c5f` | feat: support infer init context (#7923) | v1.5.x feature | | `5d8cde2eb` | fix: type extends (#7922) | v1.5.x feature | | `cf8322707` | feat: auth cli (#7964) | New CLI feature | | `40b8b685f` | chore: migrate ci workflows to StarSling runners (#7933) | CI infrastructure | | `5466cf758` | chore: release workflow should run on github (#8004) | CI infrastructure | | `0d24f3f8b` | chore(ci): add Docker Compose healthchecks (#8010) | CI infrastructure | | `221b6aef6` | chore: fix turbo cache configuration in ci (#7950) | CI infrastructure | ### Commits with Conflicts (Need manual resolution) | Commit | Description | Conflict Area | |--------|-------------|---------------| | `fe92103d4` | fix(stripe): clarify error when authorizeReference is missing (#7741) | Stripe middleware/tests | | `59a189b8a` | fix(passkey): compute expirationTime per-request (#7731) | Passkey implementation | | `ac35b2694` | chore: bump deps (#7775) | Dependencies/lock file | | `d1b825187` | fix(passkey): use deleteVerificationByIdentifier (#7790) | Passkey tests | | `ef26e179a` | fix(db): skip adapter.delete in deleteWithHooks (#7792) | DB tests | | `755852ae8` | fix(microsoft): add verifyIdToken support (#7795) | Social tests | | `c0d6787cc` | fix(sso): correct IdentityProvider configuration (#7708) | SSO tests | | `6516ba100` | fix(sso): fix broken relay state redirect (#7781) | SSO implementation | | `01faefc2c` | fix(sso): validate aud claim in OIDC tokens (#7816) | SSO implementation | | `bf2b29832` | fix(sso): harden SAML ACS error redirects (#7815) | SSO implementation | | `b6fbe93a9` | chore(deps): bump @modelcontextprotocol/sdk (#7797) | Dependencies | | `5c6ccfa68` | docs: update to React Router v7 (#7457) | Documentation | | `32d0682ec` | fix(organization): remove unreachable null check (#7825) | Organization plugin | | `639b20fce` | chore(i18n): re-export types (#7974) | i18n package structure | | `d1b26b1a1` | chore: should keep singleton of ctx (#7654) | Context handling | | `5685ecd17` | Revert "chore: should keep singleton of ctx" | Context handling | | `64bb8b4d2` | fix(custom-session): use getSetCookie() (#7879) | Custom session | | `ae30da5de` | Revert custom-session fix | Custom session | | `6846aec6e` | Revert "Revert custom-session fix" | Custom session | | `b313e4f5b` | docs: updated incorrect import (#7978) | Documentation | ### Safe Commits That Could Still Be Cherry-picked | Commit | Description | Category | |--------|-------------|----------| | `425ec38f8` | fix(sso): import cjs dep (#8041) | SSO fix | | `67b53e61b` | chore(deps): bump fast-xml-parser (#8034) | Security bump | | `07d216dc2` | feat: support callback for trusted providers (#7904) | Minor feature | | `0dbff0ee5` | test(oauth-provider): update consent assertions (#8029) | Test fix | | `b857d0342` | fix(client): infer additional fields (#7986) | Client fix | | `7c52f359b` | fix(organization): refetch activeMember (#7989) | Organization fix | | `6c52e5f6a` | fix(captcha): include error codes (#7991) | Captcha fix | | `7f29f4b66` | chore(sso): add missing option types (#8002) | Types fix | | `d9b7f7ec4` | fix(rate-limit): harden default rules (#8006) | Rate limit fix | | `a4a3727dd` | fix(email-otp): avoid user enumeration (#7971) | Security fix | | `74e06e426` | fix(stripe): fall back to customers.list (#7965) | Stripe fix | | `ad111866c` | fix(mongo-adapter): updating FK id as ObjectID (#7977) | Mongo fix | | `dce7bf1c0` | fix(core): exclude tsconfig.json from package (#7967) | Build fix | | `ddc274072` | fix(stripe): propagate trial data in webhooks (#7955) | Stripe fix | | `86ca6d0b1` | fix: separate rate limit request/response handling (#7939) | Rate limit fix | | `a30fc6d6b` | fix(core): coerce string where values (#7860) | Adapter fix | | `150d2a345` | fix(one-tap): remove broken FedCM API call (#7928) | One-tap fix | | `0a4da9af3` | fix: support all where operators in list filter (#7859) | Filter fix | | `a50d2ba0c` | fix(sso): only call provisionUser for new users (#7870) | SSO fix | | `5b2604b0b` | fix(oauth-provider): support scope narrowing (#7873) | OAuth fix | | `e4a0a3e01` | fix(oauth): handle refresh_token_expires_in (#7810) | OAuth fix | | `dfeefc4f5` | fix: standardize name field masking (#7794) | Name field fix | | `724914227` | fix(i18n): allow getLocale when request undefined (#7834) | i18n fix | | `34fe5f98c` | feat(oauth-provider): export oAuthState (#7843) | Minor export | | `a2e1d5fef` | feat(sso): add shared redirectURI option (#7818) | SSO feature | | `cc65d9085` | feat(providers): add Railway OAuth provider (#7730) | New provider | | `1e30369b2` | feat(oauth): support legacy OAuth clients without PKCE (#7609) | OAuth feature | | `cb5ff2889` | feat(magic-link): add allowedAttempts options (#5552) | Magic link feature | | `b0a4f6c8e` | feat(email-otp): support name, image, additionalFields (#7876) | Email OTP feature | | `2d30e9c26` | feat(i18n): pass GenericEndpointContext to getLocale (#7866) | i18n feature | | `8ca2de405` | fix(nextjs): detect RSC context (#7763) | Next.js fix | | `68f70b7b1` | fix(sso): use POST with body params (#7903) | SSO fix | | `5a8e1c0a0` | chore(scim): fix empty IN queries (#7808) | SCIM fix | | `e439dfe33` | chore(cli): move better-sqlite3 to devDeps (#7771) | CLI fix | | `229c63703` | test(email-otp): simplify test assertions (#7884) | Test improvement | | `c5803173f` | test: use vitest best practice (#7888) | Test improvement | | `62d51d00c` | test: check client output (#7979) | Test improvement | | `93bbe2a54` | docs: improve TanStack Start integration guide (#7742) | Documentation | | `0d30d7ab9` | docs: add better-auth-waitlist to community plugins (#7889) | Documentation | | `05d85fea5` | docs: update better-auth-paystack name (#7908) | Documentation | --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-13 10:14:10 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#15809