Skip to content

feat(expo): add iOS Google sign-in hint#8906

Open
mikepitre wants to merge 1 commit into
mainfrom
mike/docs-google-signin-platform-default
Open

feat(expo): add iOS Google sign-in hint#8906
mikepitre wants to merge 1 commit into
mainfrom
mike/docs-google-signin-platform-default

Conversation

@mikepitre

@mikepitre mikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds an iOS-only hint option for Google Sign-In and documents filterByAuthorizedAccounts as Android-only.

Reasoning

Google does not document these as one shared cross-platform option. The Android Credential Manager API exposes setFilterByAuthorizedAccounts(boolean) on GetGoogleIdOption.Builder, where it controls whether the account picker is limited to accounts already authorized for the app. The iOS Google Sign-In API exposes hint on GIDSignIn.signIn(...), where it can prefill or prioritize a user ID or email address but does not strictly filter the account picker.

This keeps the Expo API usable from one shared call site: apps can pass both options, Android consumes filterByAuthorizedAccounts and ignores hint, and iOS consumes hint and ignores filterByAuthorizedAccounts.

Backward compatibility

This is additive for JavaScript callers: existing signIn calls continue to work, and Android keeps the existing filterByAuthorizedAccounts behavior and default. On iOS, filterByAuthorizedAccounts is now treated as an Android-only option. A previous implementation briefly mapped that option to an implicit restored-user email hint on iOS, but that did not match Google’s platform APIs because hint does not strictly filter the account picker. Use the new hint option when an iOS sign-in hint is desired.

@vercel

vercel Bot commented Jun 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
clerk-js-sandbox Ready Ready Preview, Comment Jun 17, 2026 9:51pm
swingset Ready Ready Preview, Comment Jun 17, 2026 9:51pm

Request Review

@changeset-bot

changeset-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 9474fb3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@clerk/expo Patch

Not sure what this means? Click here to learn what changesets are.

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

@github-actions github-actions Bot added the expo label Jun 17, 2026
@mikepitre mikepitre changed the title Clarify Google One Tap platform defaults in Expo docs docs(expo): clarify Google One Tap platform defaults Jun 17, 2026
@mikepitre

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 1f98539c15

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds an optional hint parameter to the SignInParams type for iOS Google Sign-In account prefilling. The Swift ClerkGoogleSignInModule now reads hint directly from the incoming params. JSDoc for filterByAuthorizedAccounts is updated across types and the sign-in class to explicitly mark it as Android-only.

Changes

iOS hint support and platform-specific docs

Layer / File(s) Summary
SignInParams type: hint field and platform docs
packages/expo/src/google-one-tap/types.ts, packages/expo/src/google-one-tap/ClerkGoogleOneTapSignIn.ts
Adds optional hint?: string to SignInParams with iOS-only documentation and a no-op note for Android; updates filterByAuthorizedAccounts JSDoc to explicitly mark it Android-only (no-op on iOS).
Swift signIn: read hint from params
packages/expo/ios/ClerkGoogleSignInModule.swift
Removes the previous logic that derived hint from filterByAuthorizedAccounts and the current user's email; now reads hint directly as an optional String from params?["hint"].
Changeset
.changeset/bright-google-docs.md
Declares a patch release for @clerk/expo describing the new iOS hint option and the Android-only clarification for filterByAuthorizedAccounts.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • clerk/javascript#8901: Refactors the same ClerkGoogleSignInModule.swift signIn implementation using Expo ModulesCore, directly overlapping with the hint param handling in this PR.
  • clerk/javascript#8903: Modifies the iOS ClerkGoogleSignInModule.swift signIn flow around filterByAuthorizedAccounts, the same code path this PR changes.
  • clerk/javascript#8905: Overlaps on signIn behavior in ClerkGoogleSignInModule.swift around iOS filterByAuthorizedAccounts/hint derivation.

Suggested reviewers

  • wobsoriano

🐇 A hint for iOS, a hop of delight,
Android and iOS now split left and right.
No more deriving from email on hand,
Just read from the params — as the platform planned.
The rabbit approves this cross-platform feat! 🍎🤖

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(expo): add iOS Google sign-in hint' directly and accurately summarizes the main change: adding a new iOS-specific hint parameter for Google Sign-In in the Expo package.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@mikepitre mikepitre force-pushed the mike/docs-google-signin-platform-default branch from 1f98539 to 9c6fe1c Compare June 17, 2026 21:45
@mikepitre mikepitre changed the title docs(expo): clarify Google One Tap platform defaults feat(expo): add iOS Google sign-in hint Jun 17, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9474fb3c67

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

let hint: String? = filterByAuthorized
? GIDSignIn.sharedInstance.currentUser?.profile?.email
: nil
let hint = params?["hint"] as? String

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the iOS filter hint fallback

For iOS callers that already pass filterByAuthorizedAccounts: true, this patch release now drops the only behavior that flag had: the previous code used the current Google user's email as the hint. Those callers will silently stop getting the returning-account hint unless they also adopt the new hint option, which changes behavior for existing consumers of the public signIn params. Please keep the new explicit hint but fall back to the old filterByAuthorizedAccounts-based hint when no explicit hint is provided.

Useful? React with 👍 / 👎.

@mikepitre mikepitre Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the backward compatability section of the PR body

@github-actions

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T21:56:00.727Z

Summary

Metric Count
Packages analyzed 19
Packages with changes 1
🔴 Breaking changes 0
🟡 Non-breaking changes 1
🟢 Additions 0

🤖 This report was reviewed by claude-sonnet-4-6.


@clerk/expo

Current version: 3.4.4
Recommended bump: MINOR → 3.5.0

Subpath ./types

🟡 Non-breaking Changes (1)

Modified: SignInParams
  export type SignInParams = {
      nonce?: string;
      filterByAuthorizedAccounts?: boolean;
+     hint?: string;
  };

Static analyzer: Breaking change in type alias SignInParams: Type changed: {nonce?:string;filterByAuthorizedAccounts?:boolean;}{nonce?:string;filterByAuthorizedAccounts?:boolean;hint?:string;}

🤖 AI review (reclassified as non-breaking) (97%): A new optional property hint? is added to SignInParams, which is an input/parameter type; existing consumers who construct or pass this object are unaffected because the field is optional and they need not supply it.


Report generated by Break Check

Last ran on 9474fb3.

@mikepitre mikepitre requested a review from wobsoriano June 17, 2026 21:56

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/expo/src/google-one-tap/ClerkGoogleOneTapSignIn.ts`:
- Around line 88-89: The JSDoc for the hint parameter in
ClerkGoogleOneTapSignIn.ts is incomplete and lacks the helpful detail provided
in the corresponding type definition in types.ts. Enhance the JSDoc for the hint
parameter to include comprehensive documentation that explains what values it
accepts (user ID or email address), how it behaves (may prefill or prioritize an
account), and clarify that it does not restrict the account picker. Reference
the detailed documentation in types.ts (lines 54-60) as a guide to match the
level of detail and customer-facing clarity needed for the generated Clerk Docs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Repository UI (inherited)

Review profile: CHILL

Plan: Pro

Run ID: ca9aec07-e321-405e-925d-a115fcd0a609

📥 Commits

Reviewing files that changed from the base of the PR and between f4488f5 and 9474fb3.

📒 Files selected for processing (4)
  • .changeset/bright-google-docs.md
  • packages/expo/ios/ClerkGoogleSignInModule.swift
  • packages/expo/src/google-one-tap/ClerkGoogleOneTapSignIn.ts
  • packages/expo/src/google-one-tap/types.ts

Comment thread packages/expo/src/google-one-tap/ClerkGoogleOneTapSignIn.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant