Skip to content
PluginStats

env.style weekly downloads statistics

By QuadDepo · npm · Vite plugins

Environment-tinted favicons for Next.js and Vite — see at a glance whether a tab is dev, preview, staging, or production.

View on npm Stale · Oct 17, 2026

env.style has 14,929 recorded weekly downloads on npm, a decrease of 19.5% over the past 30 days, ranking #824 of 2,306 tracked listings.

Weekly downloads
14,929
Official API · Oct 18, 2026
7-day growth
-54.7%
-18.1K weekly downloads
30-day growth
-19.5%
-3.6K weekly downloads
90-day growth
+25.8%
+3.1K weekly downloads
Rank
#824
Among tracked npm listings

About env.style

env.style 🎨

Five browser tabs, all the same favicon — dev, preview, production — and you keep editing the wrong one. env.style tints your existing favicon per environment at build time, Vercel-style: same mark, different color. Production is never touched.

Install

pnpm add env.style
# or: npm install env.style

Usage

Next.js
// next.config.ts
import { withEnvStyles } from 'env.style'

export default withEnvStyles(nextConfig)

That's the only change needed. No layout edits, no manual favicon files.

Vite
// vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { envStyle } from 'env.style/vite'

export default defineConfig({
  plugins: [react(), envStyle()],
})

Default colors

environmentcolor
development#3b82f6 blue
preview#f59e0b amber
anything else#6b7280 gray
productionnever touched

Environment names are plain strings: whatever detection yields (e.g. ENV_STYLES_ENV=staging, or a Vercel custom environment via VERCEL_TARGET_ENV) is used as the color key. Any env without a color gets the gray fallback — except production, which is never touched.

Options

  • enabled?: boolean — kill switch for the whole tool. Default true.
  • color?: Partial<Record<string, string>> — override the tint color per environment.
  • environment?: string — force the environment instead of detecting it.
  • excludeColors?: string[] — keep pixels near these colors untinted (e.g. white backgrounds or marks in an icon that shouldn't shift).
  • icon?: string | Partial<Record<string, string>> — path to a ready-made icon, or a per-environment map of paths (e.g. { staging: 'staging-icon.png' }), served as-is for styled environments. Tinting and excludeColors are skipped entirely. An env missing from the map falls back to normal tinting.
export default withEnvStyles(nextConfig, {
  color: { staging: '#ff00ff' },
  excludeColors: ['#fff'],
})

How it works

  • Detects the environment: environment option → ENV_STYLES_ENV → VERCEL_TARGET_ENV → VERCEL_ENV. If none is set, Next.js falls back to NODE_ENV; Vite falls back to the command (dev server = development, vite build = production — set ENV_STYLES_ENV to tint a build).
  • Tints your existing favicon with sharp and writes it to public/__envstyle/, which self-gitignores.
  • Next.js: serves the tinted icon at your normal favicon URLs via beforeFiles rewrites, with Cache-Control: no-store so stale icons don't linger after switching envs.
  • Vite: rewrites <link rel="icon"> tags in index.html to point at the tinted icon (injecting one if none exists) and serves it with no-store from dev-server middleware.

Known limits

  • Environment is resolved at build time — a single build promoted across environments won't restyle.
  • CDN-only favicons aren't intercepted; on Next.js, custom metadata icons paths aren't either.
  • Icon source changes need a dev server or build restart to pick up.

Development

  • pnpm test — unit tests (vitest); pnpm typecheck — TypeScript.
  • pnpm test:visual — fetches real brand favicons and writes a before/after tint gallery to .tmp/visual/index.html (needs network; Node >= 22.18 to run the .ts script directly).
  • Runnable examples: cd examples/nextjs && pnpm install && pnpm dev (same for examples/vite-react) — the tab favicon should render tinted green.

License

MIT

Description from the npm listing.

  • nextjs
  • vite
  • vite-plugin
  • favicon
  • environment
  • dx
  • staging
  • preview

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

env.style weekly downloads on npm, last 90 days: 18,772 weekly downloads as of Oct 18, 2026, +64.4% over 90 days.env.styleWeekly downloads on npm · Last 90 days18,772downloads / week+64.4% over 90 days010K20K30K40KJul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18downloads / weekobservedarchived (Internet Archive)no observationsJul 22, 2026 – Oct 18, 2026 · 89 observations · Updated Oc…pluginstats.com
env.style weekly downloads on npm, last 90 days: 18,772 weekly downloads as of Oct 18, 2026, +64.4% over 90 days.

7/30/90-day growth

env.style weekly downloads growth on npm: -44.6% over 7 days, -1.2% over 30 days, +64.4% over 90 days.env.styleWeekly downloads growth on npm18,772downloads / week now7-day growth-15,102 weekly downloads-44.6%30-day growth-227 weekly downloads-1.2%90-day growth+7,352 weekly downloads+64.4%Growth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
env.style weekly downloads growth on npm: -44.6% over 7 days, -1.2% over 30 days, +64.4% over 90 days.

Ranking history

env.style npm ranking history: currently #824 (by weekly downloads).env.stylenpm ranking · by weekly downloads · Last 90 days#824current rank#822#823#824#825#826Jul 21Aug 5Aug 20Sep 4Sep 19Oct 4Oct 19rankOct 18, 2026 – Oct 19, 2026 · 2 observations · Updated Oct 17, 2026pluginstats.com
env.style npm ranking history: currently #824 (by weekly downloads).

Listing placement

All npm2,256 listings · 113 pages · 1,130 shown · page 42, #4 (overall #824)
All npm: every listing in weekly downloads order

Listing placement

Vite plugins250 listings · 13 pages · page 7, #15 (overall #135)
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 env.style
Date (UTC)Weekly downloadsChange vs. previous
18,772+3.8K
14,929-3.4K
18,330-2.5K
20,786-6.3K
27,066-7.4K
34,4830
34,483+609
33,874+890
32,984+2.2K
30,744+2.8K
27,920-303
28,223+1.3K
26,964-8.4K
35,320—

Similar npm Vite plugins plugins

All 20 env.style 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/env.style. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.