What changed in clsx from 1 to 2

4 releases numbered after v1.2.1 up to and including v2.1.1, stable releases only. v1.2.1 and v2.1.1 are the newest stable releases of 1 and 2 we track; this page follows them as new ones ship.

5 changes across 4 releases

Added 2

v2.1.0

  • Add new clsx/lite submodule for string-only usage, a 140b version ideal for Tailwind and React contexts that ignores all non-string arguments

v2.0.0

  • Add exports map for native ESM support with TypeScript node16 and nodenext module resolution
Changed 2

v2.0.1

  • Cache arguments.length and array.length for improved performance

v2.0.0

  • Maintain CommonJS support with fixed TypeScript definitions
Fixed 1

v2.1.1

  • Include `bigint` in `ClassValue` type to accommodate recent `@types/react` changes to `ReactNode`

Original release notes, newest first

The list above is our reading of these notes; the originals from Luke Edwards are here, one fold per release.

v2.1.1
Patches
  • (types) Include bigint in ClassValue type: (#96): 3d960ab Accommodates recent @types/react changes to ReactNode. Thank you @ViliamKopecky~!
Chores
  • Add licenses.dev badge: 684509c This service recursively analyzes entire dependency graphs to ensure that a package (or your project) is using permissive licenses. For example, here's a results table for polka@next and a larger astro example.

Full Changelog: https://github.com/lukeed/clsx/compare/v2.1.0...v2.1.1

View originalPermalink

v2.1.0
Features
  • Add new clsx/lite submodule for string-only usage: 1a49142

    This is a 140b version of clsx that is ideal for Tailwind and/or React contexts, which typically follow this clsx usage pattern:

    clsx('foo bar', props.maybe && 'conditional classes', props.className);
    

    Important: This clsx/lite module ignores all non-string arguments and is therefore not a 1:1 replacement for clsx itself!

    import { clsx } from 'clsx';
    import { clsx as lite } from 'clsx/lite';
    
    // strings-only usage is identical
    clsx('foo', null, 'bar', true && 'baz'); //=> "foo bar baz"
    lite('foo', null, 'bar', true && 'baz'); //=> "foo bar baz"
    
    // clsx/lite ignores all non-strings
    clsx('foo', { a: true, b: false, c: true }); //=> "foo a c"
    lite('foo', { a: true, b: false, c: true }); //=> "foo"
    

Full Changelog: https://github.com/lukeed/clsx/compare/v2.0.1...v2.1.0

View originalPermalink

v2.0.1
Patches
  • (perf) Cache arguments.length & array.length for 6% performance gain (#26): deff09b Adds 5 bytes (+2%) for ~3% avg performance gain Thank you @jalalazimi
Chores
  • Update module size: bf64e71
  • Update benchmark results: 855eec2, 6e3b2b9,
  • Replace nyc with c8 in CI: 6e2468e
  • Update Node CI matrix: 308a238
  • Fix readme typos (#76, #82): 42354d3, 4c9a55d Thank you @andipaetzold and @acusti

Full Changelog: https://github.com/lukeed/clsx/compare/v2.0.0...v2.0.1

View originalPermalink

v2.0.0
Breaking
  • Add "exports" map for native ESM support (#57): 3ec8e9f, 0949868 Also supports TypeScript's node16/nodenext module resolution Maintains CommonJS support (with fixed TS definitions) Thank you @remcohaszing~!
Chores
  • Add Tailwind Support section to README (#65, #68): 496db1d, 4a4eadd Thank you @kevinlowe0x3F7 & @kevinlowe0x3F7
  • Add tests for numbers & variadic number arguments: c520353
  • Update package module size: 03e1cf9

Full Changelog: https://github.com/lukeed/clsx/compare/v1.2.1...v2.0.0

View originalPermalink