// Before:
const name = filter.name;
const value = filter.value;
const intensity = filter.intensity;
// After:
const { name, value, intensity } = filter;
// Before: crashes if settings or advanced is undefined
const blur = filter.settings.advanced.blur;
// After: returns undefined safely
const blur = filter?.settings?.advanced?.blur ?? 0;
// Clone pixel data without mutation
const copy = new Uint8ClampedArray([...originalPixels]);
// Merge settings (user overrides defaults)
const settings = { ...defaultSettings, ...userSettings };
Spread creates a shallow copy. Properties from the later object overwrite earlier ones — perfect for merging defaults with user preferences.
Go through the codebase and modernize 15 code snippets using destructuring, spread, optional chaining, nullish coalescing, default parameters, and rest parameters.
Fix 3 existing crashes caused by accessing properties on undefined values. Replace with optional chaining + nullish coalescing.
git switch -c refactor/PIXELCRAFT-020-modern-js
git add src/scripts/
git commit -m "Modernize codebase with ES6+ features (PIXELCRAFT-020)"
git push origin refactor/PIXELCRAFT-020-modern-js
# PR → Review → Merge → Close ticket ✅
Language evolution.
JavaScript was created in 10 days in 1995. ES6 (2015) was the biggest upgrade. Each feature solves a real pain point.