From 587a08e2140809dbd49331fbdb502320a1aadb63 Mon Sep 17 00:00:00 2001 From: TaduJR Date: Fri, 13 Mar 2026 18:58:36 +0300 Subject: [PATCH 1/5] fix(a11y): update picker-select fork, remove Android TalkBack workaround, keep iOS Done button role --- package-lock.json | 2 +- package.json | 2 +- src/components/Picker/BasePicker.tsx | 7 ------- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index d72f893e94407..7552a873b297c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,7 +121,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806", + "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#acf8e54", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1", diff --git a/package.json b/package.json index a5a0097aa2a73..04cc26b61438c 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806", + "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#acf8e54", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1", diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index 14413b126b7e4..20ce6b232208e 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -209,17 +209,10 @@ function BasePicker({ onClose={disableHighlight} textInputProps={{ allowFontScaling: false, - importantForAccessibility: 'no-hide-descendants', }} touchableDoneProps={{ accessibilityRole: CONST.ROLE.BUTTON, }} - touchableWrapperProps={{ - accessible: true, - accessibilityRole: CONST.ROLE.COMBOBOX, - accessibilityLabel, - accessibilityState: {disabled: isDisabled, expanded: isHighlighted}, - }} pickerProps={{ ref: picker, tabIndex: pickerTabIndex, From 2dbade7b5305f4dc77aa07f65ddbde3e98568c92 Mon Sep 17 00:00:00 2001 From: TaduJR Date: Fri, 13 Mar 2026 20:48:04 +0300 Subject: [PATCH 2/5] fix: regenerate lockfile to resolve picker-select fork to acf8e54 --- package-lock.json | 18 ++++++++++++------ package.json | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7552a873b297c..ce396edc4154a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,7 +121,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#acf8e54", + "react-native-picker-select": "github:Expensify/react-native-picker-select#acf8e54", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1", @@ -30702,6 +30702,12 @@ "version": "4.5.0", "license": "MIT" }, + "node_modules/lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", + "license": "MIT" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "dev": true, @@ -34661,15 +34667,15 @@ } }, "node_modules/react-native-picker-select": { - "version": "8.1.0", - "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#07d60d78d4772d47afd7a744940fc6b6d1881806", - "integrity": "sha512-Ty7/wdzJizmUBKUvjxsU6thJUbNF+5hBJ5Zj/q6A+cAKB6Rg7bigDxZVssMtWTxMa/H2bkXXwKN/ZurSjNAKeg==", + "version": "9.3.1", + "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#acf8e54cdd8df2b7cc366f9533688513754993a5", "license": "MIT", "dependencies": { - "lodash.isequal": "^4.5.0" + "lodash.isequal": "^4.5.0", + "lodash.isobject": "^3.0.2" }, "peerDependencies": { - "@react-native-picker/picker": ">=2.1.0" + "@react-native-picker/picker": "^2.4.0" } }, "node_modules/react-native-plaid-link-sdk": { diff --git a/package.json b/package.json index 04cc26b61438c..7c66bca902f2c 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "git+https://github.com/Expensify/react-native-picker-select.git#acf8e54", + "react-native-picker-select": "github:Expensify/react-native-picker-select#acf8e54", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1", From a2dd375d0a78cd55f93283af745ac4c4ac4a1649 Mon Sep 17 00:00:00 2001 From: TaduJR Date: Wed, 18 Mar 2026 21:34:50 +0300 Subject: [PATCH 3/5] refactor: remove redundant picker a11y props handled by fork --- src/components/Picker/BasePicker.tsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index 1afd0982d1d1a..5bd87d53e69b2 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -9,7 +9,6 @@ import FormHelpMessage from '@components/FormHelpMessage'; import Icon from '@components/Icon'; import Text from '@components/Text'; import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset'; -import useLocalize from '@hooks/useLocalize'; import useScrollContext from '@hooks/useScrollContext'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -43,7 +42,6 @@ function BasePicker({ ref, }: BasePickerProps) { const icons = useMemoizedLazyExpensifyIcons(['DownArrow']); - const {translate} = useLocalize(); const theme = useTheme(); const styles = useThemeStyles(); @@ -212,10 +210,6 @@ function BasePicker({ textInputProps={{ allowFontScaling: false, }} - touchableDoneProps={{ - accessibilityRole: CONST.ROLE.BUTTON, - accessibilityLabel: translate('common.dismiss'), - }} pickerProps={{ ref: picker, tabIndex: pickerTabIndex, From ab390d148e4537441f2157f5753e73e2c5d32785 Mon Sep 17 00:00:00 2001 From: TaduJR Date: Mon, 23 Mar 2026 17:57:13 +0300 Subject: [PATCH 4/5] fix(a11y): pass localized doneText to picker for VoiceOver --- src/components/Picker/BasePicker.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Picker/BasePicker.tsx b/src/components/Picker/BasePicker.tsx index 4463b914adc65..6ed26d9d8a83c 100644 --- a/src/components/Picker/BasePicker.tsx +++ b/src/components/Picker/BasePicker.tsx @@ -228,6 +228,7 @@ function BasePicker({ textInputProps={{ allowFontScaling: false, }} + doneText={translate('common.done')} pickerProps={{ ref: picker, tabIndex: pickerTabIndex, From 901f5c41e57626e7e9796471d7adcf945fd5323c Mon Sep 17 00:00:00 2001 From: TaduJR Date: Fri, 27 Mar 2026 17:28:03 +0300 Subject: [PATCH 5/5] fix: bump picker-select fork with iOS VoiceOver and touch fixes --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd49d624eadcf..cd1b5f7f0ad39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,7 +121,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "github:Expensify/react-native-picker-select#acf8e54", + "react-native-picker-select": "github:Expensify/react-native-picker-select#3e090db", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1", @@ -34967,7 +34967,7 @@ }, "node_modules/react-native-picker-select": { "version": "9.3.1", - "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#acf8e54cdd8df2b7cc366f9533688513754993a5", + "resolved": "git+ssh://git@github.com/Expensify/react-native-picker-select.git#3e090db06ca5ee34c39f9e037ec490de8b0058bd", "license": "MIT", "dependencies": { "lodash.isequal": "^4.5.0", diff --git a/package.json b/package.json index adb4aadcc7bc5..1f66247488262 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "react-native-pager-view": "8.0.0", "react-native-pdf": "7.0.2", "react-native-permissions": "^5.4.0", - "react-native-picker-select": "github:Expensify/react-native-picker-select#acf8e54", + "react-native-picker-select": "github:Expensify/react-native-picker-select#3e090db", "react-native-plaid-link-sdk": "12.5.3", "react-native-qrcode-svg": "6.3.21", "react-native-reanimated": "4.2.1",