I agree! The examples and definitions I’ve found online seem more clear-cut than actually working with shallow and deep copies.
This is my own speculation, but here it goes.
So, primitives (or primitive values, or primitive data types) are the types string, number, bigint, boolean, null, undefined, and symbol. I assume that those objects are okay in the top level of a shallow copy, but any other types (I believe they’re all considered “objects” in JS, even arrays) are references, so an array of these would need a deep copy if you are changing values.
I hope this helps! Thanks for reading!