classnames is a simple JavaScript utility for conditionally joining classNames together. It takes strings, arrays, and objects of truthy or falsy values, and produces a single space-separated className string useful for building dynamic UI class names (including React className props).
Project status
- Maintenance status (evidence-based): The repository shows a very recent upstream push (2026-10-06), but the last documented published updates are from 2024-01-08 (v2.5.2), so published maintenance appears infrequent and mostly quiet.
- Update cadence: There was active development around late Dec 2023 to early Jan 2024 (v2.4.0, v2.5.0, v2.5.1, v2.5.2), followed by a long gap with no listed further published updates through 2026-10-08.
AI summary generated
Recent updates
v2.5.2
Release v2.5.2 updates the package version metadata and includes a small internal performance optimization in the dedupe logic. No API surface changes are shown in the diff, and the lockfile updates reflect the version bump and a related dev dependency resolution update.
v2.5.1
No release notes were provided for v2.5.1, so the actual changes can only be inferred from the code diff. This release primarily restructures how the project’s benchmarks are set up and run, including removing npm workspaces and renaming benchmark scripts used by CI and contributors.
Breakingv2.5.0
Release v2.5.0 was published on 2023-12-27, but the publisher provided no release notes. As a result, there is no documented information about new features, breaking changes, bug fixes, security updates, performance improvements, or required migrations.
v2.4.0
v2.4.0 refactors the core `classNames` and `bind` implementations to build class strings using direct string concatenation instead of building arrays and joining them. The repo also modernizes its test and CI tooling (Node test runner, tsd type tests, and updated benchmark setup). No release notes were provided by the publisher for this version.
Breakingv2.3.3
No release notes were provided for v2.3.3. The code diff shows this release is primarily focused on TypeScript declaration changes (default export interop and readonly array support), along with some non-functional repo maintenance (README, CI workflow branch rename) and a dev dependency lockfile update.
BreakingFeaturesv2.3.2
v2.3.2 updates the classnames runtime to better handle objects whose toString comes from a VM or other realm, and it refines TypeScript declaration files related to CommonJS require usage. Release notes were not provided, so the changes below should be treated as code-shown only.
BreakingFeaturesv2.3.1
Release v2.3.1 has no release notes content provided. The diff shows primarily TypeScript declaration (.d.ts) changes plus a development dependency update (browserify) in package.json and package-lock.json.
v2.3.0
v2.3.0 introduces TypeScript declaration files for the main, bind, and dedupe entrypoints, and updates the core classnames logic. The runtime behavior change is focused on how object arguments are processed when they define a custom toString method (own or inherited).
Featuresv2.2.6
This release (v2.2.6) changes the core class name concatenation logic and adds better compatibility with ES module style usage in CommonJS environments. It also updates benchmark/test tooling and CI configuration. The provided release notes are empty, so the actual behavior changes should be reviewed directly in the diff.
v2.2.5
Release v2.2.5 was published on 2016-05-02, but the publisher did not provide any release notes for this version. Without documented changes or notes, the developer impact of upgrading to v2.2.5 cannot be determined from the provided information.