[GH-ISSUE #5648] account linking losts current session #27635

Closed
opened 2026-04-17 18:44:36 -05:00 by GiteaMirror · 5 comments
Owner

Originally created by @jabedzaman on GitHub (Oct 28, 2025).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/5648

Is this suited for github?

  • Yes, this is suited for github

To Reproduce

auth client:

export const authClient = createAuthClient({
  // baseURL: `${API_URL}`,
  baseURL: "http://127.0.0.1:8000",
  plugins: [
    polarClient(),
    emailOTPClient(),
    expoClient({
      scheme: "myapp",
      storagePrefix: "myapp",
      storage: SecureStore,
    }),
  ],
});
 <Button
        onPress={async () => {
          await linkSocial({
            provider: "spotify",
            scopes: ["user-read-email", "user-read-private"],
            callbackURL: "/onboarding/music",
          }).then(({ data }) => {
            console.log("Redirecting to:", data?.url);
          });
        }}
      >
        <Text>Link Spotify Account</Text>
      </Button>

Current vs. Expected behavior

The issue I am facing is after a successfull account linking, my auth session is lost and i need to relogin again, but yeah the account do gets linked

What version of Better Auth are you using?

^1.3.27

System info

{
  "system": {
    "platform": "darwin",
    "arch": "arm64",
    "version": "Darwin Kernel Version 25.0.0: Wed Sep 17 21:38:03 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T8112",
    "release": "25.0.0",
    "cpuCount": 8,
    "cpuModel": "Apple M2",
    "totalMemory": "16.00 GB",
    "freeMemory": "0.18 GB"
  },
  "node": {
    "version": "v22.19.0",
    "env": "production"
  },
  "packageManager": {
    "name": "npm",
    "version": "10.9.3"
  },
  "frameworks": [
    {
      "name": "react",
      "version": "^19.2.0"
    },
    {
      "name": "hono",
      "version": "^4.9.8"
    }
  ],
  "databases": [
    {
      "name": "mongodb",
      "version": "^6.20.0"
    }
  ],
  "betterAuth": {
    "version": "^1.3.27",
    "config": {
      "databaseHooks": {
        "user": {
          "create": {}
        }
      },
      "emailAndPassword": {
        "enabled": true
      },
      "socialProviders": {
        "google": {
          "clientId": "[REDACTED]",
          "clientSecret": "[REDACTED]",
          "redirectUri": "https://tunnel.jabed.dev/api/auth/callback/google"
        },
        "spotify": {
          "clientId": "[REDACTED]",
          "clientSecret": "[REDACTED]",
          "redirectUri": "http://127.0.0.1:8000/api/auth/callback/spotify"
        }
      },
      "account": {
        "accountLinking": {
          "enabled": true,
          "allowDifferentEmails": true,
          "trustedProviders": [
            "google",
            "spotify"
          ]
        }
      },
      "plugins": [
        {
          "name": "expo",
          "config": {
            "id": "expo",
            "hooks": {
              "after": [
                {}
              ]
            },
            "endpoints": {}
          }
        },
        {
          "name": "email-otp",
          "config": {
            "id": "email-otp",
            "endpoints": {},
            "hooks": {
              "after": [
                {}
              ]
            },
            "$ERROR_CODES": {
              "OTP_EXPIRED": "otp expired",
              "INVALID_OTP": "Invalid OTP",
              "INVALID_EMAIL": "Invalid email",
              "USER_NOT_FOUND": "User not found",
              "TOO_MANY_ATTEMPTS": "Too many attempts"
            },
            "rateLimit": [
              {
                "window": 60,
                "max": 3
              },
              {
                "window": 60,
                "max": 3
              },
              {
                "window": 60,
                "max": 3
              },
              {
                "window": 60,
                "max": 3
              }
            ]
          }
        },
        {
          "name": "polar",
          "config": {
            "id": "polar",
            "endpoints": {}
          }
        }
      ],
      "trustedOrigins": [
        "exp://*",
        "exp://192.168.1.6:8081/--/"
      ]
    }
  }
}

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

Client

Auth config (if applicable)

export const auth = betterAuth({
  database: mongodbAdapter(db, { debugLogs: false, usePlural: true }),
  databaseHooks: {
    user: {
      create: {
        after: async (user) => {
          await Profile.create({
            name: user.name ? user.name : user.email?.split("@")[0],
          });
        },
      },
    },
  },
  emailAndPassword: { enabled: true },
  socialProviders: {
    google: {
      clientId: env.GOOGLE_CLIENT_ID,
      clientSecret: env.GOOGLE_CLIENT_SECRET,
      redirectUri: env.GOOGLE_REDIRECT_URI,
    },
    spotify: {
      clientId: env.SPOTIFY_CLIENT_ID,
      clientSecret: env.SPOTIFY_CLIENT_SECRET,
      redirectUri: env.SPOTIFY_REDIRECT_URI,
    },
  },
  account: {
    accountLinking: {
      enabled: true,
      allowDifferentEmails: true,
      trustedProviders: ["google", "spotify"],
    },
  },
  plugins: [
    expo({}),
    emailOTP({
      sendVerificationOTP: async ({ email, otp, type }) => {
        if (type === "sign-in") {
          if (env.APP_ENV === "development") {
            logger.info(`Login OTP for ${email}: ${otp}`);
            return;
          }
          const html = await render(LoginOtpEmail({ validationCode: otp }));
          await transporter.sendMail({
            to: email,
            from: env.SMTP_FROM,
            subject: "Your Login OTP Code",
            html,
          });
        }
      },
    }),
    polar({
      client: polarClient,
      createCustomerOnSignUp: true,
      use: [
        checkout({
          products: CONSTS.PRODUCTS,
          successUrl: env.POLAR_SUCCESS_URL,
          authenticatedUsersOnly: true,
        }),
        portal(),
        usage(),
        webhooks({
          secret: env.POLAR_WEBHOOK_SECRET,
          onOrderCreated: async ({ data }) => {
            logger.info(
              `Order created: ${data.id} for customer ${data.customerId}`
            );
          },
        }),
      ],
    }),
  ],
  trustedOrigins: ["exp://*", "exp://192.168.1.6:8081/--/"], // ##TODO: restrct this further
})

Additional context

No response

Originally created by @jabedzaman on GitHub (Oct 28, 2025). Original GitHub issue: https://github.com/better-auth/better-auth/issues/5648 ### Is this suited for github? - [x] Yes, this is suited for github ### To Reproduce auth client: ```ts export const authClient = createAuthClient({ // baseURL: `${API_URL}`, baseURL: "http://127.0.0.1:8000", plugins: [ polarClient(), emailOTPClient(), expoClient({ scheme: "myapp", storagePrefix: "myapp", storage: SecureStore, }), ], }); ``` ```tsx <Button onPress={async () => { await linkSocial({ provider: "spotify", scopes: ["user-read-email", "user-read-private"], callbackURL: "/onboarding/music", }).then(({ data }) => { console.log("Redirecting to:", data?.url); }); }} > <Text>Link Spotify Account</Text> </Button> ``` ### Current vs. Expected behavior The issue I am facing is after a successfull account linking, my auth session is lost and i need to relogin again, but yeah the account do gets linked ### What version of Better Auth are you using? ^1.3.27 ### System info ```bash { "system": { "platform": "darwin", "arch": "arm64", "version": "Darwin Kernel Version 25.0.0: Wed Sep 17 21:38:03 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T8112", "release": "25.0.0", "cpuCount": 8, "cpuModel": "Apple M2", "totalMemory": "16.00 GB", "freeMemory": "0.18 GB" }, "node": { "version": "v22.19.0", "env": "production" }, "packageManager": { "name": "npm", "version": "10.9.3" }, "frameworks": [ { "name": "react", "version": "^19.2.0" }, { "name": "hono", "version": "^4.9.8" } ], "databases": [ { "name": "mongodb", "version": "^6.20.0" } ], "betterAuth": { "version": "^1.3.27", "config": { "databaseHooks": { "user": { "create": {} } }, "emailAndPassword": { "enabled": true }, "socialProviders": { "google": { "clientId": "[REDACTED]", "clientSecret": "[REDACTED]", "redirectUri": "https://tunnel.jabed.dev/api/auth/callback/google" }, "spotify": { "clientId": "[REDACTED]", "clientSecret": "[REDACTED]", "redirectUri": "http://127.0.0.1:8000/api/auth/callback/spotify" } }, "account": { "accountLinking": { "enabled": true, "allowDifferentEmails": true, "trustedProviders": [ "google", "spotify" ] } }, "plugins": [ { "name": "expo", "config": { "id": "expo", "hooks": { "after": [ {} ] }, "endpoints": {} } }, { "name": "email-otp", "config": { "id": "email-otp", "endpoints": {}, "hooks": { "after": [ {} ] }, "$ERROR_CODES": { "OTP_EXPIRED": "otp expired", "INVALID_OTP": "Invalid OTP", "INVALID_EMAIL": "Invalid email", "USER_NOT_FOUND": "User not found", "TOO_MANY_ATTEMPTS": "Too many attempts" }, "rateLimit": [ { "window": 60, "max": 3 }, { "window": 60, "max": 3 }, { "window": 60, "max": 3 }, { "window": 60, "max": 3 } ] } }, { "name": "polar", "config": { "id": "polar", "endpoints": {} } } ], "trustedOrigins": [ "exp://*", "exp://192.168.1.6:8081/--/" ] } } } ``` ### Which area(s) are affected? (Select all that apply) Client ### Auth config (if applicable) ```typescript export const auth = betterAuth({ database: mongodbAdapter(db, { debugLogs: false, usePlural: true }), databaseHooks: { user: { create: { after: async (user) => { await Profile.create({ name: user.name ? user.name : user.email?.split("@")[0], }); }, }, }, }, emailAndPassword: { enabled: true }, socialProviders: { google: { clientId: env.GOOGLE_CLIENT_ID, clientSecret: env.GOOGLE_CLIENT_SECRET, redirectUri: env.GOOGLE_REDIRECT_URI, }, spotify: { clientId: env.SPOTIFY_CLIENT_ID, clientSecret: env.SPOTIFY_CLIENT_SECRET, redirectUri: env.SPOTIFY_REDIRECT_URI, }, }, account: { accountLinking: { enabled: true, allowDifferentEmails: true, trustedProviders: ["google", "spotify"], }, }, plugins: [ expo({}), emailOTP({ sendVerificationOTP: async ({ email, otp, type }) => { if (type === "sign-in") { if (env.APP_ENV === "development") { logger.info(`Login OTP for ${email}: ${otp}`); return; } const html = await render(LoginOtpEmail({ validationCode: otp })); await transporter.sendMail({ to: email, from: env.SMTP_FROM, subject: "Your Login OTP Code", html, }); } }, }), polar({ client: polarClient, createCustomerOnSignUp: true, use: [ checkout({ products: CONSTS.PRODUCTS, successUrl: env.POLAR_SUCCESS_URL, authenticatedUsersOnly: true, }), portal(), usage(), webhooks({ secret: env.POLAR_WEBHOOK_SECRET, onOrderCreated: async ({ data }) => { logger.info( `Order created: ${data.id} for customer ${data.customerId}` ); }, }), ], }), ], trustedOrigins: ["exp://*", "exp://192.168.1.6:8081/--/"], // ##TODO: restrct this further }) ``` ### Additional context _No response_
GiteaMirror added the locked label 2026-04-17 18:44:36 -05:00
Author
Owner

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

Hi @jabedzaman! I'm Dosu and I’m helping the better-auth team.

This is a known issue with Better Auth in Expo/React Native environments: after account linking (or social sign-in), the session may not update immediately and can appear lost until the app is restarted. This usually happens if the session cookie from the OAuth redirect is not properly captured and stored, or if the session state isn't refreshed on the client side.

To work around this, call await authClient.getSession() right after the linking flow completes—this forces a session refresh and should restore the session without needing a restart. Also, make sure your backend's trustedOrigins includes your app's scheme (like exp:// or your custom scheme), and that your SecureStore adapter is correctly implemented to handle session cookies synchronously for Better Auth's expectations. If you use a custom adapter, see this example for bridging async SecureStore with Better Auth's sync storage interface.

If you are merging accounts, use the onLinkAccount callback to attach the new provider to the existing user, and avoid swapping user IDs—this preserves session continuity and avoids breaking session validation features. For more details and best practices, see this discussion and this Expo session workaround.

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:3458223331 --> @dosubot[bot] commented on GitHub (Oct 28, 2025): <!-- Greeting --> Hi @jabedzaman! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the better-auth team. <!-- Answer --> This is a known issue with Better Auth in Expo/React Native environments: after account linking (or social sign-in), the session may not update immediately and can appear lost until the app is restarted. This usually happens if the session cookie from the OAuth redirect is not properly captured and stored, or if the session state isn't refreshed on the client side. To work around this, call `await authClient.getSession()` right after the linking flow completes—this forces a session refresh and should restore the session without needing a restart. Also, make sure your backend's `trustedOrigins` includes your app's scheme (like `exp://` or your custom scheme), and that your SecureStore adapter is correctly implemented to handle session cookies synchronously for Better Auth's expectations. If you use a custom adapter, see [this example](https://github.com/better-auth/better-auth/issues/5426) for bridging async SecureStore with Better Auth's sync storage interface. If you are merging accounts, use the `onLinkAccount` callback to attach the new provider to the existing user, and avoid swapping user IDs—this preserves session continuity and avoids breaking session validation features. For more details and best practices, see [this discussion](https://github.com/better-auth/better-auth/issues/4180) and [this Expo session workaround](https://github.com/better-auth/better-auth/issues/3711). <!-- 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/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/7d8ce3f3-8e9d-4d56-8322-af6ef85d3c54?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/5648)
Author
Owner

@jabedzaman commented on GitHub (Oct 28, 2025):

hey, @dosu, my trustedOrigin includes proper required origins, and also await authClient.getSession() wont have an effect here, since the router stack gets redirected to / as soon as session is lost...

my router stack:

import { Redirect, Stack } from "expo-router";
import { ActivityIndicator, View } from "react-native";
import { ROUTES } from "~/constants/routes";
import { GeoLocationProvider, SocketProvider } from "~/hooks";
import { useSession } from "~/hooks/useSession";

export default function AppLayout() {
  const { session, isLoading } = useSession();

  // Show loading spinner while checking authentication or initializing
  if (isLoading) {
    return (
      <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
        <ActivityIndicator size="large" />
      </View>
    );
  }

  // Only require authentication within the (app) group's layout as users
  // need to be able to access the (auth) group and sign in again.
  if (!session) {
    // On web, static rendering will stop here as the user is not authenticated
    // in the headless Node process that the pages are rendered in.
    return <Redirect href="/landing" />;
  }

  // This layout can be deferred because it's not the root layout.
  return (
    <GeoLocationProvider>
      <SocketProvider>
        <Stack>
          {ROUTES.APP.map(({ name, options }) => (
            <Stack.Screen key={name} name={name} options={options as any} />
          ))}
        </Stack>
      </SocketProvider>
    </GeoLocationProvider>
  );
}
<!-- gh-comment-id:3458255431 --> @jabedzaman commented on GitHub (Oct 28, 2025): hey, @dosu, my trustedOrigin includes proper required origins, and also `await authClient.getSession() ` wont have an effect here, since the router stack gets redirected to `/` as soon as session is lost... my router stack: ```tsx import { Redirect, Stack } from "expo-router"; import { ActivityIndicator, View } from "react-native"; import { ROUTES } from "~/constants/routes"; import { GeoLocationProvider, SocketProvider } from "~/hooks"; import { useSession } from "~/hooks/useSession"; export default function AppLayout() { const { session, isLoading } = useSession(); // Show loading spinner while checking authentication or initializing if (isLoading) { return ( <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}> <ActivityIndicator size="large" /> </View> ); } // Only require authentication within the (app) group's layout as users // need to be able to access the (auth) group and sign in again. if (!session) { // On web, static rendering will stop here as the user is not authenticated // in the headless Node process that the pages are rendered in. return <Redirect href="/landing" />; } // This layout can be deferred because it's not the root layout. return ( <GeoLocationProvider> <SocketProvider> <Stack> {ROUTES.APP.map(({ name, options }) => ( <Stack.Screen key={name} name={name} options={options as any} /> ))} </Stack> </SocketProvider> </GeoLocationProvider> ); } ```
Author
Owner

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

This is a common timing issue in Expo/React Native with Better Auth: after account linking, the session cookie may not be updated in SecureStore before your router checks session state, so useSession() returns null and triggers the redirect immediately. Even if trustedOrigins and storage are set up correctly, the redirect logic in your router runs before you have a chance to refresh the session with getSession().

A practical workaround is to introduce a temporary "post-linking" loading state in your router stack. Instead of redirecting as soon as session is null, check if you're returning from an account linking flow (for example, by inspecting the route or a query param), and show a spinner or loading screen while you call authClient.getSession() to force a session refresh. Only redirect to /landing if session is still null after this refresh attempt.

You can also debounce or delay the redirect logic in useSession to give the session time to update after linking. See this discussion for examples of handling session state and redirects in React routers, and this Expo session restoration thread for more details on session timing and deep link handling.

If you want a code pattern, let me know how you trigger the account linking callback and I can suggest a way to patch your router logic to avoid the immediate redirect.

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:3458275175 --> @dosubot[bot] commented on GitHub (Oct 28, 2025): <!-- Answer --> This is a common timing issue in Expo/React Native with Better Auth: after account linking, the session cookie may not be updated in SecureStore before your router checks session state, so useSession() returns null and triggers the redirect immediately. Even if trustedOrigins and storage are set up correctly, the redirect logic in your router runs before you have a chance to refresh the session with getSession(). A practical workaround is to introduce a temporary "post-linking" loading state in your router stack. Instead of redirecting as soon as session is null, check if you're returning from an account linking flow (for example, by inspecting the route or a query param), and show a spinner or loading screen while you call authClient.getSession() to force a session refresh. Only redirect to /landing if session is still null after this refresh attempt. You can also debounce or delay the redirect logic in useSession to give the session time to update after linking. See [this discussion](https://github.com/better-auth/better-auth/issues/1009) for examples of handling session state and redirects in React routers, and [this Expo session restoration thread](https://github.com/better-auth/better-auth/discussions/3982#discussioncomment-14096720) for more details on session timing and deep link handling. If you want a code pattern, let me know how you trigger the account linking callback and I can suggest a way to patch your router logic to avoid the immediate redirect. <!-- 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/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/8a5b998a-51a4-4b30-b721-b88f3cdc2e91?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/5648)
Author
Owner

@jabedzaman commented on GitHub (Oct 28, 2025):

@Bekacru , the issue persists, after a succesful account linking the session is lost, even when redirects are not added on my router stack..

<!-- gh-comment-id:3458287352 --> @jabedzaman commented on GitHub (Oct 28, 2025): @Bekacru , the issue persists, after a succesful account linking the session is lost, even when redirects are not added on my router stack..
Author
Owner

@dosubot[bot] commented on GitHub (Jan 27, 2026):

Hi, @jabedzaman. I'm Dosu, and I'm helping the better-auth team manage their backlog and am marking this issue as stale.

Issue Summary:

  • You reported that after linking a Spotify account with Better Auth v1.3.27, your session is lost and requires re-login despite successful linking.
  • The issue is linked to a known timing problem in Expo/React Native where the session cookie isn't updated before the router checks session state, causing immediate redirects.
  • A suggested workaround was to add a post-linking loading state and call authClient.getSession() to refresh the session before redirecting.
  • You confirmed the problem persists even without router redirects, indicating the issue remains unresolved.

Next Steps:

  • Please let me know if this issue is still relevant with the latest version of better-auth by commenting here to keep the discussion open.
  • If I don’t hear back within 7 days, I will automatically close this issue.

Thanks for your understanding and contribution!

<!-- gh-comment-id:3806097153 --> @dosubot[bot] commented on GitHub (Jan 27, 2026): Hi, @jabedzaman. I'm [Dosu](https://dosu.dev), and I'm helping the better-auth team manage their backlog and am marking this issue as stale. **Issue Summary:** - You reported that after linking a Spotify account with Better Auth v1.3.27, your session is lost and requires re-login despite successful linking. - The issue is linked to a known timing problem in Expo/React Native where the session cookie isn't updated before the router checks session state, causing immediate redirects. - A suggested workaround was to add a post-linking loading state and call `authClient.getSession()` to refresh the session before redirecting. - You confirmed the problem persists even without router redirects, indicating the issue remains unresolved. **Next Steps:** - Please let me know if this issue is still relevant with the latest version of better-auth by commenting here to keep the discussion open. - If I don’t hear back within 7 days, I will automatically close this issue. Thanks for your understanding and contribution!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#27635