Suspense works for lazy-loaded components and there is no supported way to suspend on a data fetch in application code. Throwing a promise is what the libraries do…
The parent selector is in Safari from March and in nothing else during 2022, so styling a container based on its contents is still JavaScript. Keeping a class…
A type annotation checks a value and replaces its inferred type; satisfies in 4.9 checks it and keeps the narrow one. This removes the constant tension between validating…
Negative indexing on arrays and strings, which every other language has had and JavaScript expressed as an arithmetic expression. The bracket form silently returning undefined is why this…
obj.hasOwnProperty(k) fails on an object created with a null prototype and can be shadowed by a property called hasOwnProperty. The shadowing case arrives from parsed JSON, which is…
Deep copying had been a JSON round trip, which loses Dates, Maps, Sets, RegExps, undefined and every cycle. Losing the prototype is the limitation that matters for anything…
A Vite plugin is a Rollup plugin with extra optional hooks, so the ordering rules and the hook names come from Rollup’s documentation rather than Vite’s. The enforce…
A module using top-level await becomes asynchronous, and every module importing it waits — transitively. It is genuinely useful for conditional imports and for initialisation that must complete…