jsx-eslint/eslint-plugin-react

Rule proposal: no layout thrashing

Open

#1,889 opened on Jul 20, 2018

View on GitHub
 (1 comment) (1 reaction) (0 assignees)JavaScript (2,797 forks)batch import
acceptedhelp wantednew rule

Repository metrics

Stars
 (8,630 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

I've seen a lot of seemingly simple code lead to layout thrashing and performance problems that could have been statically detected and avoided. It would be nice to have a rule that could flag some of these scenarios.

I think it might make sense to take Paul Irish's list of what causes layout/reflow, and write a rule that flags when these happen synchronously in places like componentDidMount, render, and componentWillReceiveProps, etc.

Example:

class Foo extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      windowHeight: window.innerHeight, // <-- this forces layout
    };
  }
  // ...
}

Thoughts?

Contributor guide