Make your app install and run faster with nolyfill
Tags: javascript, performance, tutorial
Published: 2023-10-25 20:10:39

---
title: Make your app install and run faster with nolyfill
published: true
description: Did you know almost every modern app, React or not, almost certainly have over 50 useless dependencies? What if I told you, you can get rid of them and make your app install faster... and RUN faster?
tags: javascript, performance, tutorial
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-10-21 18:20 +0000
---

Do you use `eslint-plugin-import`, `eslint-plugin-jsx-a11y`, `eslint-plugin-react`? Of course you do! What do they have in common? They all contain **tons of polyfills** to ensure backward compatibility. "With what?", you ask? With Node.js 4. NODE DOT JS VERSION FOUR. Released in 2015. "So?"

These polyfills are **totally useless**. Unless, of course, you run Node.js 4. They:
* impact install times,
* make your node_modules bigger,
* and make your app run slower (native implementations are rarely slower than their polyfills).

## So what can you do?

One way to deal with it is by forking such packages, stripping off useless dependencies, and re-releasing them under new names. This, however, is rarely worth it. 

### `eslint-plugin-i`

[`eslint-plugin-i`](https://github.com/un-es/eslint-plugin-i), a fork of `eslint-plugin-import`, is a good example of when it IS worth it. Not only they do the above, but also replace `tsconfig-paths` and heavy typescript under the hood with `get-tsconfig`. This resolves security issues `eslint-plugin-import` has, vastly improves performance, and adds support for new TypeScript features. I highly recommend you replacing `eslint-plugin-import` with `eslint-plugin-i`, and if I'm not convincing enough, perhaps [pure madness exhibited by `eslint-plugin-import`'s lead maintainer in this issue](https://github.com/import-js/eslint-plugin-import/pull/2447) will convince you to.

But usually, there's an easier way!

## `nolyfill`

SukkaW created an amazing project called **nolyfill**. nolyfill is leveraging npm's, yarn's and pnpm's capabilities to replace heavy polyfills with so-called "nolyfills".

Nolyfills are tiny wrappers around what Node.js already offers. You must check it out!

https://github.com/SukkaW/nolyfill

Run `npx nolyfill` on your repo, and see for yourself, how many redundant dependencies you have!

## `@yarnpkg/plugin-nolyfill`

On top of SukkaW's work, I've built another thing: [`@yarnpkg/plugin-nolyfill`](https://github.com/wojtekmaj/yarn-plugin-nolyfill/).It does the same thing `nolyfill`'s CLI does, but hooks directly into Yarn resolution step, replacing the polyfills in question *on the fly*. It has the added benefit of "install and forget" - plugin will work every time you install your repository, so it guarantees no new redundant polyfills will ever appear in your repository.

If you use Yarn (2+), check it out as well!

Install it by running `yarn plugin import https://raw.githubusercontent.com/wojtekmaj/yarn-plugin-nolyfill/v0.1.2/bundles/@yarnpkg/plugin-nolyfill.js`. Then, reinstall repository by running `yarn install`.