# What changed in ip-num

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

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

## ip-num 1

### Breaking changes

- Throws on non-positive input instead of misbehaving, with additional edge-case handling. (1.6.2) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.2)
- All four IPv4 entry points reject multi-digit octets starting with 0, preventing parser-differential SSRF and allow-list bypasses; a lone 0 remains valid. (1.6.2) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.2)
- The preinstall lifecycle script was removed, so installing ip-num no longer runs an install-time script on the consumer's machine. (1.6.2) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.2)
- Rejects IPv6 strings with multiple % separators instead of silently dropping the extra parts. (1.6.1) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.1)
- Removes a stale compiled module shipped in the npm package; users who deep-imported this undocumented path should switch to documented modules. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Removes a stale compiled module shipped in the npm package; users who deep-imported this undocumented path should switch to documented modules. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Rejects IPv6 CIDR notation without a prefix instead of misbehaving. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)

### Security

- Fixes ReDoS-prone regular expressions. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)

### New APIs and options

- Adds hasEmbeddedRP(). (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds parsing support for IPv4-mapped IPv6 strings such as ::ffff:192.168.1.1. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds support for IPv6 link-local addresses with zone IDs such as fe80::1%eth0. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds a module for classifying IPv6 addresses. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds an isDocumentation() check. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds isLinkLocal() and related checks on IPv4 for IPv4/IPv6 parity. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds isLoopback() and related checks on IPv4 for IPv4/IPv6 parity. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds isMulticast() for IPv4 and IPv6. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds isPrivate() for both IPv4 and IPv6 via AbstractIPNum. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Adds isUnspecified() and related checks on IPv4 for IPv4/IPv6 parity. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)

### Behavior and default changes

- Recognizes RFC 9637's 3fff::/20 documentation space alongside 2001:db8::/32. (1.6.1) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.1)
- Adds checks for broadcast addresses. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)

### Fixes and other changes

- Accepts and rejects the same strings as the IPv4 parser. (1.6.2) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.2)
- Computes the correct CIDR prefix instead of using the host-bit count, fixing incorrect results for multi-address blocks. (1.6.2) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.2)
- Now matches the full RFC 4193 unique local range fc00::/7, so fc00::/8 addresses are no longer misclassified as Global Unicast. (1.6.1) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.1)
- Returns [false, ...] for an invalid zone id instead of throwing. (1.6.1) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.1)
- Corrects asdot+ ASN formatting to divide by 65536 instead of 65535. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Handles invalid IPv6 mask strings gracefully. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
- Correctly detects addresses constructed via fromBigInt. (1.6.0) — [release notes](https://github.com/ip-num/ip-num/releases/tag/v1.6.0)
