Skip to content

Update Routine updates - #376

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/routine-updates
Open

Update Routine updates#376
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/routine-updates

Conversation

@renovate

@renovate renovate Bot commented May 12, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update Pending
@better-auth/core (source) 1.6.151.6.25 age confidence devDependencies patch
@better-auth/test-utils (source) 1.6.151.6.25 age confidence devDependencies patch
@better-fetch/fetch (source) 1.1.211.3.1 age confidence dependencies minor
@eslint/eslintrc 3.3.53.3.6 age confidence devDependencies patch
@eslint/js (source) 9.39.49.39.5 age confidence devDependencies patch
@playwright/test (source) 1.60.01.62.0 age confidence dependencies minor 1.62.1
@tailwindcss/postcss (source) 4.3.04.3.3 age confidence devDependencies patch
@tanstack/react-start (source) 1.167.651.168.32 age confidence devDependencies minor 1.168.34 (+1)
@types/mdx (source) 2.0.132.0.14 age confidence devDependencies patch
@types/node (source) 24.12.324.13.3 age confidence devDependencies minor
@types/react (source) 19.2.1419.2.17 age confidence devDependencies patch 19.2.18
actions/setup-node (changelog) 48b55a02499707 action digest
adm-zip ^0.5.16^0.6.0 age confidence dependencies minor
better-auth (source) 1.6.151.6.25 age confidence devDependencies patch
concurrently 10.0.310.0.4 age confidence devDependencies patch
convex (source) 1.41.01.42.3 age confidence devDependencies minor 1.43.0
convex-helpers (source) 0.1.1160.1.120 age confidence dependencies patch
convex-test (source) 0.0.510.0.54 age confidence devDependencies patch
eslint (source) 9.39.49.39.5 age confidence devDependencies patch
eslint (source) 10.3.010.8.0 age confidence devDependencies minor
eslint-config-next (source) 16.2.616.2.12 age confidence devDependencies patch
eslint-plugin-react-refresh 0.5.20.5.3 age confidence devDependencies patch
fumadocs-core 16.8.816.13.0 age confidence dependencies minor 16.14.0
fumadocs-ui 16.8.816.13.0 age confidence dependencies minor 16.14.0
globals 17.6.017.8.0 age confidence devDependencies minor
jose 6.2.36.2.4 age confidence dependencies patch 6.2.6 (+1)
next (source) 16.2.616.2.12 age confidence devDependencies patch
next (source) 16.2.616.2.12 age confidence dependencies patch
pkg-pr-new (source) 0.0.710.0.82 age confidence devDependencies patch 0.0.86 (+2)
postcss (source) 8.5.148.5.24 age confidence devDependencies patch 8.5.25
prettier (source) 3.8.33.9.6 age confidence devDependencies minor
raven-actions/actionlint v2.1.2v2.2.0 age confidence action minor
react (source) 19.2.619.2.8 age confidence devDependencies patch
react (source) 19.2.619.2.8 age confidence dependencies patch
react-dom (source) 19.2.619.2.8 age confidence devDependencies patch
react-dom (source) 19.2.619.2.8 age confidence dependencies patch
remeda (source) 2.34.02.39.0 age confidence dependencies minor
semver 7.8.07.8.5 age confidence dependencies patch
tailwindcss (source) 4.3.04.3.3 age confidence devDependencies patch
type-fest 5.6.05.8.0 age confidence dependencies minor
typescript-eslint (source) 8.59.28.65.0 age confidence devDependencies minor
vitest (source) 4.1.54.1.10 age confidence devDependencies patch
zizmorcore/zizmor-action v0.5.6v0.6.0 age confidence action minor v0.6.1

Release Notes

better-auth/better-auth (@​better-auth/core)

v1.6.25

Compare Source

Patch Changes
  • #​10294 0ffd1fb Thanks @​jsj! - Send Apple OAuth PKCE code challenges during authorization so callback token exchanges include a matching code verifier.

v1.6.24

Compare Source

Patch Changes
  • #​9862 54fab08 Thanks @​OrangeManLi! - Fix a request-state AsyncLocalStorage initialization race that could intermittently throw No request state found. Please make sure you are calling this function within a runWithRequestState callback. ensureAsyncStorage() now memoizes its in-flight initialization so concurrent first-callers share a single AsyncLocalStorage instance instead of each constructing one and the last write winning. This surfaced on serverless cold start (e.g. Cloudflare Workers) where the first requests arrive before the lazy node:async_hooks import settles, causing runWithRequestState().run() and a nested getCurrentRequestState() to land on different instances.

  • #​10376 c4d1dda Thanks @​ping-maxwell! - Pass the request endpoint context as a third argument to verifyIdToken, so custom ID token verifiers can read request headers (for example Apple's user-agent requirement).

v1.6.23

Compare Source

v1.6.22

Compare Source

Patch Changes
  • #​10241 8bd43d9 Thanks @​gustavovalverde! - Refuse HTTP redirects on server-side OAuth requests

    Better Auth refuses HTTP redirects on the server-side OAuth requests it makes: the token exchange, token refresh, client-credentials, token introspection, and JWKS requests. A provider endpoint cannot redirect one of these requests to an unintended internal address. Conformant OAuth providers answer these endpoints with a direct response and never redirect, so standard integrations are unaffected.

v1.6.21

Compare Source

Patch Changes
  • #​10180 90d509e Thanks @​ping-maxwell! - adapter.update now returns null when no row matches or when it is called without a predicate. Use updateMany for intentional bulk updates.

    The Kysely MySQL adapter no longer returns a row after a guarded update misses. Updates with an id guard also return the targeted row when id is not the first predicate. Keep MySQL rows-matched semantics enabled, which mysql2 does by default through FOUND_ROWS; disabling it can make idempotent updates look like misses.

    The Prisma adapter now returns null when an update guard excludes the targeted row instead of surfacing Prisma's not-found exception. The shared adapter test suite now asserts the same fail-closed update behavior for adapter implementations.

  • #​10197 816d7f9 Thanks @​Paola3stefania! - Google sign-in now accepts hd: "*" to allow any Google Workspace hosted domain while still rejecting tokens with no hosted-domain claim.

    Google One Tap now applies the configured Google hosted-domain restriction before creating a session.

  • #​10198 570267c Thanks @​rachit367! - Honor disableMigration on plugin schema tables. Tables flagged with disableMigration: true are now skipped by better-auth generate (Drizzle and Prisma output) and by the runtime migrator, instead of being emitted and created anyway. The flag was previously dropped while assembling the table list, so it had no effect.

  • #​10203 5953157 Thanks @​bytaesu! - Rate limiting no longer trusts multi-hop X-Forwarded-For chains, preventing a client behind an appending proxy from spoofing the leftmost hop to bypass the per-IP rate limit. Single-value IP headers continue to work. To key the real client behind a proxy chain, set advanced.ipAddress.trustedProxies to your reverse-proxy IPs or CIDR ranges (the chain is walked right to left, skipping trusted hops), or point advanced.ipAddress.ipAddressHeaders at a single trusted client-IP header.

v1.6.20

Compare Source

v1.6.19

Compare Source

Patch Changes
  • #​10086 5bd5e1c Thanks @​gustavovalverde! - Refresh-token rotation and token revocation, two-factor backup-code regeneration, device-code claiming, and organization invitation acceptance now work on Prisma. Concurrent or repeat requests in these flows could previously return an error on Prisma instead of the expected result.

    On MongoDB servers older than 5.0, these flows and other guarded value updates (rate-limit window resets, API-key refills) no longer fail with an empty-update error.

    @better-auth/core: incrementOne now reports a clear error when called with no increment and no set.

  • #​10070 a787e0b Thanks @​gustavovalverde! - Single-use verification flows no longer hang on database adapters that use a one-connection pool. This fixes magic-link verification and similar token checks in connection-limited serverless database setups.

v1.6.18

Compare Source

Patch Changes
  • #​9583 b21a5f7 Thanks @​GautamBytes! - Fix plugin-provided client methods and additional session fields not being inferred in composite monorepos.

v1.6.17

Compare Source

Patch Changes
  • #​9993 baeaa00 Thanks @​gustavovalverde! - Add the optional incrementOne adapter method and the optional SecondaryStorage.increment method. incrementOne atomically applies signed numeric deltas to a single row under a where-clause guard (for example, decrementing a remaining-uses counter only while it is still positive) and returns the updated row, or null when the guard matched no row. Adapters that do not implement it natively keep working through a transaction-based fallback. SecondaryStorage.increment atomically increments a counter and sets its time-to-live only when the key is first created.

  • #​9987 7343284 Thanks @​bytaesu! - Fixed a memory leak where the JWKS cache could grow on every access token verification.

  • #​10003 fdef997 Thanks @​gustavovalverde! - Microsoft Entra ID sign-in now honors the configured tenant restriction. tenantId: "organizations" rejects personal Microsoft accounts, and tenantId: "consumers" rejects work and school accounts. Both were accepted before.

  • #​9993 baeaa00 Thanks @​gustavovalverde! - Concurrent requests can no longer slip past the configured rate limit. The in-memory rate-limit store no longer grows without bound, and the database backend removes expired entries on its own. A custom rate-limit storage may implement a new optional consume method for strict enforcement; without it, the previous behavior is kept and a one-time warning is logged.

  • #​10003 fdef997 Thanks @​gustavovalverde! - A Reddit user with no email now receives a non-routable placeholder address (<id>@&#8203;reddit.invalid) instead of one on the real reddit.com domain, so it cannot match a deliverable mailbox. The address stays unverified, and mapProfileToUser can supply a real email.

  • #​9993 baeaa00 Thanks @​gustavovalverde! - Add internalAdapter.reserveVerificationValue. It atomically records a single-use marker (such as a replay tombstone) so that exactly one of several concurrent callers succeeds and the rest observe that the marker is already taken. Database-backed verification storage is atomic; secondary-storage-only verification is best-effort.

  • #​9990 1dbf5bb Thanks @​gustavovalverde! - Hardens how requests are trusted across several flows. Rate limiting is now enforced even when a client IP cannot be determined, instead of being skipped. When baseURL is not configured, password-reset and verification links use the current request's host rather than the host of the first request the server handled, and a request-scoped trustedOrigins callback no longer affects other concurrent requests. The OAuth proxy, Google One Tap, and the Expo authorization proxy reject redirect and callback targets that are not in trustedOrigins. Google reCAPTCHA and Cloudflare Turnstile accept optional expectedAction and allowedHostnames to reject tokens minted for a different action or hostname. Server-side fetches reject additional reserved IPv6 ranges, and malformed redirect parameters return a 400 instead of a 500.

  • #​10003 fdef997 Thanks @​gustavovalverde! - WeChat sign-in now succeeds with the documented default setup, which previously failed because WeChat returns no email address. The created user receives a stable, unverified placeholder email; supply a real one with mapProfileToUser.

v1.6.16

Compare Source

Patch Changes
  • #​9974 cb1cbfa Thanks @​Bekacru! - Validate Facebook opaque access tokens against the configured app. Previously verifyIdToken returned true for any non-JWT token and getUserInfo called Graph /me with the caller-supplied token without checking which app issued it, so tokens issued for other Facebook apps were not distinguished on the direct sign-in path. Facebook tokens are now inspected via the debug_token endpoint, requiring is_valid, an app_id that matches one of the configured client ids, and a user_id that matches the returned profile, before the token is accepted. A client secret must be configured for access-token sign-in to work.

  • #​9974 cb1cbfa Thanks @​Bekacru! - Enforce the Google hd (hosted domain) option against the id token. Previously hd was only sent to Google as an authorization hint, which does not by itself restrict sign-in to the configured Workspace domain. When hd is set, the hd claim on the verified id token (verifyIdToken) and the decoded callback profile (getUserInfo) must be present and match, otherwise sign-in is rejected.

  • #​9974 cb1cbfa Thanks @​Bekacru! - Scope the JWKS cache per source. Access-token verification previously kept a single global key set and reused it whenever it contained a key matching the token's kid, without considering which JWKS source the verification was for. When verifying tokens against more than one source, a token could end up matched against keys fetched for a different source if the two shared a kid. The cache is now keyed per JWKS source and honors a TTL, so each verification uses the keys for its own source and rotated or removed keys are no longer used after the TTL elapses.

  • #​9974 cb1cbfa Thanks @​Bekacru! - Cryptographically verify PayPal ID tokens on direct sign-in. Previously verifyIdToken only decoded the JWT and checked that a sub claim was present, performing no signature, issuer, audience, or expiration checks, so any well-formed token paired with a valid access token would be accepted. The token is now verified against PayPal's issuer and published JWKS (RS256) or the client secret (HS256), with the aud pinned to the configured clientId, a maxTokenAge bound, and the nonce checked when supplied.

  • #​9974 cb1cbfa Thanks @​Bekacru! - Stop mapping the Reddit oauth_client_id to the user's email. Reddit's identity scope does not return an email address, and the provider previously stored oauth_client_id (which identifies the OAuth application and is the same for every user of the app) as user.email with has_verified_email as emailVerified. This collapsed all Reddit users of the same app onto a single "verified" email, which could enable implicit account linking/takeover. The Reddit provider now uses the email returned from mapProfileToUser when provided, otherwise falls back to a unique per-user synthetic address (<reddit-user-id>@&#8203;reddit.com), and no longer marks it as verified. Provide a real email via mapProfileToUser if you need the actual address.

  • #​9974 cb1cbfa Thanks @​Bekacru! - Fix verifyAccessToken silently dropping the configured audience check during remote introspection. Previously, when a required audience was set in verifyOptions but the introspection response omitted the aud claim, audience validation was skipped and any active token from the issuer was accepted — so a token issued for a different resource or client on the same issuer could also pass verification. Verification now requires the claim: a missing or mismatching aud is rejected. Authorization servers that legitimately omit aud from introspection responses (it is OPTIONAL per RFC 7662) can opt back into the old behavior with the new remoteVerify.allowMissingAudience: true flag, which still rejects mismatching audiences.

better-auth/better-auth (@​better-auth/test-utils)

v1.6.25

Compare Source

Patch Changes

v1.6.24

Compare Source

Patch Changes

v1.6.23

Compare Source

Patch Changes

v1.6.22

Compare Source

Patch Changes

v1.6.21

Compare Source

Patch Changes
  • #​10180 90d509e Thanks @​ping-maxwell! - adapter.update now returns null when no row matches or when it is called without a predicate. Use updateMany for intentional bulk updates.

    The Kysely MySQL adapter no longer returns a row after a guarded update misses. Updates with an id guard also return the targeted row when id is not the first predicate. Keep MySQL rows-matched semantics enabled, which mysql2 does by default through FOUND_ROWS; disabling it can make idempotent updates look like misses.

    The Prisma adapter now returns null when an update guard excludes the targeted row instead of surfacing Prisma's not-found exception. The shared adapter test suite now asserts the same fail-closed update behavior for adapter implementations.

  • Updated dependencies [e0762a1, 882cf9e, f52e1ab, 90d509e, b5bec19, 816d7f9, 239bcc8, 1bc370a, 570267c, 461ca6f, 88409b0, 5953157, b046f9e, ae647b4]:

v1.6.20

Compare Source

Patch Changes

v1.6.19

Compare Source

Patch Changes

v1.6.18

Compare Source

Patch Changes

v1.6.17

Compare Source

Patch Changes

v1.6.16

Compare Source

Patch Changes
better-auth/better-fetch (@​better-fetch/fetch)

v1.3.1

Compare Source

   🐞 Bug Fixes
    [View changes on GitHub](https://redirect.github.com/better-auth/better-fetch/compare/v1.3.0...

Note

PR body was truncated to here.


Configuration

📅 Schedule: (in timezone America/Los_Angeles)

  • Branch creation
    • Monday through Friday (* * * * 1-5)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@vercel

vercel Bot commented May 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
better-auth Ready Ready Preview Jul 31, 2026 5:53pm

Request Review

@pkg-pr-new

pkg-pr-new Bot commented May 12, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@convex-dev/better-auth@376

commit: 5fab04d

@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 63dc237 to 87fb859 Compare May 13, 2026 09:38
@renovate renovate Bot changed the title Update Routine updates to v1.6.10 Update Routine updates May 13, 2026
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 87fb859 to 8e9ad8a Compare May 14, 2026 18:34
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 8e9ad8a to 4d7b750 Compare May 14, 2026 20:25
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 4d7b750 to 1787003 Compare May 15, 2026 01:29
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 1787003 to 931f226 Compare May 15, 2026 17:14
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 931f226 to 267cd41 Compare May 16, 2026 12:42
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 267cd41 to e56c97b Compare May 16, 2026 17:23
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from e56c97b to 0351eb0 Compare May 16, 2026 21:10
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 0351eb0 to 1c30557 Compare May 17, 2026 09:36
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 1c30557 to fe7ffe2 Compare May 18, 2026 01:28
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from fe7ffe2 to 8545fd6 Compare May 18, 2026 11:11
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 8545fd6 to 541d1b4 Compare May 18, 2026 20:39
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 541d1b4 to 470bc50 Compare May 19, 2026 01:42
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from f63f20d to 2d561dd Compare May 22, 2026 09:53
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 2d561dd to 8ebc2c3 Compare May 22, 2026 15:47
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 8ebc2c3 to c85954d Compare May 22, 2026 17:57
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from c85954d to 1540bb6 Compare May 22, 2026 23:08
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 1540bb6 to bc74f48 Compare May 22, 2026 23:23
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from bc74f48 to 6fea059 Compare May 23, 2026 09:56
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 6fea059 to 6c27629 Compare May 23, 2026 12:24
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 6c27629 to 8a95d30 Compare May 23, 2026 21:41
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 8a95d30 to 7ac7b81 Compare May 24, 2026 00:48
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 7ac7b81 to 2f2291a Compare May 24, 2026 08:41
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 2f2291a to 9da4dbe Compare May 24, 2026 20:35
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 9da4dbe to 21066f2 Compare May 25, 2026 01:58
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from 21066f2 to e4a7540 Compare May 26, 2026 15:43
@renovate
renovate Bot force-pushed the renovate/routine-updates branch from e4a7540 to 940f01b Compare May 27, 2026 01:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants