unstale

npm / knip

knip

What changed in knip 5 to 6, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-17.

25 breaking1 security113 new APIs and options9 performance114 behavior and defaults131 tooling337 fixes and other

knip 6476 changes

Breaking changes 18

  • Removes expo-router entry points from the Expo plugin.

    6.41.0release notes

  • Compiler import detection now requires a word boundary around the import keyword.

    6.36.0release notes

  • Knip now exits with code 2 when a plugin config file fails to load.

    6.35.1release notes

  • Knip now throws when configuration is not an object.

    6.33.0release notes

  • tsc is no longer included in ignoreBinaries.

    6.30.0release notes

  • Inline dynamic import loaders now consume only the default export.

    6.30.0release notes

  • Async glob no longer follows symbolic links.

    6.29.0release notes

  • Unused re-exports are reported when ignoreExportsUsedInFile is enabled.

    6.28.0release notes

  • Knip now assumes Node 24+ or Bun as its runtime.

    6.24.0release notes

  • ignoreBinaries was removed for tar-related behavior, so configurations relying on it may no longer have an effect.

    6.17.1release notes

  • The old experimentalTags configuration has been removed.

    6.5.0release notes

  • The classMembers issue type is no longer supported.

    6.0.0release notes

  • The experimental flag was removed; use --tags instead.

    6.0.0release notes

  • The JSON reporter no longer includes a root files property.

    6.0.0release notes

  • The flag was removed because including libraries is now the default and only behavior.

    6.0.0release notes

  • The flag was removed because isolated workspaces are now the default and only behavior.

    6.0.0release notes

  • The private issues._files property was removed from reporter function inputs.

    6.0.0release notes

  • Knip v6 requires Node.js 20.19.0 or newer.

    6.0.0release notes

Security 1

  • Argument arrays are encoded before shell-command parsing to preserve argument boundaries.

    6.33.0release notes

New APIs and options 73

  • Separates Expo Router support into its own plugin.

    6.41.0release notes

  • Supports function-based configurations in the Rsbuild plugin.

    6.41.0release notes

  • Uses files from TypeScript configuration references when enabled.

    6.41.0release notes

  • An osls plugin was added for analyzing osls projects.

    6.40.0release notes

  • Cucumber plugin handling now includes profiles, formatters, and require paths.

    6.39.0release notes

  • Adds a Railway plugin for Knip projects.

    6.39.0release notes

  • The ESLint plugin now supports import-x/* settings.

    6.38.0release notes

  • Adds support for oxlint extends configuration.

    6.38.0release notes

  • Added n8n to the supported projects.

    6.36.0release notes

  • Valueless Node CLI flags are now added to boolean options.

    6.36.0release notes

  • Added Varlock plugin support.

    6.36.0release notes

  • Diagnostics support an editor severity setting.

    6.35.0release notes

  • Knip supports configuring preprocessors in knip.json.

    6.35.0release notes

  • Adds support for glob from node:fs/promises.

    6.34.0release notes

  • defineConfig is now exposed through the ./config entrypoint for configuration authoring.

    6.33.0release notes

  • oxlint and vite-plus import resolvers can now be resolved from settings.

    6.33.0release notes

  • Knip now supports TypeScript content mappers for processing TypeScript content.

    6.33.0release notes

  • Knip now supports the oxfmt.config.mts configuration file.

    6.32.2release notes

  • Knip now supports the oxlint.config.mts configuration file.

    6.32.2release notes

  • Adds a Borp plugin for detecting usage in Borp projects.

    6.32.0release notes

  • A SARIF reporter is now available for producing SARIF-formatted results.

    6.30.0release notes

  • The Stryker integration now supports TypeScript extensions.

    6.30.0release notes

  • Convex function modules are now discovered automatically.

    6.28.0release notes

  • Vitest inline project configuration extensions are now supported.

    6.27.0release notes

  • The react-email dir argument now accepts the -d alias.

    6.27.0release notes

  • The tanstack-router plugin now supports TanStack Start.

    6.27.0release notes

  • Adds a plugin that recognizes electron-vite conventions.

    6.26.0release notes

  • Reads oxlint jsPlugins from vite-plus vite.config and .oxlintrc.json.

    6.26.0release notes

  • Adds a plugin that recognizes Laravel conventions.

    6.26.0release notes

  • Adds support for the @nuxtjs/i18n plugin.

    6.26.0release notes

  • Recognizes vite-plugin-vue-meta-layouts using the same layouts convention.

    6.26.0release notes

  • Supports @vite-pwa/nuxt PWA configuration in nuxt.config.

    6.26.0release notes

  • Circular dependencies can now be reported through the opt-in cycles issue type.

    6.25.0release notes

  • Knip adds an eve plugin for the Vercel framework.

    6.25.0release notes

  • The Next.js plugin now supports next.config.mts.

    6.25.0release notes

  • Knip now supports packageExtensions in Yarn and pnpm configurations.

    6.25.0release notes

  • Knip now supports Prettier overrides.

    6.25.0release notes

  • Script commands are now parsed with a parser built on unbash.

    6.25.0release notes

  • Exports the Issue type for consumers of Knip's type API.

    6.24.0release notes

  • Exports the IssueRecords type for consumers of Knip's type API.

    6.24.0release notes

  • Exports the IssueType type for consumers of Knip's type API.

    6.24.0release notes

  • The Starlight plugin adds customCss support for configuring custom CSS.

    6.23.0release notes

  • Knip adds support for nub.

    6.23.0release notes

  • Knip adds support for Lunaria.

    6.22.0release notes

  • Adds an opt-out for raw transfer behavior.

    6.20.0release notes

  • Knip supports a new optional SvelteKit configuration pattern through Vite config.

    6.19.0release notes

  • Adds a followCursor setting for the Imports and Exports views.

    6.17.0release notes

  • Supports configuring ignoreIssues separately for each workspace.

    6.17.0release notes

  • ignoreExportsUsedInFile can now be configured independently for each workspace.

    6.16.0release notes

  • Adds workspaceRoot so the VSCode extension can work when the workspace root lacks package.json.

    6.16.0release notes

  • Adds a command-line option to disable tag hints.

    6.15.0release notes

  • Adds treatTagHintsAsErrors to configure tag hints as errors.

    6.15.0release notes

  • Adds -D as a CLI argument shorthand.

    6.14.0release notes

  • Adds a zero-overhead duration measurement option.

    6.14.0release notes

  • Adds -f as a CLI argument shorthand.

    6.14.0release notes

  • Adds -F as a CLI argument shorthand.

    6.14.0release notes

  • Adds -p as a CLI argument shorthand.

    6.14.0release notes

  • Adds -s as a CLI argument shorthand.

    6.14.0release notes

  • Adds -u as a CLI argument shorthand.

    6.14.0release notes

  • Adds -w as a CLI argument shorthand.

    6.14.0release notes

  • Knip now recognizes Jest configuration files using the .cts and .mts extensions.

    6.13.1release notes

  • Some Knip plugins now recognize configuration files with .mts and .cts extensions.

    6.13.1release notes

  • Mercurial is now included in command constants.

    6.13.0release notes

  • Source-map subpath imports are supported.

    6.13.0release notes

  • A Vercel configuration plugin was added for detecting or handling Vercel configuration.

    6.12.0release notes

  • compiler-extensions are supported in tsc-files mode.

    6.11.0release notes

  • Plugins can contribute source-map rules, allowing integrations to extend source-map handling.

    6.6.0release notes

  • The knip-run tool now supports a workspace option for selecting the workspace to run.

    6.5.0release notes

  • The pino plugin adds a transportCall visitor for analyzing transport calls.

    6.5.0release notes

  • Adds a Rolldown plugin to Knip.

    6.3.0release notes

  • The KnipConfiguration type is now exported for dynamic configuration use cases.

    6.2.0release notes

  • Adds a setting for specifying the Node.js runtime path used by Knip.

    6.1.0release notes

  • Replaces convertPathsToAlias as the path-mapping function.

    6.0.6release notes

Performance 3

  • Performance was improved slightly, which may make Knip runs marginally faster.

    6.6.0release notes

  • Glob results are cached across runs using the --cache option, improving repeated analysis performance.

    6.4.0release notes

  • The module graph queue is deduplicated to avoid processing the same files redundantly.

    6.2.0release notes

Behavior and default changes 68

  • Applies a directory’s .gitignore before walking its subdirectories.

    6.41.0release notes

  • Test files are excluded from package entries when production mode is enabled.

    6.40.0release notes

  • The MDX content mapper now resolves remarkPlugins configuration.

    6.38.0release notes

  • NODE_OPTIONS inputs are now applied to package manager binaries.

    6.36.0release notes

  • Typedoc plugin options now accept the string form.

    6.36.0release notes

  • Typedoc theme options now accept the string form.

    6.36.0release notes

  • Source is compiled on demand.

    6.35.0release notes

  • The content mapper process is now resolved from the package.json TypeScript content mapper exec setting.

    6.33.0release notes

  • printf is now ignored as a global binary.

    6.32.3release notes

  • Referenced config files are handled in their own plugin, affecting how Knip processes project configuration.

    6.32.1release notes

  • Built-ins are classified from module specifiers.

    6.32.0release notes

  • Entries are now resolved from Mocha script arguments.

    6.32.0release notes

  • Catalog references are tracked across scoped runs.

    6.30.0release notes

  • Object jsPlugin specifiers are now read from Vite+ configuration.

    6.30.0release notes

  • Catalog references in pnpm dlx scripts are now tracked.

    6.30.0release notes

  • Published type dependencies are now analyzed.

    6.30.0release notes

  • Script catalog references are tracked across scoped runs.

    6.30.0release notes

  • Assets referenced from SCSS URLs are now tracked.

    6.30.0release notes

  • Unresolved catalog references are now reported.

    6.30.0release notes

  • Scoped runs now include workspace dependencies.

    6.30.0release notes

  • Common global binaries are ignored during dependency analysis.

    6.28.0release notes

  • Common system binaries are ignored during dependency analysis.

    6.28.0release notes

  • The glob cache now records all traversed directories.

    6.28.0release notes

  • Types referenced through JSDoc imports are now tracked during analysis.

    6.28.0release notes

  • Multiple preprocessors can now run sequentially.

    6.28.0release notes

  • bun script references now expand forwarded arguments.

    6.27.0release notes

  • Knip recognizes an expanded set of global binaries.

    6.27.0release notes

  • npm script references now expand forwarded arguments.

    6.27.0release notes

  • Script tokens shaped like paths are now treated as file references.

    6.27.0release notes

  • yarn script references now expand forwarded arguments.

    6.27.0release notes

  • The gh binary is treated as globally available.

    6.26.0release notes

  • Gitignored package entry points are excluded from analysis.

    6.26.0release notes

  • More globally available binaries are ignored during unused-binary analysis.

    6.26.0release notes

  • Plugin entries are read from index.html.

    6.26.0release notes

  • Oclif command files are now registered as entry points.

    6.26.0release notes

  • Plugin entries are read from vite.config options.

    6.26.0release notes

  • GraphQL Code Generator outputs are now treated as entry points.

    6.25.0release notes

  • import.meta.glob analysis now resolves path aliases.

    6.25.0release notes

  • require.context analysis now supports rspack and path aliases.

    6.25.0release notes

  • Shell command scripts now handle variable interpolations during analysis.

    6.25.0release notes

  • The execa visitor now detects scripts invoked with execaNode.

    6.22.0release notes

  • Optional peer dependencies referenced only via a host are now skipped.

    6.22.0release notes

  • npx-run binaries are marked optional unless --no-install is used.

    6.18.0release notes

  • Stale workspaces configuration keys are reported as configuration hints.

    6.18.0release notes

  • Module paths are resolved from the selected tsconfig.

    6.17.0release notes

  • Scoped and tilde SCSS imports are treated as packages during analysis.

    6.17.0release notes

  • Custom path aliases are now scoped independently per workspace.

    6.16.0release notes

  • The dependencies key is now linked with notes, improving how dependency findings are explained.

    6.15.0release notes

  • The --trace functionality has been overhauled and improved.

    6.15.0release notes

  • The Docusaurus integration now ignores paths matching @generated/*.

    6.13.1release notes

  • The Nx integration now expands projectRoot and workspaceRoot token variables.

    6.13.1release notes

  • Comments are stripped from scripts processed by compilers.

    6.13.0release notes

  • Wildcard patterns in Jest projects are now expanded.

    6.13.0release notes

  • Pairs are collected from referenced TypeScript configuration files.

    6.13.0release notes

  • The title of direct configuration hints is now written to stderr.

    6.12.0release notes

  • Cypress reporter configuration is now resolved separately for each testing type.

    6.12.0release notes

  • In knownBinsOnly mode, fallback binaries inferred from plugin names are now optional.

    6.12.0release notes

  • Shell binaries are now included in the global ignore list, reducing false-positive reports for commonly available commands.

    6.12.0release notes

  • Imports in declaration files are treated as type-only.

    6.10.0release notes

  • Types listed in tsconfig compilerOptions.types are treated as type-only.

    6.10.0release notes

  • Error and warning logs now use a consistent prefix.

    6.7.0release notes

  • Knip now inherits outDir and rootDir from referenced tsconfig projects.

    6.5.0release notes

  • SCSS path aliases can now be resolved during analysis.

    6.4.0release notes

  • Knip now supports scoped package names prefixed with a tilde, such as @~private/pkg.

    6.2.0release notes

  • The Metro plugin is enabled when Expo is installed.

    6.1.0release notes

  • Issues are initially suppressed in the MCP server to avoid overwhelming the agent.

    6.0.6release notes

  • JSDoc tags are merged across function overload signatures, affecting how Knip interprets overloaded functions.

    6.0.5release notes

  • Trace output now includes namespace member statuses, making namespace analysis results more visible.

    6.0.4release notes

Tooling 83

  • Adds Flue plugin support for projects using Flue.

    6.41.0release notes

  • A Jasmine plugin was added for analyzing Jasmine projects.

    6.40.0release notes

  • Improves Knip support for Rstest projects.

    6.39.0release notes

  • Adds a plugin for analyzing Turborepo projects.

    6.38.0release notes

  • Unused member tags are now flagged in tagged enums and namespaces.

    6.38.0release notes

  • Export analysis now shows ambiguous, shadowed and converged exports.

    6.36.0release notes

  • Traces now explain ambiguous star exports.

    6.36.0release notes

  • Added babel to the supported projects.

    6.36.0release notes

  • Added khan to the supported projects.

    6.36.0release notes

  • Added oxc to the supported projects.

    6.36.0release notes

  • Added support for the Tailwind webpack plugin as a plugin enabler.

    6.36.0release notes

  • Added the textlint plugin.

    6.36.0release notes

  • Knip adds a mise plugin.

    6.35.0release notes

  • Package manifests can now be resolved under Yarn Plug’n’Play environments.

    6.33.0release notes

  • Adds a pre-commit plugin for detecting usage in pre-commit configurations.

    6.32.0release notes

  • Adds a tsd plugin for detecting usage in tsd projects.

    6.32.0release notes

  • Adds basic support for Marko 6 and 5, allowing Knip to analyze projects using those versions.

    6.31.0release notes

  • Adds a built-in compiler for tsrx.

    6.29.0release notes

  • Angular global stylesheets are now discovered from angular.json.

    6.28.0release notes

  • Projects receive a hint when patterns exclude a compiled extension.

    6.28.0release notes

  • Adds support for discovering markdownlint-cli2 usage.

    6.28.0release notes

  • Adds an OpenClaw plugin for project analysis.

    6.28.0release notes

  • Tailwind CLI input stylesheets are now discovered.

    6.28.0release notes

  • tsdown CLI entry points are now discovered automatically.

    6.28.0release notes

  • Tailwind CSS URL imports are now supported.

    6.27.0release notes

  • Knip adds a Temporal plugin for analyzing Temporal usage.

    6.27.0release notes

  • TypeScript 5.0 narrowing for ssr.external is supported.

    6.27.0release notes

  • The Vitest plugin now handles snapshotSerializers.

    6.27.0release notes

  • Vue 2 template auto-imports are now supported.

    6.27.0release notes

  • Babel plugins are detected in the Storybook configuration.

    6.26.0release notes

  • Adds a plugin that recognizes esbuild conventions.

    6.26.0release notes

  • Adds support for the @intlify/unplugin-vue-i18n plugin.

    6.26.0release notes

  • Adds a plugin that recognizes Quasar conventions.

    6.26.0release notes

  • Adds a plugin that recognizes Tauri conventions.

    6.26.0release notes

  • Adds support for the unplugin-icons plugin.

    6.26.0release notes

  • Adds support for the vite-plugin-pages plugin.

    6.26.0release notes

  • Adds support for the vite-plugin-pwa plugin.

    6.26.0release notes

  • Adds vite-plus support for run.tasks and staged scripts.

    6.26.0release notes

  • Adds support for the @vite-pwa/assets-generator plugin.

    6.26.0release notes

  • Adds plugins supporting the Vue auto-import ecosystem.

    6.26.0release notes

  • Enables Vue SFC compiler support for unplugin-vue and @vitejs/plugin-vue.

    6.26.0release notes

  • TypeDoc customCss files are now resolved by Knip.

    6.25.0release notes

  • TypeDoc customJs files are now resolved by Knip.

    6.25.0release notes

  • Knip adds a Fumadocs plugin for framework-specific analysis.

    6.25.0release notes

  • The Storybook plugin now registers the MDX compiler for analysis.

    6.25.0release notes

  • Knip now detects the Node.js test runner through the script command parser.

    6.25.0release notes

  • Adds Astro import resolution.

    6.24.0release notes

  • Adds Less compiler support.

    6.24.0release notes

  • The Stencil plugin now handles SCSS.

    6.24.0release notes

  • Adds Stylus compiler support.

    6.24.0release notes

  • Adds Svelte import resolution.

    6.24.0release notes

  • Adds Vue import resolution.

    6.24.0release notes

  • Knip adds support for the @astrojs/markdoc integration.

    6.23.0release notes

  • Knip now supports XO v1 and later.

    6.22.0release notes

  • Knip now detects dependencies used by Vite configuration files.

    6.21.0release notes

  • Updates Jest entry patterns for Jest 30.

    6.18.0release notes

  • Adds tar to the globally ignored binaries list.

    6.17.0release notes

  • Published workspaces now flag undeclared imports from sibling packages.

    6.17.0release notes

  • Adds Catalyst plugin support for crediting bare @controller custom elements.

    6.16.0release notes

  • Knip detects and credits registered custom elements, including aliases, scoped registries, and static blocks.

    6.16.0release notes

  • Adds FAST plugin support for detecting @customElement classes and scopes static custom-element detection to FAST.

    6.16.0release notes

  • Adds Lit plugin support for detecting classes decorated with @customElement.

    6.16.0release notes

  • Knip now detects binaries and entry files referenced in node:child_process calls.

    6.16.0release notes

  • Improves Stencil detection by crediting @Component and recognizing test files.

    6.16.0release notes

  • Adds a nano-spawn plugin for analyzing projects that use nano-spawn.

    6.15.0release notes

  • Adds an Orval plugin so Knip can account for Orval-generated usage.

    6.15.0release notes

  • Knip now detects Babel plugins and presets configured in Vite plugin options.

    6.14.2release notes

  • Knip detects dynamic import attributes using an import matcher shared with Astro-MDX.

    6.14.1release notes

  • Knip can scan source files for Knex configuration.

    6.13.0release notes

  • Types are now exposed for the JSON reporter, enabling developers to use its type definitions.

    6.9.0release notes

  • Added support for new pnpm 11 commands and additional pnpm commands.

    6.8.0release notes

  • Added a WXT plugin for Knip.

    6.8.0release notes

  • Adds handling for Vitest agent configuration.

    6.7.0release notes

  • The react-email plugin was updated to support react-email version 6.

    6.6.1release notes

  • A plugin for @sveltejs/package was added, improving Knip support for projects using that package.

    6.6.0release notes

  • Knip now extracts vite.resolve.alias from Astro configuration AST, improving analysis of aliased imports.

    6.6.0release notes

  • Knip adds a plugin for react-email, enabling its usage to be analyzed.

    6.5.0release notes

  • Knip adds a plugin for the Serverless framework, enabling Serverless projects to be analyzed.

    6.5.0release notes

  • Knip reports hints for redundant or unregistered extensions in configuration.

    6.4.0release notes

  • Knip adds support for analyzing Panda CSS projects through a dedicated plugin.

    6.4.0release notes

  • Tailwind CSS compiler support is enabled for @tailwindcss integrations.

    6.4.0release notes

  • React Router routes can now use absolute file paths, allowing Knip to analyze those route references.

    6.3.1release notes

  • Adds a Stencil plugin to Knip.

    6.1.0release notes

Fixes and other changes 230

  • Applies nested .gitignore files when resolving workspace globs.

    6.41.0release notes

  • Keeps the current working directory out of glob patterns and matchers.

    6.41.0release notes

  • Recognizes binaries supplied by optional dependencies that are absent.

    6.41.0release notes

  • Recognizes all React Native configuration file extensions.

    6.41.0release notes

  • The TypeScript integration fixes handling for ArrayExpression.

    6.40.0release notes

  • The Capacitor plugin now matches capacitor.config.js.

    6.40.0release notes

  • The plugin now resolves local and scope-only extends configurations.

    6.40.0release notes

  • Commitlint plugin names now include the commitlint-plugin prefix.

    6.40.0release notes

  • Source path mapping now includes custom compiler extensions.

    6.40.0release notes

  • The Serverless Framework integration now handles explicit extensions in handler paths.

    6.40.0release notes

  • Jest module names without the jest-* prefix are now resolved.

    6.40.0release notes

  • Source path mapping now includes the jsx extension.

    6.40.0release notes

  • The simple-git-hooks plugin now matches .mjs configuration files.

    6.40.0release notes

  • Locally referenced namespace members are preserved during analysis.

    6.40.0release notes

  • The oxlint integration now resolves lint configuration from the loaded Vite config.

    6.40.0release notes

  • Null package exports are resolved to the files they hide.

    6.40.0release notes

  • Disabled plugins in PostCSS object configurations are now ignored.

    6.40.0release notes

  • Self-closing script elements no longer swallow the next script element.

    6.40.0release notes

  • Serverless file variables are now resolved in plugins and functions.

    6.40.0release notes

  • The rsbuild integration now detects configuration from tools.rspack inside rsbuild config.

    6.40.0release notes

  • Vitest paths are now resolved from the top-level root.

    6.40.0release notes

  • The Playwright plugin now resolves webServer commands.

    6.40.0release notes

  • Workspace exports with fallback arrays are now resolved.

    6.40.0release notes

  • Angular preserves other projects' inputs when one project has no architect.

    6.39.0release notes

  • Excluded tags on entry re-exports are now handled correctly.

    6.39.0release notes

  • Entry export tags are read under the names used by re-exports.

    6.39.0release notes

  • Playwright resolves globalSetup from the configuration directory.

    6.39.0release notes

  • Playwright resolves globalTeardown from the configuration directory.

    6.39.0release notes

  • Vite resolves nested HTML entry points in multi-page applications.

    6.39.0release notes

  • Nuxt auto-import compilation skips synthetic self-imports.

    6.39.0release notes

  • Vue auto-import compilation skips synthetic self-imports.

    6.39.0release notes

  • Fixes the plop plugin mapping from config to entry.

    6.38.0release notes

  • Fixes import.meta handling in built-in compilers.

    6.38.0release notes

  • The MDX content mapper now resolves providerImportSource.

    6.38.0release notes

  • Mocha configuration files now resolve the file option correctly.

    6.38.0release notes

  • Fixes tag hints for enum and namespace members.

    6.38.0release notes

  • Binary matching now considers only the actual dependency providers, improving detection accuracy.

    6.37.0release notes

  • The ESLint plugin now resolves --format names correctly.

    6.37.0release notes

  • Executable references are preserved across package manager commands, preventing them from being lost during analysis.

    6.37.0release notes

  • The config loader now enables JSX, allowing JSX syntax in Knip configuration.

    6.37.0release notes

  • Near-operation-file outputs are treated as entries rather than the documents directory, improving Knip's GraphQL Code Generator analysis.

    6.37.0release notes

  • npx no-install flags are respected when they appear before the executable.

    6.37.0release notes

  • Knip now recovers from corrupt cache files.

    6.36.0release notes

  • Dependency removal no longer leaves an incorrect trailing comma.

    6.36.0release notes

  • Es​lintrc configurations now resolve local extends files.

    6.36.0release notes

  • The ESLint plugin now handles the array form of the import/resolver setting.

    6.36.0release notes

  • Fixed the language server's bundled Knip fallback.

    6.36.0release notes

  • Shared info/exclude handling now works correctly in linked Git worktrees.

    6.36.0release notes

  • The ESLint plugin now handles eslintrc parserOptions.parser correctly.

    6.36.0release notes

  • Re-export traces now resolve to their defining bindings.

    6.36.0release notes

  • Fixed loader dependency handling for Next.js Turbopack projects.

    6.36.0release notes

  • Vitest setupFiles are now resolved correctly from nested configs.

    6.36.0release notes

  • Fixed npm alias attribution under Yarn PnP, improving dependency attribution in that environment.

    6.35.1release notes

  • Knip honors explicit entry export analysis.

    6.35.0release notes

  • Knip falls back to searching for the lock file at cwd when it is missing at root.

    6.35.0release notes

  • Knip no longer flags a tag that suppresses member issues.

    6.35.0release notes

  • Knip resolves Nuxt Virtual Component Imports.

    6.35.0release notes

  • Knip recognizes pnpm stage as a built-in.

    6.35.0release notes

  • Knip tracks pnpm workspace override catalogs and reads pnpm.overrides from the root manifest.

    6.35.0release notes

  • Knip ignores raw Vite import globs.

    6.35.0release notes

  • Knip now tracks spreads under string-literal keys.

    6.35.0release notes

  • Knip supports object-form Rstest test environments.

    6.35.0release notes

  • Knip resolves Vite public script entries.

    6.35.0release notes

  • Validates numeric CLI options instead of passing NaN through.

    6.34.0release notes

  • Reports types used only in private parameters correctly.

    6.34.0release notes

  • Resolves Nuxt #shared imports from the shared directory.

    6.34.0release notes

  • Respects JSDoc tags on URL dependencies.

    6.34.0release notes

  • Compiles files with workspace-scoped compilers.

    6.34.0release notes

  • Enum element access is now counted as a whole-object read, improving unused-code analysis.

    6.33.0release notes

  • exec.ts now preserves all environment variables when executing commands.

    6.33.0release notes

  • Named string-key access on namespace-qualified enums is now resolved correctly.

    6.33.0release notes

  • Element access remains precise for enum member names that resemble numbers.

    6.33.0release notes

  • Nuxt layer sources are now resolved from all extends entry shapes, including string extends configs.

    6.33.0release notes

  • Object enum enumeration is now resolved through import aliases.

    6.33.0release notes

  • Knip now resolves oxlint JavaScript plugins declared in the oxlint configuration file.

    6.33.0release notes

  • Unused exports behind Vitest module promise mocks are now reported correctly.

    6.33.0release notes

  • Webpack entry descriptors are now resolved using the import field.

    6.33.0release notes

  • The bun 1.4 dedupe subcommand is now recognized.

    6.32.3release notes

  • Nested gitignore negation inside ignored dot-directories is handled correctly.

    6.32.3release notes

  • All supported lefthook configuration file names and extensions are now matched.

    6.32.3release notes

  • Missing pnpm subcommands are now resolved correctly.

    6.32.3release notes

  • Vitest include patterns are resolved relative to test.dir.

    6.32.3release notes

  • Configuration files using .cts and .mts extensions are now matched.

    6.32.3release notes

  • Vitest mocks are now resolved from the test root.

    6.32.3release notes

  • Local Vitest reporters are now resolved from the test root.

    6.32.3release notes

  • All supported WebdriverIO configuration file extensions are now matched.

    6.32.3release notes

  • Supported lint-staged configurations are fixed so Knip recognizes them correctly.

    6.32.2release notes

  • Absolute-path script tokens are no longer treated as entries.

    6.32.0release notes

  • babel-jest configFile is resolved from Jest transform options.

    6.32.0release notes

  • The Node test runner is detected when invoked through c8.

    6.32.0release notes

  • Playwright config files with .cjs, .cts, and .mts extensions are now matched.

    6.32.0release notes

  • Rollup's --config argument is resolved as plugin configuration.

    6.32.0release notes

  • Script words retain quoting while passing through resolvers.

    6.32.0release notes

  • The VS Code language server process is restarted to resolve an issue.

    6.32.0release notes

  • Wildcard subpath-import aliases are now attributed as dependency usage.

    6.32.0release notes

  • Remark now supports all types of dependency names.

    6.30.0release notes

  • Dynamic imports in Svelte component templates are now detected.

    6.30.0release notes

  • Fixes the -u shortcut for the --duration option.

    6.29.0release notes

  • Entry-exported members remain public, preventing them from being reported as unused.

    6.28.0release notes

  • Composite GitHub Actions now resolve $GITHUB_ACTION_PATH correctly.

    6.28.0release notes

  • Nested files under a gitignore dir/* pattern are now ignored correctly.

    6.28.0release notes

  • Unrelated gitignore negations no longer un-ignore sibling paths.

    6.28.0release notes

  • The glob cache is invalidated when .gitignore changes.

    6.28.0release notes

  • Built-in node: specifiers are no longer reported as unlisted dependencies.

    6.28.0release notes

  • Nuxt and Nitro plugin resolution is improved.

    6.28.0release notes

  • Nuxt module paths are resolved correctly.

    6.28.0release notes

  • The [-]-c[heck] option is no longer incorrectly treated as a Prettier config flag.

    6.28.0release notes

  • Imports of aliased packages are attributed to the declared dependency.

    6.27.0release notes

  • Ambient module declarations in script files are no longer counted as imports.

    6.27.0release notes

  • Local binaries invoked through bun run are now resolved.

    6.27.0release notes

  • Unresolved imports of gitignored generated files are skipped.

    6.27.0release notes

  • Package names are resolved correctly from aliased node_modules paths.

    6.27.0release notes

  • pnpm script references now expand forwarded arguments.

    6.27.0release notes

  • Imports inside block comments are ignored during stylesheet analysis.

    6.27.0release notes

  • Unresolvable imports of transitive peer dependencies are flagged as unlisted.

    6.27.0release notes

  • Dependencies listed in tsdown neverBundle are marked as referenced.

    6.27.0release notes

  • Dependencies in vite ssr.external are marked as referenced.

    6.27.0release notes

  • Unbuilt workspace package exports can now be resolved.

    6.27.0release notes

  • Ambient declaration files are no longer reported as unused.

    6.26.0release notes

  • Auto-imported components are resolved in the Vue SFC compiler.

    6.26.0release notes

  • Hash imports resolve to source when the node condition points to an unbuilt target.

    6.26.0release notes

  • Nitro route types are no longer misread as Vue component auto-imports.

    6.26.0release notes

  • Optional peers in pnpm and Yarn packageExtensions are respected.

    6.26.0release notes

  • Vitest benchmark files are resolved as entry points.

    6.26.0release notes

  • Bun test entries are only enabled when an actual bun test invocation is detected.

    6.25.0release notes

  • Jest transform analysis now resolves inline Babel presets and plugins.

    6.25.0release notes

  • Types used in module augmentations are now found through path aliases.

    6.25.0release notes

  • Package names are now derived correctly from package.json in Yarn pnpm linker stores.

    6.25.0release notes

  • Serverless esbuild inject entries are now resolved.

    6.25.0release notes

  • Next.js src/ entry patterns are resolved like Next.js, improving file detection.

    6.25.0release notes

  • Inherited tsconfig paths are resolved relative to the extended config directory.

    6.25.0release notes

  • Built-in compiler dependencies are no longer reported as unused.

    6.24.0release notes

  • import() used in JSDoc examples is ignored during analysis.

    6.24.0release notes

  • Reporters now always print the issue-type title when a group contains a single issue.

    6.24.0release notes

  • Types used only in module augmentations are no longer reported as unused.

    6.24.0release notes

  • Scripts in the working directory are no longer reported as unlisted binaries.

    6.24.0release notes

  • Dependencies in dedupe are no longer reported as unlisted.

    6.23.0release notes

  • Dependencies in optimizeDeps are no longer reported as unlisted.

    6.23.0release notes

  • Vite and Vitest plugins are enabled when vite-plus is found.

    6.23.0release notes

  • Detects Next.js entry files located in subdirectories.

    6.21.0release notes

  • Prevents a crash when the package root export is null.

    6.21.0release notes

  • Resolves subpath imports that use a colon prefix.

    6.21.0release notes

  • Fixes cycles in cached plugin configuration.

    6.20.0release notes

  • tsconfig paths are resolved for non-TS importers independently of oxc ownership.

    6.18.0release notes

  • Fixes false positives reported for Vitest mocks.

    6.18.0release notes

  • Configuration hints remain enabled during workspace-scoped runs.

    6.17.2release notes

  • Fixed the Jest plugin behavior for projects using Jest with Knip.

    6.17.2release notes

  • Knip now detects react-email packages when their version ranges are non-numeric.

    6.17.2release notes

  • Knip now detects the coverage provider when Vitest is invoked with the bare --coverage flag.

    6.17.2release notes

  • Workspace discovery now includes workspaces appearing after a negated pattern.

    6.17.2release notes

  • Fixes repeated use of the --fix-type argument.

    6.17.0release notes

  • Improves iOS platform detection when using Swift Package Manager with Capacitor.

    6.17.0release notes

  • Knip now resolves SvelteKit ./$types correctly in monorepos.

    6.16.1release notes

  • Fixes crashes and parsing problems caused by backtick string literals in plugin configuration.

    6.16.0release notes

  • Knip now reports an exported type used only in an inferred-return function body.

    6.15.0release notes

  • Vite analysis now detects inline module script entry points in index.html.

    6.15.0release notes

  • Failed plugin configuration loads are no longer cached, allowing later retries.

    6.15.0release notes

  • Extensionless .sass imports are now resolved in the SCSS compiler.

    6.15.0release notes

  • Plugin configuration loading now resolves tsconfig paths correctly.

    6.15.0release notes

  • Binary dependencies used by Bun are now tracked correctly.

    6.14.2release notes

  • Type dependencies from extended tsconfig files are now attributed correctly.

    6.14.2release notes

  • The Astro plugin now supports both possible middleware entry points, improving dependency analysis for Astro projects.

    6.14.2release notes

  • GraphQL Codegen script configuration dependencies are now attributed correctly.

    6.14.2release notes

  • Dependencies used by the Serverless TypeScript plugin are now handled correctly.

    6.14.2release notes

  • Knip detects dynamic imports in the Svelte compiler.

    6.14.1release notes

  • Undeclared imports between sibling workspaces are no longer flagged as unlisted.

    6.14.0release notes

  • Imports satisfied through transitive peer dependencies are now resolved.

    6.14.0release notes

  • Knip correctly handles re-exported namespaces using the export * as syntax.

    6.13.1release notes

  • Package exports are handled correctly when outDir is set to the project root.

    6.13.0release notes

  • The star re-exported namespace case is handled correctly.

    6.13.0release notes

  • Symbol reporter file paths are corrected when using --directory.

    6.12.2release notes

  • The serverless-framework integration skips functions that do not define a handler.

    6.12.2release notes

  • Webpack now references TS loaders for .ts and .cts configuration files.

    6.12.2release notes

  • Knip now correctly handles inferred declaration export references.

    6.12.1release notes

  • Knip now correctly handles type-only imports in monorepos.

    6.12.1release notes

  • Knip now correctly detects Vercel configuration.

    6.12.1release notes

  • Knip now detects babel.plugins in @vitejs/plugin-react when defineConfig uses function form.

    6.12.0release notes

  • Knip now detects babel.presets in @vitejs/plugin-react when defineConfig uses function form.

    6.12.0release notes

  • A declaration export regression was fixed, restoring expected declaration export behavior.

    6.12.0release notes

  • The --no-exit-code condition now works correctly when configuration hints are treated as errors.

    6.12.0release notes

  • SFC script attribute values may now contain > characters without breaking detection.

    6.12.0release notes

  • PostCSS detection now correctly handles @tailwindcss/postcss.

    6.12.0release notes

  • Knip flags stale @internal tags when running in production mode.

    6.11.0release notes

  • Imports matching engines.X are no longer reported as unlisted.

    6.10.0release notes

  • Hoisted dependencies are resolved from the monorepo root when using single-package mode.

    6.10.0release notes

  • Packages are no longer incorrectly reported as unlisted when only their corresponding @types package is listed.

    6.10.0release notes

  • Fixed handling of spread exports so other exports are used correctly.

    6.8.0release notes

  • A config file load error no longer causes the process to exit.

    6.7.0release notes

  • Workspaces with invalid JSON manifests are skipped instead of preventing processing.

    6.7.0release notes

  • Fixes markdown reporter column width for more consistent generated output.

    6.7.0release notes

  • Adds handling for minimal reporter configurations.

    6.7.0release notes

  • Package manifests with a leading UTF-8 BOM are parsed successfully.

    6.7.0release notes

  • Out-of-bound writes to stdout and stderr are preserved.

    6.7.0release notes

  • Type-chain alignment was tightened and gated through ignoreExportsUsedInFile.

    6.6.3release notes

  • Output is flushed when the process exits, helping ensure complete results are emitted.

    6.6.3release notes

  • Props are treated as used when Astro.props is referenced.

    6.6.2release notes

  • Knip no longer tracks typeof value references at the top of exported type aliases.

    6.6.2release notes

  • Entry points are now resolved from the rslib configuration.

    6.6.1release notes

  • The package-entry hint for a bare specifier in main was fixed.

    6.6.0release notes

  • The Prettier plugin now accepts arguments needed to resolve the --config CLI flag.

    6.5.0release notes

  • Root directory discovery now tolerates JSONC and array-based extends configurations.

    6.5.0release notes

  • Bun plugin now handles file path arguments.

    6.4.1release notes

  • Jest environment pragmas resolve correctly and apply only within their intended scope.

    6.4.0release notes

  • Namespace members enumerated through Object APIs are treated as used, avoiding incorrect enum-member checks in nsTypes mode.

    6.4.0release notes

  • Namespace members are marked used when enumerated through Object APIs.

    6.4.0release notes

  • Worker and child_process calls now resolve paths constructed with path.join(__dirname, ...).

    6.4.0release notes

  • Rspack plugin detection now recognizes plugins provided through swc-loader.

    6.4.0release notes

  • Namespace imports used as object property values are now tracked, improving Knip's unused-code analysis.

    6.3.1release notes

  • Peer dependency resolution is fixed, improving dependency installation and compatibility for Knip users.

    6.3.1release notes

  • Improves Knip's handling of module.register usage during analysis.

    6.3.0release notes

  • Vitest coverage dependencies are marked optional when addon-vitest is used, improving dependency analysis for Storybook projects.

    6.2.0release notes

  • The regex now allows extra attributes in reference types directives.

    6.1.1release notes

  • Absolute Vitest test roots are now handled correctly.

    6.1.1release notes

  • Fixes an edge case involving the filePath config hint.

    6.1.0release notes

  • The oxlint plugin supports jsPlugins and resolves their dependencies.

    6.1.0release notes

  • Astro sharp detection now matches the default behavior.

    6.1.0release notes

  • Fixes false-positive unused dependency reports when Knip runs from a workspace directory.

    6.0.6release notes

  • Nx run-commands targets without a cwd now fall back to the workspace cwd.

    6.0.5release notes

  • Namespace member references are resolved in a post-walk batch pass, improving reference resolution.

    6.0.4release notes

  • Adds shadow detection for function parameters, arrow parameters, and catch bindings.

    6.0.4release notes

  • Trailing slashes are stripped from tsconfig outDir and rootDir values, preventing path resolution issues.

    6.0.4release notes

  • Trailing slashes are stripped from tsconfig outDir and rootDir values, preventing path resolution issues.

    6.0.4release notes

  • Empty strings are filtered from Qwik routesDir values.

    6.0.3release notes

  • Symlinks from tsconfig files are handled as real paths.

    6.0.3release notes

  • Knip now passes rootDirs through to work around a resolver feature gap.

    6.0.2release notes

  • Shadow detection is now scope-aware, fixing false negatives caused by name-based matching.

    6.0.2release notes

  • Type reference collection no longer causes false negatives from overly broad analysis.

    6.0.2release notes

  • Local refs visitor now handles computed access, improving analysis of local references.

    6.0.1release notes

  • JSON reporter issues are now consistently represented as arrays for every issue type.

    6.0.0release notes

  • Reporter functions now use issues.files consistently with other issue shapes.

    6.0.0release notes

knip 5254 changes

Breaking changes 7

  • Knip no longer reports unused files outside the project set.

    5.87.0release notes

  • Known binaries are accepted only after a double-dash separator.

    5.84.0release notes

  • The Tailwind plugin no longer recognizes the @source matcher.

    5.84.0release notes

  • ignoreExportsUsedInFile is no longer included in the default configuration.

    5.80.1release notes

  • Options after help or version are now read, affecting how command-line arguments are interpreted.

    5.77.0release notes

  • globalSetup is now resolved from the config file directory.

    5.72.0release notes

  • setupFiles is now resolved from the config file directory.

    5.72.0release notes

New APIs and options 40

  • Oxfmt configuration files written in TypeScript are now supported.

    5.88.0release notes

  • The oxlint plugin recognizes oxlint.config.ts files.

    5.87.0release notes

  • The Nuxt plugin now supports extends configuration.

    5.86.0release notes

  • Treats package.json#imports entries as project entry points.

    5.86.0release notes

  • The language server reads initializationOptions.config or falls back to a default configuration object.

    5.84.0release notes

  • A flag now controls filtering of transitive dependencies.

    5.84.0release notes

  • A pm2 plugin is now available.

    5.84.0release notes

  • serverInfo now includes the LS version.

    5.83.0release notes

  • A new SvelteKit plugin was created, split from the existing Svelte plugin.

    5.82.0release notes

  • isDirectory now accepts cwdOrPath as an input.

    5.80.2release notes

  • isFile now accepts cwdOrPath as an input.

    5.80.2release notes

  • Missing Bun commands and aliases were added.

    5.79.0release notes

  • Git worktrees are now supported.

    5.78.0release notes

  • Webpack plugin configuration now supports subpath entries.

    5.78.0release notes

  • WorkspaceConfig is now exposed for developers to use in integrations or tooling.

    5.77.1release notes

  • Adds dependency usage on hover to the language server and extension.

    5.76.0release notes

  • Adds the getDependencyUsage operation to the explorer.

    5.76.0release notes

  • Adds and uses imports.externalRefs for dependency analysis.

    5.76.0release notes

  • Adds a dependency tracing flag and trace reporter.

    5.76.0release notes

  • Adds the configFilePath setting for specifying the configuration file path.

    5.75.2release notes

  • Adds an MCP server for integrating Knip with MCP-compatible tools and agents.

    5.75.0release notes

  • Adds a flag allowing project files to use TypeScript compiler file resolution.

    5.75.0release notes

  • Adds a dedicated next-mdx plugin extracted from the next plugin.

    5.73.0release notes

  • Adds the extensionAlias configuration option.

    5.72.0release notes

  • The refs tracker now supports and improves importAliases handling.

    5.72.0release notes

  • Adds support for compiling SASS and SCSS files.

    5.72.0release notes

  • Adds tsconfig: auto support and uses the resolveFileSync method.

    5.72.0release notes

  • The Vite plugin now supports CLI arguments for the config file.

    5.72.0release notes

  • The Storybook plugin now supports viteConfigPath.

    5.72.0release notes

  • A graph explorer is introduced for inspecting the project graph.

    5.71.0release notes

  • Adds a Taskfile plugin for analyzing Taskfile-related project usage.

    5.70.0release notes

  • The ESLint plugin now supports the --format option.

    5.69.0release notes

  • URL constructors using import.meta.url are now supported.

    5.69.0release notes

  • Adds ignoreMembers to the workspace schema, allowing developers to configure ignored workspace members.

    5.68.0release notes

  • Adds an astro-db plugin with configuration support.

    5.67.0release notes

  • Adds a command-line argument to limit how many issues are shown.

    5.67.0release notes

  • Experimental support was added for Next.js conventions.

    5.66.4release notes

  • Knip recognizes proxy.ts as an entry file for Next.js projects.

    5.66.3release notes

  • Additional Vitest built-in reporters are supported in configuration.

    5.66.3release notes

  • Issue types can be ignored per file pattern, with ignoreIssues added to the JSON Schema.

    5.66.0release notes

Performance 6

  • Improved Docusaurus analysis speed.

    5.88.0release notes

  • The --performance output is improved and timerify calls are cleaned up.

    5.87.0release notes

  • Improves performance when running Bun commands.

    5.80.2release notes

  • OG image generation now uses a cache to speed up build time.

    5.79.0release notes

  • The workspaces finder is optimized, improving Knip's workspace discovery performance.

    5.73.1release notes

  • JSON loading was sped up, reducing time spent processing configuration or project data.

    5.66.0release notes

Behavior and default changes 46

  • Nuxt extends entries are now treated as dependencies during analysis.

    5.88.0release notes

  • Knip identifies binaries invoked through find -exec.

    5.87.0release notes

  • Knip skips optional peer dependency issues for installed dependencies.

    5.87.0release notes

  • Nx run-commands are resolved from their cwd.

    5.87.0release notes

  • Compiled files are no longer modified by automatic fixes.

    5.86.0release notes

  • Adds .git to the global ignore patterns.

    5.86.0release notes

  • Includes additional entry patterns when pageExtensions is configured.

    5.86.0release notes

  • The TypeScript plugin now adds aliases from any tsconfig file.

    5.86.0release notes

  • Some Next plugin glob patterns are merged, changing how matching paths are grouped.

    5.85.0release notes

  • Positional arguments passed to bun test are treated as entry points.

    5.84.0release notes

  • date is now treated as an ignored global binary.

    5.84.0release notes

  • The React Native plugin ignores RNC CLI and Metro internals.

    5.84.0release notes

  • The language server uses --stdio when no transport is provided.

    5.84.0release notes

  • Long file paths are truncated from the left side.

    5.83.0release notes

  • Path-like specifiers are no longer highlighted in output.

    5.83.0release notes

  • The init script warns when it detects a faux monorepo.

    5.81.0release notes

  • The workspace filter behavior was expanded.

    5.81.0release notes

  • The CLI now shows a link to documentation when module load errors occur.

    5.80.1release notes

  • The OG image cache directory was moved, potentially allowing Cloudflare build cache reuse.

    5.79.0release notes

  • Deferred entries now accept node_modules/ specifiers.

    5.78.0release notes

  • Negated ignore patterns can now filter issues.

    5.78.0release notes

  • Moonrepo command configuration now accepts arrays.

    5.78.0release notes

  • Source mapping is loosened to improve issue detection.

    5.78.0release notes

  • Error logging was improved, making failures easier to diagnose.

    5.77.4release notes

  • The configuration defaults to the packageManager specified in package.json when present.

    5.76.3release notes

  • Tool results now include enabled plugins and avoid unnecessary entries.

    5.76.2release notes

  • Adds op to the endOfCommandBinaries configuration setting.

    5.75.2release notes

  • The sourceMap setting was reverted, so developers should no longer rely on this configuration change.

    5.75.1release notes

  • Sessions without a configuration file now enable TypeScript compiler file handling.

    5.75.0release notes

  • Class member tracking was improved, which can affect Knip's unused-code analysis.

    5.74.0release notes

  • resolveSync now supports JSON and JSONC files during module resolution.

    5.74.0release notes

  • The resolver now supports DTS extensions, improving resolution of TypeScript declaration files.

    5.73.4release notes

  • clear is now treated as an ignored global binary.

    5.73.0release notes

  • Dependencies used by IDE extensions are now ignored.

    5.72.0release notes

  • Non-package specifiers are made relative in the SCSS compiler.

    5.72.0release notes

  • The performance-fn CLI option now accepts multiple values.

    5.72.0release notes

  • MDX plugins defined in the Next.js configuration are now discovered.

    5.71.0release notes

  • sed is now globally ignored as a binary during analysis.

    5.71.0release notes

  • Function calls executed in subshells are filtered out during analysis.

    5.71.0release notes

  • The catalog issue type is now auto-fixable.

    5.69.0release notes

  • Trace output now prints relative paths.

    5.69.0release notes

  • Binary validation now checks only the first word.

    5.69.0release notes

  • Entry paths from package.json now receive a label.

    5.66.2release notes

  • Entries in rsbuild config are treated as production entries.

    5.66.2release notes

  • defineNuxtConfig is now writable and deletable, allowing developers to modify or remove its properties.

    5.66.1release notes

  • Watch mode now clears the screen during operation.

    5.66.1release notes

Tooling 48

  • Added a patch for Argos integration support.

    5.88.0release notes

  • Knip now detects duplicated dependencies declared in package.json.

    5.88.0release notes

  • Added a Raycast plugin, enabling Knip support for Raycast projects.

    5.88.0release notes

  • Added a Sanity plugin, enabling Knip support for Sanity projects.

    5.88.0release notes

  • The --memory output is improved and timerify calls are cleaned up.

    5.87.0release notes

  • Knip adds an oxfmt plugin for analyzing oxfmt usage.

    5.87.0release notes

  • Knip recognizes pkg as a built-in pnpm command.

    5.87.0release notes

  • Adds support for Nuxt auto-imports.

    5.86.0release notes

  • Adds support for analyzing openapi-ts projects with Knip.

    5.86.0release notes

  • Adds support for analyzing Qwik projects with Knip.

    5.86.0release notes

  • Knip adds a plugin for Payload CMS projects.

    5.85.0release notes

  • The Bun test plugin now supports preloaded files.

    5.84.0release notes

  • The Convex plugin now supports nested _generated directories.

    5.84.0release notes

  • Knip adds configuration hints for unused ignore entries when they are relevant.

    5.84.0release notes

  • Knip adds configuration hints for unused ignoreFiles entries when they are relevant.

    5.84.0release notes

  • A language-server binary is now available.

    5.84.0release notes

  • Knip recognizes module.register() usage from the Node.js loader API.

    5.84.0release notes

  • The plugins now support the TypeScript native preview compiler.

    5.84.0release notes

  • The Vite integration detects a module entry from index.html.

    5.83.1release notes

  • Knip adds support for monorepos when installing dependencies.

    5.83.1release notes

  • Vitest argument handling is improved and extended.

    5.83.1release notes

  • Knip adds a plugin for expressive-code projects.

    5.83.0release notes

  • Knip now detects and installs packages that are not installed.

    5.82.0release notes

  • A Nitro plugin was added for project analysis.

    5.81.0release notes

  • SvelteKit entry files are now included in analysis.

    5.81.0release notes

  • Adds the astro-og-canvas plugin to Knip.

    5.80.2release notes

  • NX plugin support was extended.

    5.80.1release notes

  • TanStack Router configuration support was improved.

    5.80.1release notes

  • Adds a plugin for Parcel, enabling Knip integration with Parcel projects.

    5.80.0release notes

  • Knip added a Knex plugin for analyzing Knex usage.

    5.79.0release notes

  • Knip added a TanStack Router plugin.

    5.79.0release notes

  • Astro compiler support is improved.

    5.78.0release notes

  • Configuration patterns are moved to entries.

    5.78.0release notes

  • Configuration hints for redundant entry patterns are improved, helping developers identify unnecessary patterns.

    5.77.0release notes

  • Adds a VitePress plugin integration so Knip can support VitePress projects.

    5.77.0release notes

  • Adds a language server for editor-based interaction with Knip.

    5.75.0release notes

  • Adds a VS Code extension for using Knip from the editor.

    5.75.0release notes

  • An SWC plugin was added, enabling Knip to integrate with SWC-based projects.

    5.74.0release notes

  • Adds a next-intl plugin so Knip can recognize its usage.

    5.73.0release notes

  • Adds the SVGR plugin.

    5.72.0release notes

  • Adds support for analyzing the promise returned by an awaited import call.

    5.70.0release notes

  • Adds a Prisma plugin entry and Prisma schema compiler for analyzing Prisma projects.

    5.70.0release notes

  • The Prisma plugin was extended with additional support.

    5.69.0release notes

  • Adds support for CSpell TypeScript configurations, allowing Knip to work with those configuration files.

    5.68.0release notes

  • Adds an mdxlint plugin for Knip integration with mdxlint.

    5.68.0release notes

  • The create package now includes a knip.json configuration file.

    5.67.0release notes

  • Adds support for the Tailwind CSS compiler.

    5.67.0release notes

  • A Danger plugin was added for Knip.

    5.66.0release notes

Fixes and other changes 107

  • Fixed a regression affecting module and namespace resolution.

    5.88.1release notes

  • Fixed Docusaurus scripts and stylesheets handling.

    5.88.0release notes

  • Knip identifies @babel/runtime as needed when @babel/plugin-transform-runtime is used.

    5.87.0release notes

  • Dependency resolution for openapi-ts is corrected.

    5.87.0release notes

  • The changesets plugin detects local $schema references.

    5.87.0release notes

  • Prevents a false positive for unused sharp when using Astro sharpImageService().

    5.86.0release notes

  • The Bun plugin now handles directory arguments passed to bun test.

    5.86.0release notes

  • The SWC plugin now recognizes @swc/helpers when externalHelpers is enabled.

    5.86.0release notes

  • Fixed the exit code produced when using --fix.

    5.86.0release notesrelease notes

  • Adds the built-in null reporter to Playwright plugin handling.

    5.86.0release notes

  • Import specifiers using .ts extensions are now fixed and linted.

    5.86.0release notes

  • Fixes tsconfig presets being treated as unlisted in strict mode.

    5.86.0release notes

  • The Vite plugin now respects root when discovering index.html entries.

    5.86.0release notes

  • Normalizes Windows backslash paths in watch events so --watch works correctly on Windows.

    5.86.0release notes

  • The Wrangler plugin is now enabled when configured through jsonc.

    5.86.0release notes

  • Detects Yarn plugins listed only by their filesystem path.

    5.86.0release notes

  • Knip now reports the correct coverage provider.

    5.85.0release notes

  • Knip is now compatible with the erasableSyntaxOnly TypeScript setting.

    5.85.0release notes

  • Memory exhaustion during gitignore traversal is fixed for large monorepos.

    5.85.0release notes

  • The Next plugin searches everywhere for manifest and robots files.

    5.85.0release notes

  • Regex matching is fixed for path-aware require.context patterns.

    5.85.0release notes

  • Compatibility issues with tsdown entry configuration are fixed.

    5.85.0release notes

  • False positives are fixed for arrow-wrapped dynamic imports assigned to variables.

    5.84.1release notes

  • module.register is ignored when its second argument is not import.meta.url.

    5.84.1release notes

  • Argument handling for pnpm is improved.

    5.84.1release notes

  • Knip adds handling for double-dash command-line arguments.

    5.83.1release notes

  • A type issue involving exported values is fixed.

    5.83.1release notes

  • Exports, including type-only uses, are no longer flagged when protected or consumed.

    5.83.1release notes

  • Vitest setupFiles resolution is fixed so configured setup files are handled correctly.

    5.83.1release notes

  • Unused file output in table format is corrected.

    5.83.1release notes

  • The compact reporter filters out empty issue objects.

    5.83.0release notes

  • Excluded issue types are no longer added to results.

    5.83.0release notes

  • Empty manifest entries are skipped.

    5.83.0release notes

  • Empty string entries in package.json exports are now skipped.

    5.83.0release notes

  • Configuration load errors now include a hint and example environment variable fixes.

    5.82.0release notes

  • All members of an enum are considered used when referenced through keyof typeof.

    5.81.0release notes

  • Manually enabled compilers are handled correctly.

    5.81.0release notes

  • Optional peer dependencies are excluded from the production dependency check in strict mode.

    5.81.0release notes

  • Knip no longer crashes when a Prisma schema path is not specified.

    5.81.0release notes

  • React Router appDir handling was improved.

    5.80.1release notes

  • The glob escaper was fixed.

    5.80.1release notes

  • The compiler now resolves _partial.scss files correctly.

    5.80.1release notes

  • Makes stderr redirection platform-agnostic so command behavior works consistently across platforms.

    5.80.0release notes

  • Knip only tries to use tsconfig files when tsconfig.json exists.

    5.80.0release notes

  • Gitignore ancestor detection was fixed for Git worktrees.

    5.79.0release notes

  • Recursion handling for namespaced self-re-exports was fixed.

    5.79.0release notes

  • Package manager detection was fixed for Yarn Berry projects.

    5.79.0release notes

  • TypeScript issues with function-based configuration are fixed.

    5.78.0release notes

  • Exported types used in exported interfaces are now considered used.

    5.78.0release notes

  • Fixes are now applied after preprocessors run.

    5.78.0release notes

  • GraphQL Code Generator plugin package mapping is improved.

    5.78.0release notes

  • The bunx handler was improved, resolving issue #1410.

    5.76.3release notes

  • Handling for bun and node test runners was improved, resolving issue #1411.

    5.76.3release notes

  • Bun script file resolution was improved, helping Knip analyze Bun scripts more accurately.

    5.76.2release notes

  • Script handling was improved, affecting how Knip processes project scripts.

    5.76.2release notes

  • Knip now walks through entry files, resolving issue #1397.

    5.76.1release notes

  • Fixed handling of glob-like entries and links in workspaces shown in the imports tree view.

    5.76.1release notes

  • Deduplicates dependency trace output.

    5.76.0release notes

  • Reduces excessive output and improves handling for files outside the project scope.

    5.76.0release notes

  • Fixes an unexpected error when pnpm catalogs are empty.

    5.76.0release notes

  • Restores support for the workspace:* protocol.

    5.76.0release notes

  • Improves the displayed import location when hovering an export.

    5.75.0release notes

  • Fixes path resolution in the exports tree view.

    5.75.0release notes

  • Fixes Knip support for Windows environments.

    5.75.0release notes

  • Sass builtin dependencies are now ignored in Sass and SCSS files, reducing false positives in dependency analysis.

    5.74.0release notes

  • The Bun resolver now detects publish and other builtin commands as builtins instead of unlisted binaries.

    5.73.4release notes

  • Namespace imports used as default values in destructuring are now detected correctly.

    5.73.4release notes

  • Issue types in the JSON schema were synchronized, keeping schema validation aligned with supported issue types.

    5.73.2release notes

  • Knip improves handling of bridged require calls in TypeScript modules.

    5.73.1release notes

  • Astro srcDir config detection no longer creates wrong entry patterns.

    5.73.1release notes

  • Fixes a regression affecting require calls in TypeScript files.

    5.73.0release notes

  • Resolution now bails out early when a specifier starts with a colon.

    5.73.0release notes

  • Tracing keeps exports and members through pseudo re-exports and conditions.

    5.72.0release notes

  • Handling of bindings from dynamic imports is improved.

    5.71.0release notes

  • Namespace references in conditions are now considered during analysis.

    5.71.0release notes

  • Stops the Astro plugin from adding project patterns.

    5.70.2release notes

  • Runs glob sets containing negations separately.

    5.70.2release notes

  • Includes all groups when negating entry patterns in production mode.

    5.70.2release notes

  • Prevents negated entry patterns from leaking into project patterns.

    5.70.2release notes

  • Includes side-effect imports in module analysis.

    5.70.2release notes

  • Fixes handling of TYPE_ONLY instances during analysis.

    5.70.2release notes

  • Restores and adds workarounds for TypeScript compatibility.

    5.70.2release notes

  • Knip now correctly recognizes the Node environment in Vitest-related analysis.

    5.70.1release notes

  • Improves pragma handling and setup during analysis.

    5.70.0release notes

  • Improves handling of side effects and opaque import calls during analysis.

    5.70.0release notes

  • Some export and import positions are improved, making reported issue locations more accurate.

    5.69.1release notes

  • Import identifier and specifier positions are corrected, improving the locations reported for related issues.

    5.69.1release notes

  • Namespace import positions are corrected, making reported issue locations more accurate.

    5.69.1release notes

  • Next.js page extensions are now applied to the app directory, improving file detection for projects using custom page extensions.

    5.69.1release notes

  • create-config now correctly detects packages in pnpm-workspace.yaml.

    5.69.0release notes

  • Issue type shorthands were fixed.

    5.69.0release notes

  • KnipConfig can now be provided as an async function.

    5.69.0release notes

  • Wildcard-ignored workspaces can now be un-ignored.

    5.69.0release notes

  • Zod errors were improved, providing clearer diagnostics when validation fails.

    5.69.0release notesrelease notes

  • Re-supports astro:env/* imports so Knip can handle projects using these Astro environment imports.

    5.68.0release notes

  • Fixes how plugin specifiers are handled in the remark plugin.

    5.68.0release notes

  • The tailwind compiler now imports default exports correctly, improving handling of Tailwind code analyzed by Knip.

    5.67.1release notes

  • Adds support for Node.js 18.

    5.67.0release notes

  • --fix is now enabled when --fix-types or --allow-remove-files is set.

    5.66.4release notes

  • Fixes an issue where fixing an unused exported type removed one character too many.

    5.66.4release notes

  • Unwanted duplicate reports are no longer produced when reporting is disabled.

    5.66.3release notes

  • Rules are turned off when their corresponding issue type is disabled.

    5.66.3release notes

  • Negated patterns from package.json#exports are now handled correctly.

    5.66.2release notes

  • The progress flag behavior was fixed.

    5.66.1release notes

  • Watch mode now replays issues that were previously unretained.

    5.66.1release notes

  • The Eleventy API was updated to add addBundle() support.

    5.66.0release notes

  • Errors now explain JSON5 support when JSON input causes a parsing problem.

    5.66.0release notes