mcpField
R
react-native-nitro-google-signin

react-native-nitro-google-signin

github.com/react-native-nitro-google-sign-inDevelopment57233 installsUpdated today
Repository

About react-native-nitro-google-signin

An agent skill that guides coding agents through installing and configuring react-native-nitro-google-signin for Google sign-in in React Native apps. It covers platform-specific setup, sign-in flows, token handling, and troubleshooting.

Key features

  1. 01Expo and bare React Native setup guidance
  2. 02Google One Tap sign-in flow
  3. 03Token and scope handling notes
  4. 04Platform configuration and troubleshooting

Use cases

  1. 01Add Google sign-in to a React Native app
  2. 02Configure Google sign-in in Expo or bare projects
  3. 03Diagnose platform-specific sign-in failures

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/react-native-nitro-google-sign-in/google-signin --skill react-native-nitro-google-signin

After installing, type/react-native-nitro-google-signinin Claude Code to confirm it loaded.

Bundled filesexamples.mdreference.md

Details

From the project README

React Native Nitro Google Sign-In

Agent skill (install first for coding agents)

npx skills add react-native-nitro-google-sign-in/google-signin -g -y

Docs: https://react-native-nitro-google-sign-in.github.io/docs/agents/skill

Package install

bun add react-native-nitro-google-signin react-native-nitro-modules
bundle exec pod install --project-directory="ios"

Requires RN ≥ 0.76. Not Expo Go — use expo-dev-client.

Rules

TopicRule
APIGoogleOneTapSignIn from react-native-nitro-google-signin
Configure firstGoogleOneTapSignIn.configure({ webClientId }) before sign-in
serverAuthCodeRequires offlineAccess: true in configure() — otherwise always null. requestScopes() still returns accessToken for on-device APIs without offline access
BackendVerify every idToken on server (sig, aud, iss, exp); validate JWT hd if using hostedDomain
iOS offline grantSilent signIn() returns serverAuthCode: null — use createAccount() for initial code
revokeAccessAndroid: by email/id. iOS: current session only (throws if id mismatch)
getTokensAfter sign-in; throws SIGN_IN_REQUIRED if no session. iOS: call clearCachedAccessToken before retry after 401. Android: works in background tasks (no Activity) while scopes are granted
getCurrentUserSync; returns user + scopes or null. Check scopes before requestScopes for existing users
Flow ordercheckPlayServices → signIn → createAccount → presentExplicitSignIn
Android autoDetectNeeds google-services.json + com.google.gms.google-services plugin
iOSGoogleService-Info.plist + REVERSED_CLIENT_ID URL scheme
ExpoPlugin react-native-nitro-google-signin; expo prebuild after native config
After native changesRebuild app — Metro alone is insufficient

Sign-in flow

import {
  GoogleOneTapSignIn,
  isNoSavedCredentialFoundResponse,
  isSuccessResponse,
} from 'react-native-nitro-google-signin'

GoogleOneTapSignIn.configure({ webClientId: 'autoDetect' })

await GoogleOneTapSignIn.checkPlayServices()
let response = await GoogleOneTapSignIn.signIn()
if (isNoSavedCredentialFoundResponse(response)) {
  response = await GoogleOneTapSignIn.createAccount()
}
if (isNoSavedCredentialFoundResponse(response)) {
  response = await GoogleOneTapSignIn.presentExplicitSignIn()
}
if (isSuccessResponse(response)) {
  const { user, idToken } = response.data
}

Platform quick pick

Troubleshooting

SymptomLikely fix
DEVELOPER_ERROR (Android)Wrong SHA-1 or package on OAuth client
type: 'cancelled' after picking account (Android release/Play)Missing Play App Signing / release SHA-1 on Android OAuth client — troubleshooting
default_web_client_id was not foundAdd google-services.json + Gradle plugin
iOS redirect failsFix REVERSED_CLIENT_ID URL scheme. On scene lifecycle apps, ensure GIDSignIn.sharedInstance.handle(url) is in SceneDelegate.swift
UIApplicationEvaluateRuntimeIssueForNoSceneLifecycleAdoption crash on launch (iOS 27)Expo SDK 57: add expo-build-properties with ios: { enableSceneSupport: true } (default in SDK 58+). Bare RN: add UIApplicationSceneManifest + SceneDelegate.swift — troubleshooting
pod install / Expo prebuild — AppCheckCore / RecaptchaInterop (or conflict with Firebase App Check)Expo: upgrade package + prebuild --clean (plugin adds modular headers, no AppCheckCore < 11.3 pin). Bare: add AppCheckCore/GoogleUtilities/RecaptchaInterop with :modular_headers => true — troubleshooting
Nitro not foundRebuild dev client / bundle exec pod install --project-directory="ios"
Android button laid out but blankUpgrade package (in-process branding button) + rebuild native app
Sign-in OK in debug, fails in releaseConsumer ProGuard rules ship with library; avoid -keep androidx.**; test assembleRelease. Also check release/Play SHA-1 (see cancelled-after-account-pick above)

More detail

Comments

Markdown supported