supabase / auth-js

An isomorphic Javascript library for Supabase Auth.
MIT License
321 stars 153 forks source link

feat: pkce challenge support in React Native with Segment #772

Closed MarceloPrado closed 9 months ago

MarceloPrado commented 10 months ago

What kind of change does this PR introduce?

This PR fixes an issue where gotrue would throw in React Native due to the lack of the crypto and TextEncoder module.

When integrating Segment with React Native, they ask you to install react-native-get-random-values as a polyfill to crypto's getRandomValue method. This causes issues in gotrue, as the code does a simple crypto !== undefined check.

Since a lot of RN libraries polyfill only a subset of crypto's method, crypto !== undefined is not a bullet-proof way to check for support.

What is the current behavior?

If you have Segment installed, and try to login with supabase.auth.signInWithOtp (email), the app throws an error.

What is the new behavior?

If the required crypto modules are not available, it just fallbacks to plain text as the existing behavior instead of throwing an error.

kangmingtay commented 9 months ago

hey @MarceloPrado, apologies for the delay in reviewing but thanks for putting this together!

github-actions[bot] commented 9 months ago

:tada: This PR is included in version 2.55.0 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

MarceloPrado commented 8 months ago

Thanks @kangmingtay! Any chance you could also review https://github.com/supabase/supabase-js/pull/878 ?