Skip to content
JS
Package category

Polyfills and shims

Backfill missing language and platform features.

622 packages2 comparisons

Packages compared

622 packages
PackageWeekly downloads12-month change52 weeksGzipLast releaseModuleTypesCategories
symbol-observable
Symbol.observable ponyfill
16.5m+8%-5 years ago
4.0.0
ESM + CommonJSBundledPolyfills and shims
node-abort-controller
AbortController for Node based on EventEmitter
16.4m+52%-3 years ago
3.1.1
CommonJSNonePolyfills and shims
headers-polyfill
A native "Headers" class polyfill.
14m+156%-6 months ago
5.0.1
ESM + CommonJSBundledPolyfills and shims, HTTP clients
es6-promise
A lightweight library that provides tools for organizing asynchronous code
14m+33%-7 years ago
4.2.8
CommonJSBundledPromises and async control flow, Polyfills and shims
urlpattern-polyfill
Polyfill for the URLPattern API
14m+58%-1 year ago
10.1.0
ESM + CommonJSBundledPolyfills and shims
homedir-polyfill
Node.js os.homedir polyfill for older versions of node.js.
12.6m+30%-7 years ago
1.0.3
CommonJSNonePolyfills and shims
assign-symbols
Assign the enumerable es6 Symbol properties from one or more objects to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.
12.5m+9%-8 years ago
2.0.2
CommonJSNonePolyfills and shims
formdata-node
Spec-compliant FormData implementation for Node.js
12.1m+140%-2 years ago
6.0.3
ESM + CommonJSBundledPolyfills and shims, Files and file systems
pinkie-promise
ES2015 Promise ponyfill
11.8m-6%-10 years ago
2.0.1
-NonePolyfills and shims
marky
Performance timer based on performance.mark() and measure()
11.7m+204%-1 year ago
1.3.0
ESM + CommonJSBundledPolyfills and shims
regenerator-transform
Explode async and generator functions into a state machine.
11.5m-31%-3 years ago
0.15.2
CommonJSNonePromises and async control flow, Polyfills and shims
buffer-indexof-polyfill
This is a polyfill for Buffer#indexOf introduced in NodeJS 4.0.
11.3m+191%-6 years ago
1.0.2
CommonJSNonePolyfills and shims
listenercount
backwards compatible version of builtin events.listenercount
11.3m+224%-10 years ago
1.0.1
CommonJSNonePolyfills and shims
es5-ext
ECMAScript extensions and shims
11m+13%-2 years ago
0.10.64
-NonePolyfills and shims
es6-symbol
ECMAScript 6 Symbol polyfill
10.9m+7%-2 years ago
3.1.4
-NonePolyfills and shims
resize-observer-polyfill
A polyfill for the Resize Observer API
10.6m+53%-7 years ago
1.5.1
ESM + CommonJSBundledPolyfills and shims
@react-native/js-polyfills
Polyfills for React Native.
10.4m+211%-30 days ago
0.87.1
-NonePolyfills and shims, React
object.getownpropertydescriptors
ES2017 spec-compliant shim for `Object.getOwnPropertyDescriptors` that works in ES5.
9.8m-15%-9 months ago
2.1.9
CommonJSNonePolyfills and shims
ext
JavaScript utilities with respect to emerging standard
9.7m+9%-4 years ago
1.7.0
-NoneUtility libraries, Polyfills and shims
os-homedir
Node.js 4 `os.homedir()` ponyfill
9.6m+11%-7 years ago
2.0.0
-NonePolyfills and shims
is-absolute
Returns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.
9.4m+33%-9 years ago
1.0.0
CommonJSNonePolyfills and shims
util.promisify
Polyfill/shim for util.promisify in node versions < v8
9.2m-13%-1 year ago
1.1.3
CommonJSNonePolyfills and shims
harmony-reflect
ES5 shim for ES6 (ECMAScript 6) Reflect and Proxy objects
9.2m+12%-5 years ago
1.6.2
CommonJSBundledPolyfills and shims
number-is-nan
ES2015 `Number.isNaN()` ponyfill
8.9m-1%-5 years ago
3.0.0
-NonePolyfills and shims
babel-runtime
babel selfContained runtime
8.9m-10%-9 years ago
6.26.0
-NonePolyfills and shims, Build tools
is-nan
ES2015-compliant shim for Number.isNaN - the global isNaN returns false positives.
8.8m+32%-5 years ago
1.3.2
CommonJSNonePolyfills and shims
code-point-at
ES2015 `String#codePointAt()` ponyfill
8.5m-3%-4 years ago
2.0.0
-NonePolyfills and shims
path-dirname
Node.js path.dirname() ponyfill
8.3m-7%-9 years ago
1.0.2
-NonePolyfills and shims
unfetch
Bare minimum fetch polyfill in 500 bytes
6.8m+47%-3 years ago
5.0.0
ESM + CommonJSBundledPolyfills and shims, HTTP clients
scroll-into-view-if-needed
Ponyfill for upcoming Element.scrollIntoView() APIs like scrollMode: if-needed, behavior: smooth and block: center
6.8m+104%-3 years ago
3.1.0
ESM + CommonJSBundledPolyfills and shims, TypeScript tooling
array-find-index
ES2015 `Array#findIndex()` ponyfill
6.5m+12%-9 years ago
1.0.2
-NonePolyfills and shims
array.prototype.reduce
An ES5 spec-compliant `Array.prototype.reduce` shim/polyfill/replacement that works as far down as ES3.
6.2m-2%-1 year ago
1.0.8
CommonJSNonePolyfills and shims
is-finite
ES2015 Number.isFinite() ponyfill
6.1m-8%-5 years ago
2.0.0
-NonePolyfills and shims
es6-weak-map
ECMAScript6 WeakMap polyfill
5.9m+0%-7 years ago
2.0.3
-NonePolyfills and shims
fromentries
Object.fromEntries() ponyfill (in 6 lines)
5.9m+21%-5 years ago
1.3.2
CommonJSBundledPolyfills and shims
fake-indexeddb
Fake IndexedDB: a pure JS in-memory implementation of the IndexedDB API
4.9m+381%-10 months ago
6.2.5
ESM + CommonJSBundledPolyfills and shims
object.hasown
ES spec-compliant shim for Object.hasOwn
4.8m-24%-9 days ago
1.1.5
CommonJSNonePolyfills and shims
buffer-alloc-unsafe
A [ponyfill](https://ponyfill.com) for `Buffer.allocUnsafe`.
4.7m+12%-8 years ago
1.1.0
-NonePolyfills and shims
map-or-similar
A JavaScript (JS) Map or Similar object polyfill if Map is not available.
4.6m-4%-9 years ago
1.5.0
CommonJSNonePolyfills and shims
@juggle/resize-observer
Polyfills the ResizeObserver API and supports box size options from the latest spec
4.6m+43%-4 years ago
3.4.0
ESM + CommonJSBundledPolyfills and shims, TypeScript tooling
string.prototype.padend
ES2017 spec-compliant String.prototype.padEnd shim.
4.3m+2%-2 years ago
3.1.6
CommonJSNonePolyfills and shims
pony-cause
Ponyfill and helpers for Error Causes
3.9m+84%-2 years ago
2.1.11
ESM + CommonJSBundledPolyfills and shims
promise-polyfill
Lightweight promise polyfill. A+ compliant
3.8m+23%-3 years ago
8.3.0
ESM + CommonJSNonePolyfills and shims, Promises and async control flow
iterall
Minimal zero-dependency utilities for using JavaScript Iterables in all environments.
3.7m+25%-6 years ago
1.3.0
ESM + CommonJSBundledPolyfills and shims
is-function
is that thing a function? Use this module to find out
3.6m+19%-6 years ago
1.0.2
CommonJSNonePolyfills and shims
string.prototype.codepointat
A robust & optimized `String.prototype.codePointAt` polyfill, based on the ECMAScript 6 specification.
3.4m+350%-1 year ago
1.0.1
CommonJSNonePolyfills and shims
webrtc-adapter
A shim to insulate apps from WebRTC spec changes and browser prefix differences
3.4m+307%-3 months ago
9.0.6
ESM + CommonJSBundledPolyfills and shims
jsbi
JSBI is a pure-JavaScript implementation of [the ECMAScript BigInt proposal](https://tc39.es/proposal-bigint/), which officially became a part of the JavaScript language in ES2020.
3.3m+96%-1 year ago
4.3.2
ESM + CommonJSBundledPolyfills and shims
@edge-runtime/ponyfill
A ponyfill (doesn't overwrite the native methods) to use Edge Runtime APIs in any environment.
3m+246%-1 year ago
4.0.0
ESM + CommonJSBundledPolyfills and shims
react-native-url-polyfill
A lightweight and trustworthy URL polyfill for React Native
2.9m+227%-2 months ago
4.0.0
CommonJSBundledURLs and query strings, React

12-month change compares the average of the last 4 weeks of downloads with the first 4 weeks of the 52-week series. Gzip size is for the whole package, as measured by Bundlephobia. "-" means the value has not been fetched.

  • symbol-observableSymbol.observable ponyfill
  • node-abort-controllerAbortController for Node based on EventEmitter
  • headers-polyfillA native "Headers" class polyfill.
  • es6-promiseA lightweight library that provides tools for organizing asynchronous code
  • urlpattern-polyfillPolyfill for the URLPattern API
  • homedir-polyfillNode.js os.homedir polyfill for older versions of node.js.
  • assign-symbolsAssign the enumerable es6 Symbol properties from one or more objects to the first object passed on the arguments. Can be used as a supplement to other extend, assign or merge methods as a polyfill for the Symbols part of the es6 Object.assign method.
  • formdata-nodeSpec-compliant FormData implementation for Node.js
  • pinkie-promiseES2015 Promise ponyfill
  • markyPerformance timer based on performance.mark() and measure()
  • regenerator-transformExplode async and generator functions into a state machine.
  • buffer-indexof-polyfillThis is a polyfill for Buffer#indexOf introduced in NodeJS 4.0.
  • listenercountbackwards compatible version of builtin events.listenercount
  • es5-extECMAScript extensions and shims
  • es6-symbolECMAScript 6 Symbol polyfill
  • resize-observer-polyfillA polyfill for the Resize Observer API
  • @react-native/js-polyfillsPolyfills for React Native.
  • object.getownpropertydescriptorsES2017 spec-compliant shim for `Object.getOwnPropertyDescriptors` that works in ES5.
  • extJavaScript utilities with respect to emerging standard
  • os-homedirNode.js 4 `os.homedir()` ponyfill
  • is-absoluteReturns true if a file path is absolute. Does not rely on the path module and can be used as a polyfill for node.js native `path.isAbolute`.
  • util.promisifyPolyfill/shim for util.promisify in node versions < v8
  • harmony-reflectES5 shim for ES6 (ECMAScript 6) Reflect and Proxy objects
  • number-is-nanES2015 `Number.isNaN()` ponyfill
  • babel-runtimebabel selfContained runtime
  • is-nanES2015-compliant shim for Number.isNaN - the global isNaN returns false positives.
  • code-point-atES2015 `String#codePointAt()` ponyfill
  • path-dirnameNode.js path.dirname() ponyfill
  • unfetchBare minimum fetch polyfill in 500 bytes
  • scroll-into-view-if-neededPonyfill for upcoming Element.scrollIntoView() APIs like scrollMode: if-needed, behavior: smooth and block: center
  • array-find-indexES2015 `Array#findIndex()` ponyfill
  • array.prototype.reduceAn ES5 spec-compliant `Array.prototype.reduce` shim/polyfill/replacement that works as far down as ES3.
  • is-finiteES2015 Number.isFinite() ponyfill
  • es6-weak-mapECMAScript6 WeakMap polyfill
  • fromentriesObject.fromEntries() ponyfill (in 6 lines)
  • fake-indexeddbFake IndexedDB: a pure JS in-memory implementation of the IndexedDB API
  • object.hasownES spec-compliant shim for Object.hasOwn
  • buffer-alloc-unsafeA [ponyfill](https://ponyfill.com) for `Buffer.allocUnsafe`.
  • map-or-similarA JavaScript (JS) Map or Similar object polyfill if Map is not available.
  • @juggle/resize-observerPolyfills the ResizeObserver API and supports box size options from the latest spec
  • string.prototype.padendES2017 spec-compliant String.prototype.padEnd shim.
  • pony-causePonyfill and helpers for Error Causes
  • promise-polyfillLightweight promise polyfill. A+ compliant
  • iterallMinimal zero-dependency utilities for using JavaScript Iterables in all environments.
  • is-functionis that thing a function? Use this module to find out
  • string.prototype.codepointatA robust & optimized `String.prototype.codePointAt` polyfill, based on the ECMAScript 6 specification.
  • webrtc-adapterA shim to insulate apps from WebRTC spec changes and browser prefix differences
  • jsbiJSBI is a pure-JavaScript implementation of [the ECMAScript BigInt proposal](https://tc39.es/proposal-bigint/), which officially became a part of the JavaScript language in ES2020.
  • @edge-runtime/ponyfillA ponyfill (doesn't overwrite the native methods) to use Edge Runtime APIs in any environment.
  • react-native-url-polyfillA lightweight and trustworthy URL polyfill for React Native