Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); fix(expo): avoid AppCheckCore Google Sign-In regression by mikepitre · Pull Request #8895 · clerk/javascript · GitHub
Skip to content

fix(expo): avoid AppCheckCore Google Sign-In regression - #8895

Closed
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers
Closed

fix(expo): avoid AppCheckCore Google Sign-In regression#8895
mikepitre wants to merge 1 commit into
mainfrom
mike/expo-google-modular-headers

Conversation

@mikepitre

@mikepitremikepitre commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Emergency unblock for iOS prebuild failures caused by the latest Google Sign-In pod graph.

Fresh pod installs can resolve GoogleSignIn 9.2.0, which allows AppCheckCore 11.3.0. AppCheckCore 11.3.0 adds RecaptchaInterop; in Expo's default static CocoaPods setup that can fail unless apps add extra modular-header configuration.

Rather than mutating generated app Podfiles, this PR constrains ClerkGoogleSignIn away from the problematic AppCheckCore version for now:

  • keep GoogleSignIn ~> 9.0
  • add AppCheckCore < 11.3.0

This keeps fresh installs on the known-working AppCheckCore 11.2.x graph and avoids pulling in RecaptchaInterop.

Why this shape

The earlier Podfile-mutation approach fixed the immediate failure, but it quickly became brittle because Podfiles can have custom targets, existing pod declarations, and use_expo_modules! variants. This emergency fix avoids editing user Podfiles entirely.

Validation

  • Previously reproduced the failing fresh pod graph: GoogleSignIn 9.2.0, AppCheckCore 11.3.0, RecaptchaInterop 101.0.0.
  • Verified a fresh CocoaPods resolution with GoogleSignIn ~> 9.0 plus AppCheckCore < 11.3.0 resolves:
    • GoogleSignIn 9.2.0
    • AppCheckCore 11.2.0
    • no RecaptchaInterop
  • Ran ruby -c packages/expo/ios/ClerkGoogleSignIn.podspec.

Summary by CodeRabbit

  • Bug Fixes
    • Fixed iOS prebuild failures affecting Google Sign-In integration in the Expo package by adding a dependency constraint. This resolves build issues users may encounter during iOS app development and improves stability when implementing Google Sign-In authentication.

@changeset-bot

changeset-botBot commented Jun 17, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 7bddbbe

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

This PR includes changesets to release 1 package
NameType
@clerk/expoPatch

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

@vercel

vercelBot commented Jun 17, 2026

Copy link
Copy Markdown

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

ProjectDeploymentActionsUpdated (UTC)
clerk-js-sandboxReadyReadyPreview, CommentJun 17, 2026 5:24pm
swingsetReadyReadyPreview, CommentJun 17, 2026 5:24pm

Request Review

@coderabbitai

coderabbitaiBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The ClerkGoogleSignIn.podspec gains an AppCheckCore CocoaPods dependency pinned to versions below 11.3.0, with inline comments explaining that 11.3.0 introduces a RecaptchaInterop dependency that breaks static CocoaPods integration. A patch changeset entry documents this fix for @clerk/expo.

Changes

AppCheckCore Dependency Pin for Expo iOS

Layer / File(s)Summary
AppCheckCore pin in podspec and patch changeset
packages/expo/ios/ClerkGoogleSignIn.podspec, .changeset/expo-google-appcheckcore-pin.md
Adds AppCheckCore < 11.3.0 as a constrained dependency with comments noting the RecaptchaInterop breakage in 11.3.0; patch changeset entry records the fix.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • clerk/javascript#8867: Directly overlaps with this PR — both adjust iOS dependency versions in the @clerk/expo package configuration, specifically around AppCheckCore-related version management.

Suggested reviewers

  • wobsoriano

Poem

🐇 A pod pinned low, a version kept back,
No RecaptchaInterop sneaking in on the track.
AppCheckCore below eleven point three,
Keeps the iOS build hopping happy and free!
Patch bump logged, the rabbit hops on. 🌿

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Title check✅ PassedThe PR title 'fix(expo): avoid AppCheckCore Google Sign-In regression' directly and specifically summarizes the main change—addressing an iOS prebuild failure caused by AppCheckCore version compatibility with Google Sign-In by constraining the AppCheckCore dependency.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
Description Check✅ PassedCheck 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.

@pkg-pr-new

pkg-pr-newBot commented Jun 17, 2026

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@8895

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@8895

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@8895

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@8895

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@8895

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@8895

@clerk/express

npm i https://pkg.pr.new/@clerk/express@8895

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@8895

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@8895

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@8895

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@8895

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@8895

@clerk/react

npm i https://pkg.pr.new/@clerk/react@8895

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@8895

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@8895

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@8895

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@8895

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@8895

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@8895

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@8895

commit: 7bddbbe

@mikepitre
mikepitre marked this pull request as ready for review June 17, 2026 16:49
@github-actions

github-actionsBot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

API Changes Report

Generated by Break Check on 2026-06-17T17:26:13.639Z

Summary

MetricCount
Packages analyzed19
Packages with changes0
🔴 Breaking changes0
🟡 Non-breaking changes0
🟢 Additions0

No API Changes Detected

All packages have stable APIs with no detected changes.


Report generated by Break Check

Last ran on 7bddbbe.

@coderabbitaicoderabbitaiBot 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/app.plugin.js`:
- Around line 35-37: The pod detection logic using exact string matching in the
filter function checking GOOGLE_SIGN_IN_MODULAR_HEADER_PODS is too rigid and
fails to recognize valid pod declarations that use alternative syntax (such as
double quotes instead of single quotes, or using modular_headers: true instead
of :modular_headers => true). Replace the exact string matching approach with a
more flexible pattern (such as a regular expression) that can detect if a pod is
already declared with modular_headers enabled regardless of quote style or
symbol format, ensuring the filter correctly identifies truly missing pods and
prevents duplicate pod entries.
🪄 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: d88e7d60-388a-47b3-bd52-4a7e6f32902a

📥 Commits

Reviewing files that changed from the base of the PR and between f4ecc13 and 7a4f9b4.

📒 Files selected for processing (3)
  • .changeset/expo-google-modular-headers.md
  • packages/expo/app.plugin.js
  • packages/expo/src/__tests__/appPlugin.googleSignInPods.test.js

Comment threadpackages/expo/app.plugin.js Outdated

@chatgpt-codex-connectorchatgpt-codex-connectorBot 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:d8c33d55a2

ℹ️ 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".

Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
Comment threadpackages/expo/app.plugin.js Outdated
@mikepitre
mikepitreforce-pushed the mike/expo-google-modular-headers branch from d8c33d5 to 7bddbbeCompareJune 17, 2026 17:22
@mikepitremikepitre changed the title fix(expo): configure Google Sign-In modular headersfix(expo): avoid AppCheckCore Google Sign-In regressionJun 17, 2026
@mikepitre
mikepitre deleted the mike/expo-google-modular-headers branch June 17, 2026 20:27
Sign up for freeto 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

@mikepitre