Working with a React codebase and want to use Preact? Ideally, you should use preact and
preact-compat for your dev, prod and test builds. This will enable you to discover any interop
bugs early on. If you would prefer to only alias preact and preact-compat in Webpack for
production builds (e.g if your preference is using React DevTools and enzyme), make sure to
thoroughly test everything works as expected before deploying to your servers.

Image Decoding in Blink / Chrome (true as of M62)

Blink decodes off the main thread for image elements and for CSS styles (an image as an element's background style,
for example). Moving the decode to the compositor thread (or the compositor worker thread pool?) does free-up the main
thread to work on other tasks. We call this deferred decoding. With deferred decoding, the decode work remains on the
critical path for presenting a frame to the display, so it can still cause animation jank.

The HTMLImageElement.decode() API should help with the jank problem. Also deferred decoding does not work with SVG
image resources. There are still cases where decoding images happens synchronously on the main thread: 2D canvas drawImage()
and createPattern(), and WebGL texture uploads.

Some quick thoughts on https://twitter.com/dan_abramov/status/884892244817346560. It's not ignorant at all to ask how browser vendors approach performance. On the V8 side we've discussed bytecode precompilation challenges a few times this year. Here's my recollection of where we stand on the idea:

JavaScript engines like V8 have to work on multiple architectures. Every version of V8 is different.
The architectures we target are different. A precompiled bytecode solution would require a system (e.g the server
or a CDN) to generate bytecode builds for every target architecture, every version of V8 supported and
every version of the JavaScript libraries or bundles bytecode is being generated for. This is because we would
need to make sure every user accessing a page using that bytecode can still get the final JS successfully executed.

Consider that if a cross-browser solution to this problem was desired, the above would need to be applied to JavaScriptCore,
SpiderMonkey and Chakra as well. It would need to ca