# What changed in d3-array

> 17 changes in d3-array 2 to 3 from its official release notes, upgrade guides and advisories: 7 breaking, 6 new APIs and options. Each one cited. Sources checked 2026-11-05. HTML: https://unstale.sh/npm/d3-array/

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

## d3-array 3

### Breaking changes

- The package publishes an ES module bundle instead of separate source files. (3.2.5) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.2.5)
- d3.ascending no longer considers null comparable. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- d3.bin now ignores nulls. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- d3.descending no longer considers null comparable. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- The package now requires Node.js 12 or higher. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- The package adopts type: module, changing how Node.js interprets its JavaScript files. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)

### New APIs and options

- Adds d3.flatGroup. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- Adds d3.flatRollup. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)
- Adds d3.mode. (3.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.0.0)

### Fixes and other changes

- Fixes a rounding error in nice. (3.2.5) — [release notes](https://github.com/d3/d3-array/releases/tag/v3.2.5)

## d3-array 2

### Breaking changes

- Adopts ES2015 language features and drops support for older browsers, including IE; use d3-array 1.x or a transpiler for pre-ES2015 environments. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)

### New APIs and options

- Adds d3.group. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)
- Adds d3.quickselect. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)
- Adds d3.rollup. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)

### Performance

- Rewrites d3.median to use quickselect. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)

### Behavior and default changes

- Allows more than two iterables as input. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)
- Relevant APIs accept iterables, not just arrays. (2.0.0) — [release notes](https://github.com/d3/d3-array/releases/tag/v2.0.0)
