Sign in with Apple Button
Native Apple Authentication button following Apple Human Interface Guidelines.
SwiftUI Implementation
Pure Vanilla Swift • No DependenciesappleSignInButton.swift
import SwiftUI
import AuthenticationServices
// Import AuthenticationServices
// Add "Sign in with Apple" capability.
// For styling reference and guidance visit: https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple#Creating-a-custom-Sign-in-with-Apple-button
struct AppleSignInButton: View {
@Environment(\\.colorScheme) private var colorScheme
let label: SignInWithAppleButton.Label
let scope: [ASAuthorization.Scope]
let height: Double
let cornerRadius: Double
private func handleSuccess(with authorization: ASAuthorization) {
if let userCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
print("Successfuly authenticated user: \\(userCredential.user)")
// Your code to handle success.
}
}
private func handleError(with error: Error) {
print("Could not authenticate user: \\(error.localizedDescription)")
// Your code to handle failure.
}
var body: some View {
SignInWithAppleButton(label) {request in
request.requestedScopes = scope
} onCompletion: { result in
switch result {
case .success(let authorization):
handleSuccess(with: authorization)
case .failure(let error):
handleError(with: error)
}
}
.frame(height: height)
.cornerRadius(cornerRadius)
.shadow(color: Color.gray, radius: 3)
.signInWithAppleButtonStyle(colorScheme == .dark ? .white : .black)
}
}
struct UseAppleSignInButton: View {
var body: some View {
VStack(alignment: .center, spacing: 8) {
AppleSignInButton(label: .signIn, scope: [.fullName, .email], height: 44, cornerRadius: 0)
AppleSignInButton(label: .signUp, scope: [.fullName, .email], height: 44, cornerRadius: 12)
AppleSignInButton(label: .continue, scope: [.fullName, .email], height: 44, cornerRadius: 25)
}
.padding()
}
}
#Preview {
UseAppleSignInButton()
}Ready to copy and paste directly into any Xcode project running iOS 16.0+.
Recommended Use Cases
- First-run onboarding flows and feature introductions
- App settings, preferences, and account configuration screens
Component Details
- Category
- Buttons
- iOS Compatibility
- iOS 16.0+
- Xcode Version
- Xcode 15+
- Platform
- iOS
- License Tier
- Pro
- Themes & Contexts
- settingsonboardingaccount
- Keywords
- signauthenticate
C
Compot for iOS
Native SwiftUI playground app
Preview all 130+ components interactively on your device and copy code straight to Xcode with 1 tap.
Get Compot on the App StoreRelated SwiftUI Components
More components in Buttons and related app architectures.
ButtonsiOS 16.0+
Primary Button Basic
High-emphasis prominent action button with standard SwiftUI prominence styling and haptic feedback.
View Component & Code
ButtonsiOS 16.0+
CTA Button Large Basic
Full-width, high-impact call-to-action button designed for onboarding screens, welcome flows, and paywalls.
View Component & Code
ButtonsiOS 16.0+
Secondary Button Basic
Medium-emphasis secondary action button styled for alternative user workflows and dismissal actions.
View Component & Code