Object spread is a proposal, not ES2015

Array spread is ES2015 and object spread is not — it is a stage 3 proposal, available only through Babel, and the syntactic similarity makes it very easy to assume both are standard.

const args = [...list];                    // ES2015, native
const next = { ...state, loading: true };  // proposal, needs a plugin

// the portable version today
const next = Object.assign({}, state, { loading: true });

It matters when the code leaves the build — a shared utility copied into a Node script with no Babel step, a snippet pasted into a console. Both forms are shallow, so nested objects are still shared by reference either way. Enable it as a named plugin rather than through a stage preset, so the dependency on a proposal is written down.