Skip to content

[React Native] AuthProvider references window and yields TypeError: Invalid URL: undefined #85

@melv-n

Description

@melv-n

This is thrown on startup in an Expo project, reported in this Discord thread and confirmed by @erquhart.

Core of the issue:
The AuthProvider references window.location?.href which does not exist in the React Native runtime:
https://github.com/get-convex/better-auth/blob/main/src/react/client.tsx#L130-L154

Stacktrace:

TypeError: Invalid URL: undefined
    at URLImpl#constructor (/node_modules/whatwg-url-without-unicode/lib/URL-impl.js:21:26)
    at iface.setup (/node_modules/whatwg-url-without-unicode/lib/URL.js:73:37)
    at constructor (/node_modules/whatwg-url-without-unicode/lib/URL.js:105:27)
    at ?anon_0_ (/node_modules/@convex-dev/better-auth/dist/esm/react/client.js:63:32)
    at next (native)
    at asyncGeneratorStep (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:17)
    at _next (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:17:27)
    at Promise$argument_0 (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:12)
    at tryCallTwo (app:///main.jsbundle:1:1223)
    at doResolve (app:///main.jsbundle:1:2542)
    at Promise (app:///main.jsbundle:1:1319)
    at anonymous (/node_modules/@babel/runtime/helpers/asyncToGenerator.js:14:23)
    at useEffect$argument_0 (/node_modules/@convex-dev/better-auth/dist/esm/react/client.js:84:10)
    at commitHookEffectListMount (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:7485:34)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8306:48)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8411:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8300:45)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)
    at commitPassiveMountOnFiber (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8380:51)
    at recursivelyTraversePassiveMountEffects (/node_modules/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js:8281:32)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions