From 3f38736b750f0d766e467cd44464584712e8cf39 Mon Sep 17 00:00:00 2001 From: Kenton Duprey Date: Wed, 17 Dec 2025 15:54:49 -0500 Subject: [PATCH 1/8] fix(clerk-js): Improve Solana wallet error handling Signed-off-by: Kenton Duprey --- .../Web3SelectSolanaWalletScreen.tsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/clerk-js/src/ui/components/UserProfile/Web3SelectSolanaWalletScreen.tsx b/packages/clerk-js/src/ui/components/UserProfile/Web3SelectSolanaWalletScreen.tsx index 707b591f056..cdc2791badb 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/Web3SelectSolanaWalletScreen.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/Web3SelectSolanaWalletScreen.tsx @@ -1,3 +1,4 @@ +import { ClerkRuntimeError } from '@clerk/shared/error'; import type { Web3Strategy } from '@clerk/shared/types'; import { lazy, Suspense } from 'react'; @@ -6,11 +7,12 @@ import { useCardState } from '@/ui/elements/contexts'; import { Form } from '@/ui/elements/Form'; import { FormButtonContainer } from '@/ui/elements/FormButtons'; import { FormContainer } from '@/ui/elements/FormContainer'; +import { handleError } from '@/ui/utils/errorHandler'; import { Button, descriptors, Flex, localizationKeys, Spinner } from '../../customizables'; const Web3SolanaWalletButtons = lazy(() => - import(/* webpackChunkName: "web3-wallet-buttons" */ '@/ui/elements/Web3SolanaWalletButtons').then(m => ({ + import(/* webpackChunkName: "web3-solana-wallet-buttons" */ '@/ui/elements/Web3SolanaWalletButtons').then(m => ({ default: m.Web3SolanaWalletButtons, })), ); @@ -30,9 +32,15 @@ export const Web3SelectSolanaWalletScreen = ({ onConnect }: Web3SelectWalletProp card.setIdle(); } catch (err) { card.setIdle(); - console.error(err); - } finally { - close(); + if (err instanceof Error) { + handleError(err, [], card.setError); + } else { + const error = new ClerkRuntimeError('An error occurred while generating the Solana signature.', { + code: 'web3_solana_signature_generation_failed', + cause: err instanceof Error ? err : undefined, + }); + handleError(error, [], card.setError); + } } }; @@ -65,6 +73,7 @@ export const Web3SelectSolanaWalletScreen = ({ onConnect }: Web3SelectWalletProp