Commit 9cf4444
chore(lint): migrate repo to oxlint and stabilize validation (#4075)
* chore(lint): replace eslint with oxlint tooling and config
Swap ESLint for oxlint across the monorepo. This includes deleting all
per-package eslint.config.js files, adding oxlint.config.ts where needed,
updating package.json scripts/dependencies, renaming eslint-config-rules
to lint-config-rules, fixing depcheck dynamic dependency injection, and
updating dependency profiles and align-deps presets.
No behavioral code changes — only tooling and configuration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(lint): apply mechanical oxlint auto-fixes
Automated and trivial fixes flagged by oxlint rules:
- @ts-ignore → @ts-expect-error
- export * → explicit named exports
- forEach → for-of loops
- Array<T> → T[] syntax
- Missing React key props
- Unused parameter underscoring
- Removed stale eslint-disable/ts-ignore comments
- Minor code simplifications (spread removal, type assertion fix)
No behavioral changes — all transformations are semantically equivalent.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(lint): suppress exhaustive-deps for intentional mount-only hooks
Add eslint-disable-next-line react-hooks/exhaustive-deps comments to hooks
that intentionally use empty or partial dependency arrays by design (e.g.,
mount-only effects, stable ref callbacks). These suppressions preserve the
existing intended behavior while satisfying oxlint's stricter linting.
No code logic changes — only lint suppression comments added/reworded.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(hooks): restructure hook dependencies and fix stale closures
Correctness fixes for React hook dependency arrays flagged by oxlint's
exhaustive-deps rule. Key changes:
- RadioGroup: destructure context, use functional state updaters (fixes
state mutation bug where .push() didn't trigger re-render)
- ContextualMenu/Submenu: destructure callbacks, add missing deps
- Menu: fix comma expression bug in MenuPopover, fix self-referential
useMemo in useMenu.android, destructure context
- Shimmer/Spinner/ActivityIndicator: useRef for Animated.Value (prevents
recreation on re-render), correct animation effect deps
- Drawer: add isFirstOpen dep, destructure callbacks
- useAsPressable/useAsToggle: add missing callback deps (stale closures)
- TabListAnimatedIndicator: useMemo → useRef for stable animation values
- TabList: refactor disabled tab search loop
- useSlot/useMergeRefs: correct dependency arrays
- Chip/Checkbox/OverflowItem: narrow or correct dep arrays
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs(changeset): Migrate from ESLint to oxlint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(hooks): address reviewer feedback on useMergeRefs, useSlot, and bundle script
- useMergeRefs: restore [...refs] spread so React compares individual ref
values rather than the always-new rest parameter array instance
- useSlot: re-add `component` to useMemo deps to ensure memo invalidates
when the component prop changes
- fluent-tester: revert bundle script to original `rnx-cli bundle --dev false`
which is more flexible than explicit per-platform chaining
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(ContextualMenu): restore onDismiss in Callout slot props
Destructuring onDismiss from userProps removed it from the ...rest spread
that gets passed to the Callout root slot. The Callout needs onDismiss to
function correctly — without it, the MenuButton SPACE key test consistently
failed because the menu couldn't dismiss/toggle properly.
Fix: destructure onDismiss AND explicitly pass it back in the root slot props.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 6585876 commit 9cf4444
269 files changed
Lines changed: 1281 additions & 1576 deletions
File tree
- .changeset
- .vscode
- apps
- E2E
- component-generator/component-templates/ComponentTemplate
- fluent-tester
- tester-core
- src/TestComponents/Button
- win32-81
- win32
- packages
- codemods
- components
- Avatar
- src
- Badge
- src
- CounterBadge
- PresenceBadge
- Button
- src
- CompoundButton
- FAB
- ToggleButton
- deprecated
- PrimaryButton
- StealthButton
- Callout
- Checkbox
- src/deprecated
- Chip
- src
- ContextualMenu
- src
- Divider
- FocusTrapZone
- FocusZone
- Icon
- Input
- Link
- src/legacy
- MenuButton
- src
- Menu
- src
- MenuItemRadio
- MenuList
- MenuPopover
- MenuTrigger
- Menu
- Notification
- PersonaCoin
- Persona
- Pressable
- RadioGroup
- src
- Radio
- legacy
- Separator
- Stack
- src
- Switch
- src
- TabList
- src
- TabListAnimatedIndicator
- TabList
- Tab
- Text
- configs
- eslint-config-rules
- jest-config
- kit-config
- lint-config-rules
- dependency-profiles/src
- deprecated
- foundation-composable
- foundation-compose
- foundation-settings
- foundation-tokens
- src
- theme-registry
- src
- themed-settings
- theming-ramp
- theming-react-native
- src/platform
- experimental
- ActivityIndicator
- src
- AppearanceAdditions
- src
- Avatar
- Checkbox
- Drawer
- src
- Dropdown
- Expander
- MenuButton
- src
- NativeDatePicker
- NativeFontMetrics
- src
- Overflow
- src
- OverflowItem
- Overflow
- Popover
- Shadow
- Shimmer
- src
- Spinner
- src
- Tooltip
- VibrancyView
- framework-base
- framework
- composition
- framework
- themed-stylesheet
- theme
- use-slots
- use-slot
- src
- use-styling
- src
- use-tokens
- libraries/core
- theming
- android-theme
- apple-theme
- src
- default-theme
- src
- theme-tokens
- theme-types
- theming-utils
- win32-theme
- utils
- adapters
- interactive-hooks
- src
- styling
- test-tools
- tokens
- scripts
- src
- preinstall
- tasks
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | 7 | | |
11 | 8 | | |
12 | 9 | | |
| |||
16 | 13 | | |
17 | 14 | | |
18 | 15 | | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | 16 | | |
23 | 17 | | |
24 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
60 | | - | |
61 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
105 | | - | |
106 | | - | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
107 | 108 | | |
108 | 109 | | |
109 | 110 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
51 | 50 | | |
52 | 51 | | |
| 52 | + | |
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | 37 | | |
39 | 38 | | |
40 | 39 | | |
| |||
141 | 140 | | |
142 | 141 | | |
143 | 142 | | |
144 | | - | |
| 143 | + | |
145 | 144 | | |
146 | 145 | | |
147 | 146 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
36 | 35 | | |
37 | 36 | | |
38 | 37 | | |
| |||
139 | 138 | | |
140 | 139 | | |
141 | 140 | | |
142 | | - | |
| 141 | + | |
143 | 142 | | |
144 | 143 | | |
145 | 144 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | 34 | | |
36 | 35 | | |
37 | 36 | | |
| |||
154 | 153 | | |
155 | 154 | | |
156 | 155 | | |
157 | | - | |
| 156 | + | |
158 | 157 | | |
159 | 158 | | |
160 | 159 | | |
| |||
0 commit comments