plans/focusable-remove.md
focusable prop in favor of tabIndexRemove the React Native focusable prop from Tamagui v2 in favor of the web-standard tabIndex. This simplifies the API and aligns with web conventions.
focusable={true} → tabIndex={0}focusable={false} → tabIndex={-1}focusable={!disabled} → tabIndex={disabled ? -1 : 0}code/core/web/src/interfaces/TamaguiComponentEvents.tsx:8
focusable?: any from typecode/core/react-native-web-internals/src/modules/forwardedProps/index.tsx:68
focusable: true from forwarded propscode/core/react-native-web-internals/src/modules/createDOMProps/index.tsx
code/core/web/src/createComponent.tsx:1295
focusable: viewProps.focusable ?? truecode/core/core/src/createOptimizedView.native.tsx:40,117-119
tabIndex → focusable conversion for native (RN still uses focusable)focusable as input propcode/ui/button/src/v1/Button.tsx
focusable: true → tabIndex: 0focusable: undefinedcode/ui/toggle-group/src/ToggleGroup.tsx:83
focusable={!disabled} → tabIndex={disabled ? -1 : 0}code/ui/toast/src/ToastImpl.tsx:34
focusable: true → tabIndex: 0code/ui/toast/src/ToastViewport.tsx:293
focusable={context.toastCount > 0} → tabIndex={context.toastCount > 0 ? 0 : -1}code/ui/radio-headless/src/useRadioGroup.tsx:235
focusable: !isDisabled → tabIndex: isDisabled ? -1 : 0code/ui/create-menu/src/createBaseMenu.tsx:1039
focusable={!disabled} → tabIndex={disabled ? -1 : 0}code/ui/tabs/src/createTabs.tsx:142
focusable={!disabled} → tabIndex={disabled ? -1 : 0}code/ui/input/src/shared.tsx:20
focusable: true → tabIndex: 0code/ui/roving-focus/src/RovingFocusGroup.tsx:172,237
focusable={focusable} → tabIndex={focusable ? 0 : -1}ItemData type if neededcode/core/react-native-web-internals/src/modules/createDOMProps/__tests__/index-test.tsx
code/core/core-test/webAlignment.web.test.tsx:213-220
code/core/core-test/webAlignment.native.test.tsx:188-194
code/compiler/static-tests/tests/webAlignment.web.test.tsx:221
code/packages/react-native-web-lite - This is a separate RN-web compatibility layer, keep focusable thereMedium - Straightforward changes but spread across ~15 files. Main risk is missing a usage somewhere.
yarn test in affected packages