Context
As part of the WordPress 7.0 compatibility effort (#481), we identified that Nova Blocks imports lodash utilities (pick, mapValues, isEqual, omit, merge, etc.) across many files.
Current state
- lodash is still bundled in WP 7.0 beta 2 (deprecated but not removed)
- WordPress has been deprecating lodash since WP 5.8 and recommends native JS alternatives
- Removal is expected in a future WP major version
What needs to happen
- Audit all lodash imports across Nova Blocks packages
- Replace each with native JS equivalents:
pick(obj, keys) → Object.fromEntries(keys.filter(k => k in obj).map(k => [k, obj[k]]))
mapValues(obj, fn) → Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fn(v)]))
isEqual → JSON.stringify for simple cases, or a small deep-equal utility
omit(obj, keys) → destructuring or Object.fromEntries(Object.entries(obj).filter(...))
merge → structured clone + spread, or a small deep-merge utility
- Remove
lodash from webpack externals if no imports remain
- Test all affected blocks
Why it was deferred
- lodash is still bundled in WP 7.0, so this is not breaking
- Replacing across many files carries risk of subtle behavioral differences
- Better done as a focused cleanup effort
Reference
- Wave 4 plan:
plans/2026-03-02-nova-blocks-wave4-package-replacements.md (in anima repo)
- Parent WP7 plan:
plans/2026-03-02-wordpress-7-compatibility.md (in anima repo)
- Related: #481
Context
As part of the WordPress 7.0 compatibility effort (#481), we identified that Nova Blocks imports lodash utilities (
pick,mapValues,isEqual,omit,merge, etc.) across many files.Current state
What needs to happen
pick(obj, keys)→Object.fromEntries(keys.filter(k => k in obj).map(k => [k, obj[k]]))mapValues(obj, fn)→Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fn(v)]))isEqual→JSON.stringifyfor simple cases, or a small deep-equal utilityomit(obj, keys)→ destructuring orObject.fromEntries(Object.entries(obj).filter(...))merge→ structured clone + spread, or a small deep-merge utilitylodashfrom webpack externals if no imports remainWhy it was deferred
Reference
plans/2026-03-02-nova-blocks-wave4-package-replacements.md(in anima repo)plans/2026-03-02-wordpress-7-compatibility.md(in anima repo)