diff --git a/lib/mixins/property-effects.js b/lib/mixins/property-effects.js index e7412d47a4..626ace1e68 100644 --- a/lib/mixins/property-effects.js +++ b/lib/mixins/property-effects.js @@ -1008,8 +1008,18 @@ function getArgValue(data, props, path) { * @private */ function notifySplices(inst, array, path, splices) { - inst.notifyPath(path + '.splices', { indexSplices: splices }); + const splicesData = { indexSplices: splices }; + // Legacy behavior stored splices in `__data__` so it was *not* ephemeral. + // To match this behavior, we store splices directly on the array. + if (legacyUndefined) { + array.splices = splicesData; + } + inst.notifyPath(path + '.splices', splicesData); inst.notifyPath(path + '.length', array.length); + // Clear splice data only when it's stored on the array. + if (legacyUndefined) { + splicesData.indexSplices = []; + } } /**