kubernetes-sigs/headlamp

Rule of hooks fixes needed (ubmrella issue)

Open

#5,183 opened on Apr 23, 2026

View on GitHub
 (4 comments) (0 reactions) (1 assignee)TypeScript (950 forks)auto 404
frontendgood first issuekind/bugquality

Repository metrics

Stars
 (6,936 stars)
PR merge metrics
 (PR metrics pending)

Description

Suppressed react-hooks lint violations — TODO to fix properly

Each item below is a self-contained description of a suppressed violation. Each could become a standalone sub-issue. They follow the <area>: <description> commit-message convention.

react-hooks/rules-of-hooks violations (58 suppressions across 21 files)

react-hooks/exhaustive-deps violations (145 suppressions across 73 files)

  • frontend: App: Fix react-hooks/exhaustive-deps — missing dependency in useEffect. File: frontend/src/App.tsx
  • frontend: AppContainer.stories: Fix react-hooks/exhaustive-deps — missing dependency in effect inside withEnv. File: frontend/src/components/App/AppContainer.stories.tsx
  • frontend: Home: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/App/Home/index.tsx
  • frontend: Notifications: Fix react-hooks/exhaustive-deps — missing dependency in useEffect. File: frontend/src/components/App/Notifications/Notifications.tsx
  • frontend: PluginSettings: Fix react-hooks/exhaustive-deps — missing dependency in effect. File: frontend/src/components/App/PluginSettings/PluginSettings.tsx
  • frontend: RouteSwitcher.stories: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/App/RouteSwitcher.stories.tsx
  • frontend: RouteSwitcher: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/App/RouteSwitcher.tsx
  • frontend: Settings/hook: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/App/Settings/hook.tsx
  • frontend: NodeShellSettings: Fix react-hooks/exhaustive-deps — multiple effects with missing dependencies. File: frontend/src/components/App/Settings/NodeShellSettings.tsx
  • frontend: NumRowsInput: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/App/Settings/NumRowsInput.tsx
  • frontend: PodDebugSettings: Fix react-hooks/exhaustive-deps — multiple effects with missing dependencies. File: frontend/src/components/App/Settings/PodDebugSettings.tsx
  • frontend: Settings: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/App/Settings/Settings.tsx
  • frontend: SettingsCluster: Fix react-hooks/exhaustive-deps — 4 effects with missing dependencies. File: frontend/src/components/App/Settings/SettingsCluster.tsx
  • frontend: TopBar: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/App/TopBar.tsx
  • frontend: Chooser: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/cluster/Chooser.tsx
  • frontend: ClusterChooserPopup: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/cluster/ClusterChooserPopup.tsx
  • frontend: KubeConfigLoader: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/cluster/KubeConfigLoader.tsx
  • frontend: ActionsNotifier: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/common/ActionsNotifier.tsx
  • frontend: Dialog: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Dialog.tsx
  • frontend: Label: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Label.tsx
  • frontend: LogViewer: Fix react-hooks/exhaustive-deps — multiple effects with missing dependencies. File: frontend/src/components/common/LogViewer.tsx
  • frontend: NamespacesAutocomplete: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/NamespacesAutocomplete.tsx
  • frontend: ObjectEventList: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/common/ObjectEventList.tsx
  • frontend: ReleaseNotes: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/common/ReleaseNotes/ReleaseNotes.tsx
  • frontend: AuthVisible: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Resource/AuthVisible.tsx
  • frontend: CreateButton: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Resource/CreateButton.tsx
  • frontend: DeleteMultipleButton: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Resource/DeleteMultipleButton.tsx
  • frontend: EditButton: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Resource/EditButton.tsx
  • frontend: EditorDialog: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/common/Resource/EditorDialog.tsx
  • frontend: LogsButton: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/common/Resource/LogsButton.tsx
  • frontend: Resource: Fix react-hooks/exhaustive-deps — multiple effects/memos with missing dependencies. File: frontend/src/components/common/Resource/Resource.tsx
  • frontend: ResourceTable: Fix react-hooks/exhaustive-deps — 4 effects with missing dependencies. File: frontend/src/components/common/Resource/ResourceTable.tsx
  • frontend: RevisionHistorySection: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/common/Resource/RevisionHistorySection.tsx
  • frontend: ViewButton: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Resource/ViewButton.tsx
  • frontend: SectionFilterHeader: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/SectionFilterHeader.tsx
  • frontend: ShowHideLabel: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/ShowHideLabel/ShowHideLabel.tsx
  • frontend: SimpleTable: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/common/SimpleTable.tsx
  • frontend: Table: Fix react-hooks/exhaustive-deps — multiple effects with missing dependencies. File: frontend/src/components/common/Table/Table.tsx
  • frontend: Terminal.stories: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/Terminal.stories.tsx
  • frontend: Terminal: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/common/Terminal.tsx
  • frontend: TimezoneSelect: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/common/TimezoneSelect/TimezoneSelect.tsx
  • frontend: configmap/Details: Fix react-hooks/exhaustive-deps — missing dependency in section(). File: frontend/src/components/configmap/Details.tsx
  • frontend: CustomResourceInstancesList: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/crd/CustomResourceInstancesList.tsx
  • frontend: CustomResourceList: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/crd/CustomResourceList.tsx
  • frontend: DetailsViewSection.stories: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/DetailsViewSection/DetailsViewSection.stories.tsx
  • frontend: DetailsViewSection: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/DetailsViewSection/DetailsViewSection.tsx
  • frontend: GlobalSearchContent: Fix react-hooks/exhaustive-deps — 7 effects/memos with missing dependencies. File: frontend/src/components/globalSearch/GlobalSearchContent.tsx
  • frontend: useLocalStorageState: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/globalSearch/useLocalStorageState.tsx
  • frontend: useRecent: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/globalSearch/useRecent.tsx
  • frontend: CreateNamespaceButton: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/namespace/CreateNamespaceButton.tsx
  • frontend: namespace/List: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/namespace/List.tsx
  • frontend: NodeShellTerminal: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/node/NodeShellTerminal.tsx
  • frontend: pod/Details: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/pod/Details.tsx
  • frontend: pod/List: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/pod/List.tsx
  • frontend: PodDebugTerminal: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/pod/PodDebugTerminal.tsx
  • frontend: portforward/index: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/portforward/index.tsx
  • frontend: ProjectDetails: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/project/ProjectDetails.tsx
  • frontend: ProjectList: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/project/ProjectList.tsx
  • frontend: ProjectResourcesTab: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/project/ProjectResourcesTab.tsx
  • frontend: GraphView: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/components/resourceMap/GraphView.tsx
  • frontend: KubeObjectGlance: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/resourceMap/KubeObjectGlance/KubeObjectGlance.tsx
  • frontend: KubeNodeDetails: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/resourceMap/details/KubeNodeDetails.tsx
  • frontend: GraphSources: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/resourceMap/sources/GraphSources.tsx
  • frontend: relations: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/resourceMap/sources/definitions/relations.tsx
  • frontend: useGraphViewport: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/resourceMap/useGraphViewport.ts
  • frontend: useQueryParamsState: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/resourceMap/useQueryParamsState.tsx
  • frontend: secret/Details: Fix react-hooks/exhaustive-deps — missing dependency in section(). File: frontend/src/components/secret/Details.tsx
  • frontend: NavigationTabs: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/Sidebar/NavigationTabs.tsx
  • frontend: Sidebar: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/components/Sidebar/Sidebar.tsx
  • frontend: useSidebarItems: Fix react-hooks/exhaustive-deps — 4 effects with missing dependencies. File: frontend/src/components/Sidebar/useSidebarItems.tsx
  • frontend: AdvancedSearch: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/advancedSearch/AdvancedSearch.tsx
  • frontend: ApiResourcePicker: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/components/advancedSearch/ApiResourcePicker.tsx
  • frontend: useKubeLists: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/advancedSearch/utils/useKubeLists.tsx
  • frontend: LocaleSelect: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/i18n/LocaleSelect/LocaleSelect.tsx
  • frontend: electronI18n: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/i18n/electronI18n.tsx
  • frontend: ThemeProviderNexti18n: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/i18n/ThemeProviderNexti18n.tsx
  • frontend: OauthPopup: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/components/oidcauth/OauthPopup.tsx
  • frontend: api/v2/hooks: Fix react-hooks/exhaustive-deps — 2 effects with missing dependencies. File: frontend/src/lib/k8s/api/v2/hooks.ts
  • frontend: useKubeObjectList: Fix react-hooks/exhaustive-deps — 3 effects with missing dependencies. File: frontend/src/lib/k8s/api/v2/useKubeObjectList.ts
  • frontend: event: Fix react-hooks/exhaustive-deps — effects with missing dependencies in class static methods. File: frontend/src/lib/k8s/event.ts
  • frontend: k8s/index: Fix react-hooks/exhaustive-deps — effects with missing dependencies. File: frontend/src/lib/k8s/index.ts
  • frontend: KubeObject: Fix react-hooks/exhaustive-deps — effect with missing dependency. File: frontend/src/lib/k8s/KubeObject.ts
  • frontend: useTerminalStream: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/lib/k8s/useTerminalStream.ts
  • frontend: router: Fix react-hooks/exhaustive-deps — missing dependency in nested component. File: frontend/src/lib/router/index.tsx
  • frontend: themes: Fix react-hooks/exhaustive-deps — missing dependency. File: frontend/src/lib/themes.ts
  • frontend: util: Fix react-hooks/exhaustive-deps — effects/memos with missing dependencies. File: frontend/src/lib/util.ts
  • frontend: Plugins: Fix react-hooks/exhaustive-deps — effect with missing dependencies. File: frontend/src/plugin/Plugins.tsx

react-hooks/set-state-in-effect violations (17 suppressions across 12 files)

  • frontend: Activity: Fix react-hooks/set-state-in-effect — state setter called inside an effect without proper cleanup. File: frontend/src/components/activity/Activity.tsx
  • frontend: useTypeDefinition: Fix react-hooks/set-state-in-effect — state setter called inside an effect. File: frontend/src/components/advancedSearch/utils/useTypeDefinition.tsx
  • frontend: PluginSettings: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/PluginSettings/PluginSettings.tsx
  • frontend: PluginSettingsDetails: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/PluginSettings/PluginSettingsDetails.tsx
  • frontend: Settings/hook: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/Settings/hook.tsx
  • frontend: NodeShellSettings: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/Settings/NodeShellSettings.tsx
  • frontend: PodDebugSettings: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/Settings/PodDebugSettings.tsx
  • frontend: ShortcutsSettings: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/App/Settings/ShortcutsSettings.tsx
  • frontend: ObjectEventList: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/common/ObjectEventList.tsx
  • frontend: RevisionHistorySection: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/common/Resource/RevisionHistorySection.tsx
  • frontend: RollbackDialog: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/common/Resource/RollbackDialog.tsx
  • frontend: Table: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/common/Table/Table.tsx
  • frontend: CreateNamespaceButton: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/namespace/CreateNamespaceButton.tsx
  • frontend: ProjectDetails: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/project/ProjectDetails.tsx
  • frontend: KubeObjectNode: Fix react-hooks/set-state-in-effect — state setter in effect. File: frontend/src/components/resourceMap/nodes/KubeObjectNode.tsx

react-hooks/static-components violations (12 suppressions across 4 files)

  • frontend: AppContainer: Fix react-hooks/static-components — component created during render. Move component definition outside the render function or memoize. File: frontend/src/components/App/AppContainer.tsx
  • frontend: ClusterNameEditor: Fix react-hooks/static-components — component created during render. File: frontend/src/components/App/Settings/ClusterNameEditor.tsx
  • frontend: Dialog: Fix react-hooks/static-components — component created during render. File: frontend/src/components/common/Dialog.tsx
  • frontend: Resource: Fix react-hooks/static-components — 7 instances of LivenessProbeItem and other components created during render. Move definitions outside the render function. File: frontend/src/components/common/Resource/Resource.tsx
  • frontend: Chooser: Fix react-hooks/static-components — component created during render. File: frontend/src/components/cluster/Chooser.tsx

react-hooks/use-memo violations (9 suppressions across 6 files)

  • frontend: ClusterChooserPopup: Fix react-hooks/use-memo — expensive computation should be wrapped in useMemo. File: frontend/src/components/cluster/ClusterChooserPopup.tsx
  • frontend: EditButton: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/components/common/Resource/EditButton.tsx
  • frontend: ScaleButton: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/components/common/Resource/ScaleButton.tsx
  • frontend: Table: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/components/common/Table/Table.tsx
  • frontend: GlobalSearchContent: Fix react-hooks/use-memo — multiple computations should be memoized. File: frontend/src/components/globalSearch/GlobalSearchContent.tsx
  • frontend: GraphSources: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/components/resourceMap/sources/GraphSources.tsx
  • frontend: k8s/index: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/lib/k8s/index.ts
  • frontend: useKubeObjectList: Fix react-hooks/use-memo — computation should be memoized. File: frontend/src/lib/k8s/api/v2/useKubeObjectList.ts

react-hooks/immutability violations (6 suppressions across 4 files)

  • frontend: Link: Fix react-hooks/immutability — ref or state value mutated directly instead of using setter. File: frontend/src/components/common/Link.tsx
  • frontend: LogViewer: Fix react-hooks/immutability — ref or state value mutated directly. File: frontend/src/components/common/LogViewer.tsx
  • frontend: EditorDialog: Fix react-hooks/immutability — ref or state value mutated directly. File: frontend/src/components/common/Resource/EditorDialog.tsx
  • frontend: Resource: Fix react-hooks/immutability — ref or state value mutated directly. File: frontend/src/components/common/Resource/Resource.tsx
  • frontend: Terminal.stories: Fix react-hooks/immutability — ref or state value mutated directly. File: frontend/src/components/common/Terminal.stories.tsx
  • frontend: LocaleSelect: Fix react-hooks/immutability — ref or state value mutated directly. File: frontend/src/i18n/LocaleSelect/LocaleSelect.tsx

react-hooks/purity violations (2 suppressions across 2 files)

  • frontend: ResourceTable: Fix react-hooks/purity — impure function call during render. File: frontend/src/components/common/Resource/ResourceTable.tsx
  • frontend: util: Fix react-hooks/purityMath.random() called during render in useId. File: frontend/src/lib/util.ts

react-hooks/refs violations (4 suppressions across 1 file)

  • frontend: Chart: Fix react-hooks/refs — ref access pattern issue. File: frontend/src/components/common/Chart.tsx

Contributor guide