From 535d0e709dc3cb4a9d8310c8834943a3edfe546f Mon Sep 17 00:00:00 2001 From: akshatextreme Date: Sun, 22 Feb 2026 02:17:59 +0400 Subject: [PATCH] [SDK] Add name and picture fields to Profile type for Apple Sign In compliance - Add optional name and picture fields to Profile type to support OAuth provider data - Update LinkedProfilesScreen to display user's name when available - Fixes #8673: Apple App Store rejection due to missing display name The Profile type now includes name and picture fields that OAuth providers like Google and Apple can populate. The UI prioritizes displaying the user's full name when available, improving Apple Sign In compliance with App Store Guideline 4.8. --- .changeset/apple-profile-name-picture.md | 5 +++++ .../web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx | 5 +++++ .../thirdweb/src/wallets/in-app/core/authentication/types.ts | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 .changeset/apple-profile-name-picture.md diff --git a/.changeset/apple-profile-name-picture.md b/.changeset/apple-profile-name-picture.md new file mode 100644 index 00000000000..b34d4708507 --- /dev/null +++ b/.changeset/apple-profile-name-picture.md @@ -0,0 +1,5 @@ +--- +"thirdweb": minor +--- + +Add optional `name` and `picture` fields to `Profile` type to support additional OAuth provider data (Google, Apple, etc.). The UI now displays the user's name when available from OAuth providers, improving Apple Sign In compliance. diff --git a/packages/thirdweb/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx b/packages/thirdweb/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx index b2b1eaf0e3d..11343376db3 100644 --- a/packages/thirdweb/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx +++ b/packages/thirdweb/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx @@ -24,6 +24,11 @@ import { MenuButton } from "../MenuButton.js"; import type { WalletDetailsModalScreen } from "./types.js"; function getProfileDisplayName(profile: Profile) { + // Prefer name if available (from OAuth providers like Google/Apple) + if (profile.details.name) { + return profile.details.name; + } + switch (true) { case profile.type === "email" && profile.details.email !== undefined: return profile.details.email; diff --git a/packages/thirdweb/src/wallets/in-app/core/authentication/types.ts b/packages/thirdweb/src/wallets/in-app/core/authentication/types.ts index f91eb56040e..ef3bb3366a7 100644 --- a/packages/thirdweb/src/wallets/in-app/core/authentication/types.ts +++ b/packages/thirdweb/src/wallets/in-app/core/authentication/types.ts @@ -124,6 +124,8 @@ export type Profile = { email?: string; phone?: string; address?: Address; + name?: string; + picture?: string; }; };