Skip to content

chore: resolve remaining knip issues#1991

Open
brandon-pereira wants to merge 2 commits intomainfrom
brandon/knip-fixes-2
Open

chore: resolve remaining knip issues#1991
brandon-pereira wants to merge 2 commits intomainfrom
brandon/knip-fixes-2

Conversation

@brandon-pereira
Copy link
Member

Summary

Resolve all remaining knip issues — removes unused exports/types, adds missing direct dependencies, deletes dead code, and updates knip config.

Dependency fixes:

  • Root: swapped unused eslint-config-next/eslint-plugin-react-hooks for actually-imported @eslint/js, typescript-eslint, tslib
  • App: added directly-used transitive deps (@codemirror/*, react-resizable, postcss-simple-vars, rimraf, serve, @next/eslint-plugin-next, eslint-plugin-react); removed unused @storybook/react

Dead code removal:

  • Removed ~100 unused exports/types across api and app packages (removed export keyword where used locally, deleted entirely where not)
  • Fixed duplicate DBRowTableIconButton default+named export; updated consumers to use named import

knip.json updates:

  • Added fixtures.ts entry point and opamp/** ignore for api package
  • Excluded enumMembers and duplicates issue types
  • Enabled ignoreExportsUsedInFile

How to test locally or on Vercel

  1. yarn install && yarn knip — should produce zero output
  2. make ci-lint — all packages pass
  3. make ci-unit — all unit tests pass
@brandon-pereira brandon-pereira added the ai-generated AI-generated content; review carefully before merging. label Mar 25, 2026
@changeset-bot
Copy link

changeset-bot bot commented Mar 25, 2026

⚠️ No Changeset found

Latest commit: b0e392e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Mar 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hyperdx-oss Ready Ready Preview, Comment Mar 26, 2026 4:50pm

Request Review

@github-actions
Copy link
Contributor

github-actions bot commented Mar 25, 2026

Knip - Unused Code Analysis

🟢 -182 change in total issues (182 on main → 0 on PR)

Category main PR Diff
Unused devDependencies 3 0 -3 🟢
Unlisted dependencies 15 0 -15 🟢
Unresolved imports 2 0 -2 🟢
Unlisted binaries 2 0 -2 🟢
Unused exports 119 0 -119 🟢
Unused exported types 37 0 -37 🟢
Unused enum members 2 0 -2 🟢
Duplicate exports 2 0 -2 🟢
Details

Unused devDependencies

  • 🟢 package.json:eslint-config-next
  • 🟢 package.json:eslint-plugin-react-hooks
  • 🟢 packages/app/package.json:@storybook/react
    Unlisted dependencies
  • 🟢 packages/api/eslint.config.mjs:@eslint/js
  • 🟢 packages/api/eslint.config.mjs:typescript-eslint
  • 🟢 packages/app/eslint.config.mjs:@eslint/js
  • 🟢 packages/app/eslint.config.mjs:typescript-eslint
  • 🟢 packages/app/eslint.config.mjs:@next/eslint-plugin-next
  • 🟢 packages/app/eslint.config.mjs:eslint-plugin-react
  • 🟢 packages/app/src/DBDashboardPage.tsx:react-resizable
  • 🟢 packages/app/src/components/SQLEditor/SQLEditor.tsx:@codemirror/autocomplete
  • 🟢 packages/app/src/components/SQLEditor/SQLInlineEditor.tsx:@codemirror/autocomplete
  • 🟢 packages/app/src/components/SQLEditor/utils.ts:@codemirror/autocomplete
  • 🟢 packages/app/src/components/SQLEditor/__tests__/utils.test.ts:@codemirror/autocomplete
  • 🟢 packages/app/src/components/SQLEditor/__tests__/utils.test.ts:@codemirror/state
  • 🟢 packages/common-utils/eslint.config.mjs:@eslint/js
  • 🟢 packages/common-utils/eslint.config.mjs:typescript-eslint
  • 🟢 packages/app/src/components/TeamSettings/WebhookForm.tsx:@codemirror/lint
    Unresolved imports
  • 🟢 tsconfig.base.json:tslib
  • 🟢 packages/app/postcss.config.cjs:postcss-simple-vars
    Unlisted binaries
  • 🟢 packages/app/package.json:rimraf
  • 🟢 packages/app/package.json:serve
    Unused exports
  • 🟢 packages/api/src/fixtures.ts:initCiEnvs
  • 🟢 packages/api/src/fixtures.ts:getAgent
  • 🟢 packages/api/src/fixtures.ts:clearClickhouseTables
  • 🟢 packages/api/src/fixtures.ts:selectAllLogs
  • 🟢 packages/api/src/fixtures.ts:buildMetricSeries
  • 🟢 packages/api/src/fixtures.ts:makeChartConfig
  • 🟢 packages/api/src/controllers/ai.ts:parseTimeRangeInput
  • 🟢 packages/api/src/controllers/ai.ts:LIVE_TAIL_TIME_QUERY
  • 🟢 packages/api/src/controllers/ai.ts:RELATIVE_TIME_OPTIONS
  • 🟢 packages/api/src/controllers/ai.ts:DURATION_OPTIONS
  • 🟢 packages/api/src/controllers/ai.ts:DURATIONS
  • 🟢 packages/api/src/controllers/ai.ts:dateParser
  • 🟢 packages/api/src/controllers/ai.ts:mergePath
  • 🟢 packages/api/src/utils/common.ts:useTry
  • 🟢 packages/api/src/utils/common.ts:sleep
  • 🟢 packages/api/src/utils/zod.ts:sourceTableSchema
  • 🟢 packages/api/src/utils/zod.ts:externalDashboardTileSchemaWithOptionalId
  • 🟢 packages/api/src/utils/zod.ts:zChannel
  • 🟢 packages/api/src/utils/zod.ts:zSavedSearchAlert
  • 🟢 packages/api/src/utils/zod.ts:zTileAlert
  • 🟢 packages/api/src/utils/errors.ts:Api401Error
  • 🟢 packages/api/src/utils/errors.ts:Api403Error
  • 🟢 packages/api/src/utils/errors.ts:Api409Error
  • 🟢 packages/api/src/utils/logParser.ts:extractApiKey
  • 🟢 packages/api/src/utils/logParser.ts:vectorLogParser
  • 🟢 packages/api/src/utils/logParser.ts:vectorMetricParser
  • 🟢 packages/api/src/utils/logParser.ts:vectorRrwebParser
  • 🟢 packages/api/src/tasks/checkAlerts/template.ts:notifyChannel
  • 🟢 packages/app/src/config.ts:HDX_DISABLE_METADATA_FIELD_FETCH
  • 🟢 packages/app/src/config.ts:NODE_ENV
  • 🟢 packages/app/src/config.ts:IS_CI
  • 🟢 packages/app/src/config.ts:IS_PROD
  • 🟢 packages/app/src/config/fonts.ts:FONT_CONFIG
  • 🟢 packages/app/src/config/fonts.ts:DEFAULT_FONT_CONFIG
  • 🟢 packages/app/src/config/fonts.ts:DEFAULT_MANTINE_FONT
  • 🟢 packages/app/src/useQueryParam.tsx:useQueryParam
  • 🟢 packages/app/src/useUserPreferences.tsx:userPreferencesAtom
  • 🟢 packages/app/src/DBServiceMapPage.tsx:SAMPLING_FACTORS
  • 🟢 packages/app/src/HDXMultiSeriesTimeChart.tsx:LegendRenderer
  • 🟢 packages/app/src/LogSidePanelElements.tsx:StacktraceValue
  • 🟢 packages/app/src/LogSidePanelElements.tsx:StacktraceRow
  • 🟢 packages/app/src/LogSidePanelElements.tsx:stacktraceColumns
  • 🟢 packages/app/src/LogSidePanelElements.tsx:breadcrumbColumns
  • 🟢 packages/app/src/LogSidePanelElements.tsx:useShowMoreRows
  • 🟢 packages/app/src/LogSidePanelElements.tsx:SourceMapsFtux
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:UNDEFINED_WIDTH
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:parseEvents
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:getFirstFrame
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:StacktraceFrame
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:CollapsibleSection
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:StacktraceValue
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:StacktraceRow
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:stacktraceColumns
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:breadcrumbColumns
  • 🟢 packages/app/src/utils.ts:generateSearchUrl
  • 🟢 packages/app/src/utils.ts:useFirstNonNullValue
  • 🟢 packages/app/src/utils.ts:isValidJson
  • 🟢 packages/app/src/utils.ts:getLocalStorageValue
  • 🟢 packages/app/src/utils.ts:CHART_PALETTE
  • 🟢 packages/app/src/utils.ts:CLICKSTACK_CHART_PALETTE
  • 🟢 packages/app/src/utils.ts:getColorFromCSSVariable
  • 🟢 packages/app/src/utils.ts:useIsBlog
  • 🟢 packages/app/src/utils.ts:useIsDocs
  • 🟢 packages/app/src/utils.ts:useIsTerms
  • 🟢 packages/app/src/utils.ts:legacyMetricNameToNameAndDataType
  • 🟢 packages/app/src/utils.ts:_useTry
  • 🟢 packages/app/src/components/Sources/SourceForm.tsx:LogTableModelForm
  • 🟢 packages/app/src/components/Sources/SourceForm.tsx:TraceTableModelForm
  • 🟢 packages/app/src/components/Sources/SourceForm.tsx:SessionTableModelForm
  • 🟢 packages/app/src/components/Sources/SourceForm.tsx:MetricTableModelForm
  • 🟢 packages/app/src/ChartUtils.tsx:SORT_ORDER
  • 🟢 packages/app/src/ChartUtils.tsx:TABLES
  • 🟢 packages/app/src/ChartUtils.tsx:getMetricAggFns
  • 🟢 packages/app/src/ChartUtils.tsx:isGranularity
  • 🟢 packages/app/src/ChartUtils.tsx:seriesToSearchQuery
  • 🟢 packages/app/src/ChartUtils.tsx:seriesToUrlSearchQueryParam
  • 🟢 packages/app/src/ChartUtils.tsx:TableToggle
  • 🟢 packages/app/src/ChartUtils.tsx:SINGLE_DECIMAL_NUMBER_FORMAT
  • 🟢 packages/app/src/ChartUtils.tsx:K8S_NETWORK_NUMBER_FORMAT
  • 🟢 packages/app/src/ChartUtils.tsx:mapV1AggFnToV2
  • 🟢 packages/app/src/ChartUtils.tsx:convertV1GroupByToV2
  • 🟢 packages/app/src/api.ts:loginHook
  • 🟢 packages/app/src/api.ts:server
  • 🟢 packages/app/src/timeQuery.ts:parseValidTimeRange
  • 🟢 packages/app/src/components/DBEditTimeChartForm.tsx:ErrorNotificationMessage
  • 🟢 packages/app/src/components/DBRowTable.tsx:PatternTrendChart
  • 🟢 packages/app/src/components/DBRowTable.tsx:selectColumnMapWithoutAdditionalKeys
  • 🟢 packages/app/src/components/DBSearchPageFilters.tsx:TextButton
  • 🟢 packages/app/src/components/DBSearchPageFilters.tsx:FilterCheckbox
  • 🟢 packages/app/src/components/DBSearchPageFilters.tsx:isFieldPrimary
  • 🟢 packages/app/src/components/InputControlled.tsx:SwitchControlled
  • 🟢 packages/app/src/components/deltaChartUtils.ts:flattenData
  • 🟢 packages/app/src/theme/index.ts:makeTheme
  • 🟢 packages/app/src/theme/index.ts:theme
  • 🟢 packages/api/src/controllers/user.ts:findUserByEmailInTeam
  • 🟢 packages/app/src/utils/webhookIcons.tsx:WEBHOOK_SERVICE_CONFIG
  • 🟢 packages/app/src/utils/webhookIcons.tsx:CHANNEL_ICONS
  • 🟢 packages/app/src/utils/webhookIcons.tsx:getWebhookServiceIcon
  • 🟢 packages/app/src/GranularityPicker.tsx:default
  • 🟢 packages/app/src/GranularityPicker.tsx:GranularityPickerControlledComponent
  • 🟢 packages/app/src/components/DatabaseSelect.tsx:default
  • 🟢 packages/app/src/components/DBTableSelect.tsx:default
  • 🟢 packages/app/src/utils/searchWindows.ts:DEFAULT_TIME_WINDOWS_SECONDS
  • 🟢 packages/app/src/components/AggFnSelect.tsx:default
  • 🟢 packages/app/src/hooks/usePatterns.tsx:STATUS_CODE_COLUMN_ALIAS
  • 🟢 packages/app/src/theme/themes/hyperdx/mantineTheme.ts:makeTheme
  • 🟢 packages/api/src/middleware/cors.ts:noCors
  • 🟢 packages/api/src/opamp/controllers/opampController.ts:buildOtelCollectorConfig
  • 🟢 packages/api/src/opamp/controllers/opampController.ts:OpampController
  • 🟢 packages/app/src/components/NetworkPropertyPanel.tsx:NetworkBody
  • 🟢 packages/app/src/theme/themes/clickstack/mantineTheme.ts:makeTheme
  • 🟢 packages/api/src/opamp/services/agentService.ts:AgentService
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:AgentConfigFile
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:AgentConfigMap
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:AgentRemoteConfig
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:AgentToServer
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:root
  • 🟢 packages/api/src/opamp/utils/protobuf.ts:ServerToAgent
  • 🟢 packages/api/src/opamp/models/agent.ts:AgentStore
    Unused exported types
  • 🟢 packages/api/src/utils/zod.ts:SourceTable
  • 🟢 packages/api/src/utils/zod.ts:SearchChartSeries
  • 🟢 packages/api/src/utils/zod.ts:ChartSeries
  • 🟢 packages/api/src/utils/zod.ts:ExternalDashboardSavedFilterValue
  • 🟢 packages/api/src/utils/zod.ts:ExternalDashboardBuilderTileConfig
  • 🟢 packages/api/src/utils/zod.ts:ExternalDashboardTileWithOptionalId
  • 🟢 packages/api/src/utils/logParser.ts:AggregationTemporality
  • 🟢 packages/api/src/utils/logParser.ts:LogType
  • 🟢 packages/api/src/utils/logParser.ts:LogPlatform
  • 🟢 packages/api/src/utils/logParser.ts:KeyValuePairs
  • 🟢 packages/api/src/utils/logParser.ts:SpanFields
  • 🟢 packages/api/src/utils/logParser.ts:LogFields
  • 🟢 packages/api/src/utils/logParser.ts:RrwebEventModel
  • 🟢 packages/api/src/utils/logParser.ts:LogStreamModel
  • 🟢 packages/api/src/utils/logParser.ts:VectorLog
  • 🟢 packages/api/src/utils/logParser.ts:VectorSpan
  • 🟢 packages/api/src/utils/logParser.ts:VectorMetric
  • 🟢 packages/app/src/config/fonts.ts:FontConfig
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:StacktraceBreadcrumbCategory
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:StacktraceBreadcrumb
  • 🟢 packages/app/src/components/ExceptionSubpanel.tsx:ExceptionValues
  • 🟢 packages/app/src/ChartUtils.tsx:SortOrder
  • 🟢 packages/app/src/utils/webhookIcons.tsx:ServiceConfig
  • 🟢 packages/api/src/models/presetDashboardFilter.ts:IPresetDashboardFilter
  • 🟢 packages/api/src/models/teamInvite.ts:ITeamInvite
  • 🟢 packages/app/src/types.ts:KeyValuePairs
  • 🟢 packages/app/src/types.ts:LogStreamModel
  • 🟢 packages/app/src/types.ts:Session
  • 🟢 packages/app/src/types.ts:Dictionary
  • 🟢 packages/app/src/types.ts:Chart
  • 🟢 packages/app/src/hooks/useCsvExport.tsx:CsvExportOptions
  • 🟢 packages/app/src/hooks/useCsvExport.tsx:CsvExportResult
  • 🟢 packages/app/src/components/SourceSchemaPreview.tsx:SourceSchemaPreviewSource
  • 🟢 packages/app/src/components/SourceSchemaPreview.tsx:SourceSchemaPreviewProps
  • 🟢 packages/app/src/components/ExpandableRowTable.tsx:ExpandableRowTableProps
  • 🟢 packages/app/src/components/DBSearchPageFilters/NestedFilterGroup.tsx:NestedFilterGroupProps
  • 🟢 packages/app/src/components/AlertPreviewChart.tsx:AlertPreviewChartProps
    Unused enum members
  • 🟢 packages/api/src/utils/errors.ts:CONTENT_TOO_LARGE
  • 🟢 packages/api/src/utils/errors.ts:OK
    Duplicate exports
  • 🟢 packages/common-utils/src/types.ts:undefined
  • 🟢 packages/app/src/components/DBTable/DBRowTableIconButton.tsx:undefined
What is this?

Knip finds unused files, dependencies, and exports in your codebase.
This comment compares the PR branch against main to detect regressions.

Run yarn knip locally to see full details.

@github-actions
Copy link
Contributor

github-actions bot commented Mar 25, 2026

E2E Test Results

All tests passed • 104 passed • 3 skipped • 979s

Status Count
✅ Passed 104
❌ Failed 0
⚠️ Flaky 0
⏭️ Skipped 3

Tests ran across 4 shards in parallel.

View full report →

@brandon-pereira brandon-pereira marked this pull request as ready for review March 25, 2026 21:55
@github-actions
Copy link
Contributor

github-actions bot commented Mar 25, 2026

PR Review

This is a housekeeping PR removing unused exports/dead code and fixing dependency declarations. Verified all removed symbols have no remaining consumers.

  • ⚠️ knip.json globally excludes "duplicates" and "enumMembers" issue types → These are silenced rather than fixed. duplicates in particular can mask real bugs (e.g., unintentional re-exports). Consider narrowing to per-workspace ignores or fixing the underlying issues instead.

  • ⚠️ src/utils/logParser.ts added to knip ignore rather than cleaning it up → The file still exports types like VectorLog, VectorMetric, KeyPath that are only used in fixtures.ts and tests. Ignoring the whole file is a broad suppression; acceptable pragmatically, but worth a TODO comment in the file explaining why.

  • ℹ️ PR description says ignoreExportsUsedInFile was enabled but this option is absent from the final knip.json → Minor documentation inaccuracy, not a blocker.

  • ✅ Verified: Api401Error, Api403Error, Api409Error, sleep, findUserByEmailInTeam, noCors, and all removed component exports have no remaining consumers.

  • DBRowTableIconButton default-export removal is correct — both consumers updated to named import { DBRowTableIconButton }.

No critical bugs or security issues found.

@brandon-pereira brandon-pereira requested review from a team, bot-hyperdx and dhable and removed request for a team and bot-hyperdx March 26, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated AI-generated content; review carefully before merging.

1 participant