🌸 April 2024: ESLint 9, React 19 and TS 5.5 Betas, Signals
Hey front end platform fam!
Hope you all had a lovely April. I’m definitely noticing myself getting happier as the days get longer. On the front end platform side of things, I worked on a tooling overview page for the site. You can get a sense of the current ecosystem and browse by category. Check it out here.
Now let’s review what happened this past month.
April Highlights
The next major version of ESLint is here. ESLint v9 makes the new flat config the default. Check out the migration guide for the full list of breaking changes.
The React team released the Beta for React 19. There’s several new hooks and APIs, such as
use,useOptimistic,useActionState, as well as support for Server Components. React 19 also improves existing APIs, e.g. simplifyingforwardRefand context providers. Check out the React 19 Beta upgrade guide as well as thetypes-react-codemodrepo for codemods. The React team recommends upgrading to 18.3 as an intermediate step, which adds warnings for deprecated APIs.April was a big month for Betas. On top of the React 19 Beta, we also have the TypeScript 5.5 Beta which brings us the much awaited Inferred Type Predicates feature (deep dive on the making of this feature). 5.5 also disables a number of options that were marked as deprecated in 5.0. They will do nothing starting 5.5 and be removed entirely in 6.0.
There’s a new TC39 proposal for JavaScript Signals that aims to provide infrastructure for managing reactive application state. Give it a try in this JS playground.
Tooling Roundup
Biome 1.7 adds the ability to easily migrate from ESLint in a single command.
Bun 1.1 brings support for Windows.
Astro 4.7 brings improvements to the Dev Toolbar API and makes it easier to keep your project up-to-date.
Node released version 22 as well as security updates for 18, 20, and 21.
Cypress adds new accessibility features.
Shadcn adds Lift Mode to Blocks, which makes it easy to lift smaller components from blocks to copy and paste.
pnpm 9.0 improves the lockfile format and resolution of peer dependencies.
There’s an open conversation on changes to configurations for the next major version of typescript-eslint.
Vitest 1.5 is released as well as a new official Vitest VS Code extension.
Stylelint 16.4 adds
no-unknown-custom-mediaand updates/fixes several existing rules.React Native 0.74 adds Yoga 3.0, batched
onLayoutupdates (New Architecture), and Yarn 3 as the default package manager for new projects.The Tailwind playground now has support for v4.
Deno 1.43 improves language server performance.
Articles and Guides
HTML, Accessibility, and Design Systems
HTML
popoverAttributeDon’t use the maxlength attribute to stop users from exceeding the limit
Managing User Focus with
:focus-visibleDemystifying Screen Readers: Accessible Forms & Best Practices
CSS and Styling
Help Webkit invent CSS Grid Level 3, aka “Masonry” layout and An alternative proposal for CSS masonry