3.7 shipped in November with optional chaining, which had been the most-requested feature for years and which replaces a specific and very common defensive pattern.
// before
const city = order && order.address && order.address.city;
// 3.7
const city = order?.address?.city;
// it short-circuits on null AND undefined, and nothing else:
const n = counts?.total; // 0 stays 0, '' stays ''
// and it works on calls and index access
const v = config?.get?.('key');
const first = rows?.[0];
The distinction from && is the important one: the chain stops only for null and undefined, where the logical operator also stops for 0, '' and false. That is precisely the bug the old pattern produced with numeric fields. The optional call form is subtler than it looks — it checks the property, not whether it is callable, so a non-function value still throws.