clsx v1.1.1

v1.1.1

Note: This is a performance-related patch only!Across all benchmarks, this version of clsx is ~1M ops/sec faster than clsx@1.1.0....It also happens to be 1 byte (gzip) smaller 😅🎉

Patches
  • fix: Remove needless spacer on string/number condition: ff11464
  • fix: Remove unnecessary recursive caller for object keys: f43dd23
  • perf: Guard all toVal calls with truthy assertions: 4fa8811, 019ec02
  • perf: Reorder typeof checks for common case: 08a5a7f
Chores
  • Run CI via GitHub Actions: 64af363, 883363b, 866620d, 768ffab, 5e92fdf
  • Report code coverage within CI script: 0fb6d98
  • Use esm hook with tests: 0287e40
  • Update module size (-1 byte): 7e8c75e
  • Update benchmark results: 75053c0
  • Lock all dev-deps: 3c6aa3f
  • Update badges: fd1533f
Benchmarks

Run on Node.js v10.13.0.You may find updated browser benchmarks here.

The snippet below is comparing clsx@1.1.1 (this version) to the previous version, and to classnames for ballpark comparison. All candidates are functionally identical!

# Strings
  classnames    x  3,992,284 ops/sec ±1.64% (94 runs sampled)
  clsx@1.1.0    x 11,253,372 ops/sec ±0.35% (96 runs sampled)
  clsx@1.1.1    x 12,784,134 ops/sec ±0.42% (97 runs sampled)

# Objects
  classnames    x 3,772,978 ops/sec ±0.46% (96 runs sampled)
  clsx@1.1.0    x 7,288,178 ops/sec ±0.31% (96 runs sampled)
  clsx@1.1.1    x 9,412,010 ops/sec ±0.42% (95 runs sampled)

# Arrays
  classnames    x 1,665,275 ops/sec ±1.83% (93 runs sampled)
  clsx@1.1.0    x 8,340,174 ops/sec ±0.53% (96 runs sampled)
  clsx@1.1.1    x 9,141,916 ops/sec ±0.42% (95 runs sampled)

# Nested Arrays
  classnames    x 1,164,706 ops/sec ±1.60% (95 runs sampled)
  clsx@1.1.0    x 6,284,485 ops/sec ±0.58% (90 runs sampled)
  clsx@1.1.1    x 7,165,151 ops/sec ±0.47% (91 runs sampled)

# Nested Arrays w/ Objects
  classnames    x 1,597,180 ops/sec ±1.49% (93 runs sampled)
  clsx@1.1.0    x 6,345,248 ops/sec ±0.21% (95 runs sampled)
  clsx@1.1.1    x 7,651,411 ops/sec ±0.56% (95 runs sampled)

# Mixed
  classnames    x 2,129,199 ops/sec ±1.46% (94 runs sampled)
  clsx@1.1.0    x 6,557,515 ops/sec ±0.73% (91 runs sampled)
  clsx@1.1.1    x 8,119,210 ops/sec ±0.42% (93 runs sampled)

# Mixed (Bad Data)
  classnames    x 1,166,577 ops/sec ±0.84% (94 runs sampled)
  clsx@1.1.0    x 2,018,654 ops/sec ±0.15% (98 runs sampled)
  clsx@1.1.1    x 2,238,939 ops/sec ±0.34% (95 runs sampled)
View original

Upgraded? How did it go?

Discussion