# What changed in schema-utils

> 13 changes in schema-utils 4 from its official release notes, upgrade guides and advisories: 2 breaking, 3 new APIs and options. Each one cited. Sources checked 2026-10-19. HTML: https://unstale.sh/npm/schema-utils/

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

## schema-utils 4

### Breaking changes

- The keyword accepts an optional file:// prefix for absolute paths, allowing paths from import.meta.resolve(); relative-path options now reject that value. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
- The environment variable is read when schema-utils is loaded, so set it before starting the process; enableValidation() and disableValidation() still take effect immediately and share state across copies. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)

### New APIs and options

- Adds a flag that writes a smaller check which loads faster, minified with webpack's minifier (webpack 5.112.0 or later). (4.8.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.8.0)
- precompile takes an esm option and writes an ES module check for packages with "type": "module". (4.7.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.7.0)
- Adds a way to compile a schema ahead of time into a check that validate accepts as its fourth argument, allowing valid options to be validated without loading ajv. (4.6.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.6.0)

### Behavior and default changes

- The keyword accepts file URLs with any number of slashes after the scheme and matches the scheme case-insensitively; file:directory remains rejected. (4.5.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.5.0)
- The format keyword is reported as part of the type, such as “should be a date string,” instead of as a separate format-matching message. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
- Messages list at most 100 errors and count the remainder as “and N more errors”; the errors property still holds every error. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
- Error messages now include the types of object properties. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)

### Fixes and other changes

- minify works from a webpack bundle without errors or warnings. (4.8.1) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.8.1)
- Strings covered by the keyword are described as absolute or relative path strings rather than bare strings. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
- A failure reached through multiple schema branches is listed once instead of repeatedly. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
- Error filtering is no longer quadratic, sibling property errors are no longer dropped when one name prefixes another, and large arrays of options no longer overflow the call stack instead of producing a ValidationError. (4.4.0) — [release notes](https://github.com/webpack/schema-utils/releases/tag/v4.4.0)
