Skip to content
PluginStats

vite-plugin-cjs-interop weekly downloads statistics

npm · Vite plugins

Vite plugin to unwrap default imports from CJS dependencies during SSR

View on npm Stale · Oct 17, 2026

vite-plugin-cjs-interop has 126,084 recorded weekly downloads on npm, a decrease of 52.8% over the past 30 days, ranking #429 of 2,306 tracked listings.

Weekly downloads
126,084
Official API · Oct 18, 2026
7-day growth
-58.2%
-175.6K weekly downloads
30-day growth
-52.8%
-141.1K weekly downloads
90-day growth
-63.2%
-216.8K weekly downloads
Rank
#429
Among tracked npm listings

About vite-plugin-cjs-interop

vite-plugin-cjs-interop

Vite plugin to unwrap default imports from CJS dependencies during SSR.

Problem

In Node.js, when a CJS module that contains both a default export and named exports is imported from an ESM module, the default export has to be accessed via the default property of the imported module. Prior to version 5, Vite had some logic to handle this during development, but it didn't apply to SSR builds with external CJS dependencies. Since Vite 5, the problem happens in development as well. You don't get any indication that it won't work in production. TypeScript doesn't complain either.

Solution

This plugin will automatically unwrap the default export from CJS dependencies that you specify during SSR builds. In other words, the following code:

import foo, { named, named2 as renamed } from "foo";

will be transformed into:

const {
  default: foo = __cjsInterop1__,
  named,
  named2: renamed,
} = __cjsInterop1__?.default?.default?.__esModule
  ? __cjsInterop1__.default.default
  : __cjsInterop1__?.default?.__esModule
    ? __cjsInterop1__.default
    : __cjsInterop1__;
import * as __cjsInterop1__ from "foo";

which takes care of unwrapping the default export and creating a synthetic default export if necessary.

The change for dynamic imports is more complicated, but allows the import() function to resolve to an object that not only resembles the standard ES6 namespace as expected, but also a CommonJS export:

const foo = await import("foo");

// ES6 namespace, with default export
foo.default.bar(); // Works

// CommonJS Module (some libraries expect this to work because webpack allows it)
foo.bar(); // Also works

Installation

npm install -D vite-plugin-cjs-interop

Usage

// vite.config.js
import { cjsInterop } from "vite-plugin-cjs-interop";

export default {
  plugins: [
    cjsInterop({
      // List of CJS dependencies that require interop
      dependencies: [
        "some-package",
        // Deep imports should be specified separately
        "some-package/deep/import",
        // But globs are supported
        "some-package/foo/*",
        // Even deep globs for scoped packages
        "@some-scope/**",
        // If you want to skip a specific package, you can use negative globs
        "!@donottransformme/**",
      ],
    }),
  ],
};

The matcher uses minimatch underneath, for more details on supported syntax.

Compatibility

We currently test the plugin end-to-end (both SSR and client, in both vite build and vite dev modes) against the latest patch of:

  • Vite 5, 6, 7, and 8 — specifically the most recent release in the ~5, ~6.4, ~7.3, and 8 ranges.
  • Node 22, 24, 25, and 26 on Linux; Node 24 on macOS and Windows.
Support policy
  • For Vite, we try to follow Vite's own support window: the latest major plus the latest minor of each of the two preceding majors.
  • For Node, we try to follow Node's own support window: latest patches of "LTS" and "current" releases.

Note that we still test against Vite 5 but it's not an officially supported version. We'll try to keep testing against it as long as it doesn't require any special handling.

License

MIT

Description from the npm listing.

  • cjs
  • interop
  • ssr
  • vite-plugin

README badge

Show your rank in a README or on your website. The badge updates automatically.

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

vite-plugin-cjs-interop weekly downloads on npm, last 90 days: 122,359 weekly downloads as of Oct 18, 2026, -63.8% over 90 days.vite-plugin-cjs-interopWeekly downloads on npm · Last 90 days122,359downloads / week-63.8% over 90 days050K100K150K200K250K300K350K400KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekobservedarchived (Internet Archive)no observationsJul 22, 2026 – Oct 18, 2026 · 89 observations · Updated Oc…pluginstats.com
vite-plugin-cjs-interop weekly downloads on npm, last 90 days: 122,359 weekly downloads as of Oct 18, 2026, -63.8% over 90 days.

7/30/90-day growth

vite-plugin-cjs-interop weekly downloads growth on npm: -61.6% over 7 days, -54.7% over 30 days, -63.8% over 90 days.vite-plugin-cjs-interopWeekly downloads growth on npm122,359downloads / week now7-day growth-196,230 weekly downloads-61.6%30-day growth-147,902 weekly downloads-54.7%90-day growth-215,723 weekly downloads-63.8%Growth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
vite-plugin-cjs-interop weekly downloads growth on npm: -61.6% over 7 days, -54.7% over 30 days, -63.8% over 90 days.

Ranking history

vite-plugin-cjs-interop npm ranking history: currently #429 (by weekly downloads).vite-plugin-cjs-interopnpm ranking · by weekly downloads · Last 90 days#429current rank#427#428#429#430#431Jul 21Aug 5Aug 20Sep 4Sep 19Oct 4Oct 19rankOct 18, 2026 – Oct 19, 2026 · 2 observations · Updated Oct 17, 2026pluginstats.com
vite-plugin-cjs-interop npm ranking history: currently #429 (by weekly downloads).

Listing placement

All npm2,256 listings · 113 pages · 1,129 shown · page 22, #9 (overall #429)
All npm: every listing in weekly downloads order

Listing placement

Vite plugins250 listings · 13 pages · page 3, #16 (overall #56)
Vite plugins: every listing in weekly downloads order

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (122)
Recent weekly downloads observations for vite-plugin-cjs-interop
Date (UTC)Weekly downloadsChange vs. previous
122,359-3.7K
126,084-17.8K
143,835+11.5K
132,379-82.9K
215,312-76.1K
291,4500
291,450-27.1K
318,589+16.9K
301,729+6.3K
295,422+7.1K
288,285+20.3K
267,963+13.8K
254,204-76.4K
330,600—

Similar npm Vite plugins plugins

All 20 vite-plugin-cjs-interop alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/vite-plugin-cjs-interop. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.