npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

babel-plugin-transform-react-pure-components

v3.1.2

Published

Optimize React code by transforming pure components into stateless functional components.

Downloads

73

Readme

babel-plugin-transform-react-pure-components

Optimize React code by transforming pure components into stateless functional components.

Build Status

Introduction

In React, a pure component is a component that renders the same given the same properties and state. In addition stateless functions can replace class-based components that only rely on properties.

This Babel plugin transforms class-based components into stateless functions, if:

  • The class only contains a render() method.
  • Does not define additional (static) properties.
  • Is stateless.

Example

In:

class MyComponent extends React.Component {
  static propTypes = {
    className: React.PropTypes.string.isRequired
  };

  render() {
    return (
      <div className={this.props.className}>
        ...
      </div>
    );
  }
}

Out:

function MyComponent(props) {
  return (
    <div className={props.className}>
      ...
    </div>
  );
}

MyComponent.propTypes = {
  className: React.PropTypes.string.isRequired
};

Installation

$ npm install babel-plugin-transform-react-pure-components

Usage

Via .babelrc (Recommended)

.babelrc

{
  "plugins": ["transform-react-pure-components"]
}

Via CLI

$ babel --plugins transform-react-pure-components script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-react-pure-components"]
});

Options

The options below may not improve performance, and may produce unpredictable results.

  • pureComponents = false — Transform components extending React.PureComponent classes (this effectively converts them back to React.Component).
  • assignDefaultProps = false — When true, use Object.assign(defaultProps, props) instead of an additional static definition. Set to hoist to hoist them to the parent scope (can be useful in combination with babel-plugin-transform-react-remove-prop-types).

Benchmarks

According to this article, a performance boost can be expected. However, another article shows no performance boost. Nonetheless, functional stateless components may allow for optimizations in the future.

In a (non-scientific) benchmark, using this plugin yields an improvement of 22% over a class-based component (React 16, 10.000 instantiations of a component, babel-preset-env @ Chrome 59).