Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop calling GetRecaptchaConfig in phone auth when cached config is e… #8504

Open
wants to merge 2 commits into
base: rce-phone
Choose a base branch
from

Conversation

NhienLam
Copy link
Contributor

Purpose: Reduce calls to GetRecaptchaConfig and avoid exceeding its quota

At the start of the phone number verification flow, we check the cached phone rCE enablement state. If the cached config is empty or disabled, we don’t call GetRecaptchaConfig, and proceed with reCAPTCHA v2 token and “NO_RECAPTCHA”.

Developers who enable rCE must call initializeRecaptchaConfig to populate the cached rCE config before initiating phone auth. We recommend calling it when the app starts, ideally. This is also currently recommended for email auth flows.

Copy link

changeset-bot bot commented Sep 17, 2024

⚠️ No Changeset found

Latest commit: 8bcdd74

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@NhienLam NhienLam removed request for a team, sam-gc and lisajian September 17, 2024 08:01
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 17, 2024

Size Report 1

Affected Products

  • @firebase/auth

    TypeBase (42e4814)Merge (e4f6db7)Diff
    browser188 kB188 kB-196 B (-0.1%)
    esm5244 kB244 kB-308 B (-0.1%)
    module188 kB188 kB-196 B (-0.1%)
    react-native207 kB207 kB-308 B (-0.1%)
  • @firebase/auth-web-extension

    TypeBase (42e4814)Merge (e4f6db7)Diff
    main157 kB157 kB-71 B (-0.0%)
  • @firebase/auth/internal

    TypeBase (42e4814)Merge (e4f6db7)Diff
    browser199 kB199 kB-196 B (-0.1%)
    esm5258 kB257 kB-308 B (-0.1%)
    module199 kB199 kB-196 B (-0.1%)
  • bundle

    TypeBase (42e4814)Merge (e4f6db7)Diff
    auth (Phone)93.6 kB93.2 kB-453 B (-0.5%)
  • firebase

    TypeBase (42e4814)Merge (e4f6db7)Diff
    firebase-auth-compat.js143 kB142 kB-432 B (-0.3%)
    firebase-auth.js154 kB154 kB-214 B (-0.1%)
    firebase-compat.js792 kB792 kB-432 B (-0.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/n2Boqo74gm.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 17, 2024

Size Analysis Report 1

Affected Products

  • @firebase/auth

    • PhoneAuthProvider

      Size

      TypeBase (42e4814)Merge (e4f6db7)Diff
      size50.6 kB50.2 kB-451 B (-0.9%)
      size-with-ext-deps72.2 kB71.8 kB-453 B (-0.6%)

      Dependency

      TypeBase (42e4814)Merge (e4f6db7)Diff
      functions

      72 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      71 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      - _initializeRecaptchaConfig

    • linkWithPhoneNumber

      Size

      TypeBase (42e4814)Merge (e4f6db7)Diff
      size51.4 kB50.9 kB-451 B (-0.9%)
      size-with-ext-deps73.0 kB72.5 kB-453 B (-0.6%)

      Dependency

      TypeBase (42e4814)Merge (e4f6db7)Diff
      functions

      78 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      77 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      - _initializeRecaptchaConfig

    • reauthenticateWithPhoneNumber

      Size

      TypeBase (42e4814)Merge (e4f6db7)Diff
      size52.0 kB51.6 kB-451 B (-0.9%)
      size-with-ext-deps73.6 kB73.2 kB-453 B (-0.6%)

      Dependency

      TypeBase (42e4814)Merge (e4f6db7)Diff
      functions

      77 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      - _initializeRecaptchaConfig

    • signInWithPhoneNumber

      Size

      TypeBase (42e4814)Merge (e4f6db7)Diff
      size51.8 kB51.4 kB-451 B (-0.9%)
      size-with-ext-deps73.4 kB73.0 kB-453 B (-0.6%)

      Dependency

      TypeBase (42e4814)Merge (e4f6db7)Diff
      functions

      77 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      - _initializeRecaptchaConfig

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/vVD8f1P89R.html

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.

2 participants