From 108670dee9a7dd7b037e6c563748eb174a7f2315 Mon Sep 17 00:00:00 2001 From: Mike Pitre <12040919+mikepitre@users.noreply.github.com> Date: Mon, 5 Oct 2026 16:51:16 -0400 Subject: [PATCH 1/2] fix(expo): fire onDismiss from the close button of an inline AuthView on iOS A dismissible AuthView that is rendered inline is not presented, so SwiftUI's dismiss had nothing to close and the bridge never heard about the tap. Pass clerk-ios a host dismiss action that emits the dismissed event. The podspec pins the clerk-ios commit that adds the action until a release contains it. Co-Authored-By: Claude Opus 5.5 --- .changeset/expo-inline-auth-view-dismiss.md | 5 +++++ packages/expo/ios/ClerkExpo.podspec | 2 +- packages/expo/ios/ClerkNativeBridge.swift | 7 ++++++- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/expo-inline-auth-view-dismiss.md diff --git a/.changeset/expo-inline-auth-view-dismiss.md b/.changeset/expo-inline-auth-view-dismiss.md new file mode 100644 index 00000000000..07d56549449 --- /dev/null +++ b/.changeset/expo-inline-auth-view-dismiss.md @@ -0,0 +1,5 @@ +--- +'@clerk/expo': patch +--- + +Fix the close button of a dismissible `` doing nothing on iOS when the view is rendered inline instead of inside a modal. Tapping it now calls `onDismiss`. diff --git a/packages/expo/ios/ClerkExpo.podspec b/packages/expo/ios/ClerkExpo.podspec index 7f1d3f30310..3d8be37b848 100644 --- a/packages/expo/ios/ClerkExpo.podspec +++ b/packages/expo/ios/ClerkExpo.podspec @@ -44,7 +44,7 @@ Pod::Spec.new do |s| spm_dependency( s, url: clerk_ios_repo, - requirement: { :kind => 'exactVersion', :version => clerk_ios_version }, + requirement: { :kind => 'revision', :revision => 'd491c4845e3fe28db0572ffb2e60761126b165ef' }, products: ['ClerkKit', 'ClerkKitUI'] ) else diff --git a/packages/expo/ios/ClerkNativeBridge.swift b/packages/expo/ios/ClerkNativeBridge.swift index bcb20cb8bfc..377cf304efa 100644 --- a/packages/expo/ios/ClerkNativeBridge.swift +++ b/packages/expo/ios/ClerkNativeBridge.swift @@ -1019,18 +1019,21 @@ final class ClerkNativeBridge { ) -> UIViewController? { guard Self.clerkConfigured else { return nil } + let onDismiss: (() -> Void)? = dismissible ? { onEvent(.dismissed, [:]) } : nil + return makeHostingController( rootView: ClerkInlineAuthWrapperView( mode: Self.authMode(from: mode), dismissible: dismissible, hostBackAction: hostBackAction.map(ClerkHostBackAction.init), + hostDismissAction: onDismiss.map(ClerkHostDismissAction.init), lightTheme: lightTheme, darkTheme: darkTheme, logoState: logoState, logoMaxHeight: logoMaxHeight, onAuthComplete: { onEvent(.dismissed, [:]) } ), - onDismiss: dismissible ? { onEvent(.dismissed, [:]) } : nil + onDismiss: onDismiss ) } @@ -1326,6 +1329,7 @@ struct ClerkInlineAuthWrapperView: View { let mode: AuthView.Mode let dismissible: Bool let hostBackAction: ClerkHostBackAction? + let hostDismissAction: ClerkHostDismissAction? let lightTheme: ClerkTheme? let darkTheme: ClerkTheme? let logoState: ClerkInlineAuthLogoState @@ -1342,6 +1346,7 @@ struct ClerkInlineAuthWrapperView: View { ) .environment(Clerk.shared) .environment(\.clerkHostBackAction, hostBackAction) + .environment(\.clerkHostDismissAction, hostDismissAction) let theme = colorScheme == .dark ? (darkTheme ?? lightTheme) : lightTheme let themedView = Group { if let theme { From 96d8308eea0ee0864f2251b37046e36f83ec1a7f Mon Sep 17 00:00:00 2001 From: Mike Pitre <12040919+mikepitre@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:28:21 -0400 Subject: [PATCH 2/2] fix(expo): use the clerk-ios 1.5.9 release in place of the commit pin 1.5.9 contains the host dismiss action, and main already pins it. Co-Authored-By: Claude Opus 5.5 --- packages/expo/ios/ClerkExpo.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/expo/ios/ClerkExpo.podspec b/packages/expo/ios/ClerkExpo.podspec index 1243651f807..0355f67842a 100644 --- a/packages/expo/ios/ClerkExpo.podspec +++ b/packages/expo/ios/ClerkExpo.podspec @@ -44,7 +44,7 @@ Pod::Spec.new do |s| spm_dependency( s, url: clerk_ios_repo, - requirement: { :kind => 'revision', :revision => 'd491c4845e3fe28db0572ffb2e60761126b165ef' }, + requirement: { :kind => 'exactVersion', :version => clerk_ios_version }, products: ['ClerkKit', 'ClerkKitUI'] ) else