Plugin: import-next
Changelog
Release history and version updates for eslint-plugin-import-next
Generated from the release history
Built from this package's CHANGELOG.md at deploy time, so it matches the
version these docs describe. The full cross-package history lives on the
changelog.
2.8.7
- Fix
no-internal-modulesrewrote relative deep imports to the importing file's own directory - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.19.6
2.8.6
- Fixthe extensions fixer no longer renames the module it is rewriting
- Fixno-internal-modules suggests a path that is actually on the import's path
2.8.5
- Fix
no-nodejs-modules— resolve builtins viabuiltinModules, and recognise subpaths.
2.8.4
- Fixtwo documented-contract violations found by the burgee FP/FN sweep
- Fixthree false positives found by sweeping the plugins over a real corpus
2.8.3
- Fix
no-barrel-filewas blind to a barrel spelled as imports plus an export clause - Fix
no-extraneous-dependenciespublished three config options it did not honour - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.19.5
2.8.2
- Fix
extensionsnow checks the specifier of a dynamicimport(). The rule visitedImportDeclaration,ExportNamedDeclarationandExportAllDeclarationbut notImportExpression, so the identical specifier string was reported on a static import and silent on anawait import(...)in the same file — leaving the file less consistent after--fixthan before it, the exact defect the export-from forms were added to remove. A non-literal specifier (template or variable) is still left alone. Surfaces 6 previously-missed findings in the burgee corpus. - Fix
consistent-type-specifier-styleno longer emits aFix:instruction that dropstypefrom every specifier but the first. Thetypemarker sat outside the{{name}}interpolation while the data bound a comma-joined list, so an import of more than one name rendered asimport { type A, B }— following it demotes every later specifier to a value import, which underverbatimModuleSyntaxis emitted verbatim and throws at runtime. The autofix was already correct; only the emitted guidance disagreed with it.
2.8.1
- Fix
extensionschecksexport … fromandexport * from - Fix
no-unused-modules'sallowImportOnlyexempts only modules that import - Fix
consistent-type-specifier-stylestops rebuilding away parts of the import
2.8.0
- Fix
no-relative-parent-importssees a dynamicimport('../x') - Fix
no-extraneous-dependenciesno longer reports<scheme>:specifiers as missing packages
2.7.8
- Fix
consistent-type-specifier-styleno longer deletes a default import - Fix
enforce-import-order's fixer no longer moves@ts-nocheckbelow an import - Fix
defaultno longer reports default imports ofexport =/ CJS-interop modules - Fix
no-internal-moduleskeeps parent traversal, and no longer crashes on a template-literalrequire
2.7.7
- Fix
order/enforce-import-orderno longer writes imports over a hashbang
2.7.6
- Fix
no-cross-domain-importsandenforce-dependency-directionno longer crash on a non-string dynamic import
2.7.5
- Fix
node:builtins are never dependencies
2.7.4
- FixThe README logo now links to the plugin's own documentation.
2.7.3
- Fix
obj['deprecatedProp']reads the same deprecated export - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.19.2
2.7.2
- Fiximport gates resolve a subscripted member
- Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.19.0
2.7.1
- FixAdd an install-size badge to the README prelude, linking to each package's packagephobia page. npm renders the README from the last publish, so a badge only appears on npmjs.com after a release.
- Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.18.2
2.7.0
- Feature🐛 Fix — a template literal is a string, in 82 rules that disagreed
- Fix
no-mutable-exportsresolves bindings instead of grepping the file text - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.18.0
2.6.0
- Fix
no-cycleno longer reports a cycle whose edge is erased before emit - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.17.3
2.5.1
- Fixpoint
meta.docs.urlat documentation that exists #683 - Dependenciesupdated workspace dependencies:
@interlace/eslint-devkit@1.17.2
2.5.0
- Feature
no-cycleno longer reports inside generated files. #686
2.4.0
recommendedno longer enablesorder,firstornewline-after-import. #634no-cyclecites CWE-1047, and CWE-407 gets its real name back. #611export: a namespace member is not a module export. #622no-extraneous-dependencies:.,..and#subpathare not packages. #636no-duplicates: a type-only import is not a duplicate of a value import. #620no-self-import: a suffix is not an extension. #618- DependenciesUpdated internal dependencies
2.3.19
exportno longer reports a type and a value that share a name. #593
2.3.18
- Bound the TypeScript peer range and declare the React peer #499
2.3.17
2.3.16
- Ship the JavaScript without tsc's layout. #411
- DependenciesUpdated internal dependencies
2.3.15
- Load rule modules on demand instead of at plugin load. #381
- Declare what we support, load only what we use #381
- Fix the
./oxlintsubpath export, which pointed atsrc/oxlint.js— a file no build produces.require('<package>/oxlint')threw MODULE_NOT_FOUND on every published package, while every README documented that exact wiring for oxlint'sjsPlugins. The export now points at the build output,dist/src/oxlint.js. #335 - DependenciesUpdated internal dependencies
2.3.14
- Add the ecosystem and oxlint marks to the README logo row. Each plugin now #364
2.3.13
- Don't require
typescriptat module load — the plugin threw on a clean install #344
2.3.12
- Re-publish every package so npm carries the optimised artifact #338
- DependenciesUpdated internal dependencies
2.3.11
- Zero runtime dependencies: install 7500 kB → 444 kB, load 242 ms → 13.6 ms #334
- `no-cycle` no longer crashes on deep import chains. Tarjan's SCC pass recursed once per graph node, so a chain deeper than the JS call stack threw
RangeError: Maximum call stack size exceeded— and since the rule defaults to unlimited traversal depth, nothing capped the descent. ESLint exited 2 with no results at all: not a slow lint, no lint. Observed at file 4,974 of a 5,000-node chain on Node 24. #320 - DependenciesUpdated internal dependencies
2.3.10
- Correct the unmeasured "up to 100x faster" claim in the 2.0.0 CHANGELOG entry. #301
- Rewrite
descriptionandkeywordson every published package for npm search discovery. npm ranks on name, description, and keywords, and the registry only picks up these fields at publish — so this is metadata-only and takes effect for each package on its next release. #294 - DependenciesUpdated internal dependencies
2.3.9
- Docsdocs: dual-logo README header (Interlace mark + ESLint mark side by side) and closing Interlace footer — refreshes the README rendered on npmjs.com. No runtime changes. #269
- DependenciesUpdated internal dependencies
2.3.8
- Fix Codecov badge showing "unknown" — switch from flag to component URL format #252
2.3.7
- Fixfix: remove false
meta.fixable: 'code'declarations from 21 rules that had nofix()function #141 - Consolidation cleanup — no rule behavior change: #186
- DependenciesUpdated internal dependencies
no-cyclerewritten to per-import targeted DFS (replaces upfront full-graph BFS+Tarjan SCC). ThenonCyclicFilescache provides O(1) rejection after first visit; only files along the actual DFS path are read. Detection parity with the previous algorithm is preserved.
2.3.3
- align codecov component IDs with full package names
- fix changelog header format across all packages
- Ofri Peretz
2.3.2
- align codecov component names and update docs components
- Ofri Peretz
2.3.1
- 📘 Launched new documentation site: eslint.interlace.tools
2.0.0
- Architecture Overhaul: Complete rewrite for performance and maintainability.
- Rule Parity: Achieved 100% feature parity with
eslint-plugin-import(46 rules). - Performance:
no-cyclerule is now significantly faster using incremental graph analysis. _(Corrected 2026-08-02: this entry originally read "up to 100x faster". That number was never measured and has been withdrawn — see CLAIMS.md. The verified figures are 3.1x faster end-to-end and 8x faster in pure rule time on a 5,736-file React codebase.)_ - TypeScript Support: First-class support for TypeScript (parsers and resolvers) out of the box.
- New Rules:
- Enhanced Documentation: All rules now feature AEO-compliant documentation with OWASP mappings.
- Improved Testing: Comprehensive test suite covering all rules, including edge cases and TypeScript integration.
1.0.0
- Initial release with 30 LLM-optimized dependency rules
- Module Resolution Rules (7 rules):
- Module System Rules (3 rules):
- Dependency Boundaries Rules (6 rules):
- Export Style Rules (6 rules):
- Import Style Rules (4 rules):
- Dependency Management Rules (4 rules):
- Preset configurations:
recommended,strict,module-resolution,import-style,esm,architecture - Full ESLint 9 flat config support
- ESLint MCP integration for AI assistants
- TypeScript type exports for all rule options
View on GitHub →
Building secure JavaScript with Interlace? Star the repo to get new rules and CWE coverage as we ship them — or follow the AI-code-security benchmarks behind them.