# What changed in publint

> 19 changes in publint 0.3 from its official release notes, upgrade guides and advisories: 1 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/npm/publint/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## publint 0.3

### Breaking changes

- Checks repository.url when repository.type is omitted, so object-form repository values are checked for deprecated protocols, invalid Git URLs, and shorthand URLs. (0.3.24) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.24)

### New APIs and options

- The USE_FILES message now reports which internal files or directories triggered it through args.internalFilePaths. (0.3.23) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.23)

### Behavior and default changes

- The USE_FILES suggestion now recursively detects test files such as *.test.js and *.spec.ts. (0.3.23) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.23)
- Repository validation accepts a broader range of git URLs. (0.3.22) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.22)
- The USE_FILES suggestion recognizes more common internal files. (0.3.22) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.22)
- Publint skips file existence checks when crawling subpath imports because they may be dev-only and unused after bundling or publishing. (0.3.15) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.15)

### Tooling

- Publint now supports npm v12. (0.3.22) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.22)
- Publint now supports pnpm v11. (0.3.22) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.22)
- Suggests adding "sideEffects": false when bundler-oriented package fields or conditions are detected and the field is missing. (0.3.21) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.21)
- Lint messages use less forceful wording about breaking changes. (0.3.20) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.20)
- Warns when published nested package.json files define exports or imports, which Node.js ignores outside the package root. (0.3.19) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.19)

### Fixes and other changes

- Skips file existence checks for `browser` field values that point at another package. (0.3.25) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.25)
- Detects the .ctsx extension when checking for FILE_INVALID_JSX_EXTENSION. (0.3.25) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.25)
- Suggest adding engines.node when it is missing from detected Node.js packages. (0.3.20) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.20)
- Fixes a crash in the deprecated subpath mapping check. (0.3.18) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.18)
- getPkgPathValue from publint/utils now returns undefined if the path is invalid. (0.3.18) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.18)
- Fixes packing packages with pnpm when publishConfig.directory is set. (0.3.17) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.17)
- Re-enables file existence checks for TS and TSX files when they do not use custom conditions, catching possible file typos when only common conditions are used. (0.3.16) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.16)
- The rule now handles both double-quoted and single-quoted forms of exports default. (0.3.15) — [release notes](https://github.com/publint/publint/releases/tag/publint%400.3.15)
