Why V8 changed the behavior
The Rhino runtime that Apps Script used before V8 was not fully ES5-compliant in how it parsed date strings. When you wrote new Date('2026-06-12'), Rhino treated that string as local time, so in a New York-timezone script, you got midnight on June 12 Eastern — which is what ended up in the cell.
V8 follows the ECMAScript spec correctly: date-only strings in ISO-8601 format (YYYY-MM-DD, no time component, no Z) are parsed as UTC midnight. For any script running in a timezone behind UTC — UTC-1 through UTC-12 — that UTC midnight falls on the previous calendar day locally. The cell shows June 11. The script has not broken, it is now spec-compliant, which is worse.
The frustrating part is that the bug is silent. No error is thrown. Values look almost right. You only catch it when a date-keyed lookup misses, or someone notices the row is off by a day. Scripts that ran correctly for years on Rhino start silently writing wrong data.