process

Lightweight browser polyfill for Node.js's process global, used by bundlers for isomorphic code

Library
npm
v0.11.10
129 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
42 /100 Fair
Development Activity 0
Maintenance 20
Community 76
Maturity 60
Momentum 12

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
66 /100 Good
Architecture 62
Code Quality 68
Innovation 45
Learning Curve 90

process is a minimal shim that lets code written against Node.js’s built-in process global run unmodified in a browser bundle. In Node, require('process') simply re-exports the real global.process; in the browser, a lean browser.js implementation supplies just enough of the API — process.nextTick, process.env, process.argv, process.browser, and safe setTimeout/clearTimeout-backed timer fallbacks — for isomorphic libraries to keep working without a full process emulation layer.

It deliberately does not attempt to be a complete polyfill: its README explicitly scopes it to nextTick and little more, pointing users toward separate community shims (browser-process-hrtime, browser-stdout) for anything beyond that. Because bundlers like Browserify and Webpack automatically substitute this package whenever they detect code referencing the process global, it ends up bundled into a huge share of the JavaScript ecosystem’s browser builds without most developers ever installing it directly — reflected in its roughly 50 million weekly downloads against a comparatively small, rarely-updated codebase.

What You Get

  • In Node: a one-line passthrough (module.exports = global.process) that re-exports the real process object
  • In browsers: a browser.js shim providing process.nextTick, process.title, process.browser, process.env, and process.argv
  • Defensive setTimeout/clearTimeout wrapping that degrades gracefully across sandboxed or non-standard JS environments
  • A browser field in package.json so Browserify/Webpack automatically substitute the shim in browser builds
  • A deliberately minimal surface, keeping bundle size small since it’s implicitly pulled into countless browser bundles

Common Use Cases

  • Running an npm package written against Node’s process global (e.g. checking process.env.NODE_ENV) inside a Browserify or Webpack bundle
  • Detecting whether isomorphic code is executing in a browser via process.browser
  • Deferring work with process.nextTick in a library that targets both Node and browser environments
  • Acting as the implicit dependency bundlers inject automatically when they detect process usage in a dependency graph

Under The Hood

Architecture - The package is intentionally two files: index.js is a single line that re-exports Node’s real global.process for Node environments, while browser.js (184 lines) is the actual polyfill logic used when bundled for browsers, selected automatically via the browser field in package.json that tools like Browserify and Webpack understand. browser.js implements nextTick via a queue drained via setTimeout, with defensive try/catch wrapping around cached setTimeout/clearTimeout references to survive being run inside sandboxed evals, stubbed test runners, or strict-mode contexts where globals may not resolve normally. Tech Stack - Zero dependencies, plain ES5 JavaScript for maximum compatibility with older bundlers and browsers; tests run via Mocha (test.js) and, per package.json, previously via zuul for cross-browser test execution. Code Quality - The codebase is deliberately tiny and has changed very little since it stabilized around 2016 (activity_status: inactive, last commit 2020), which for a shim whose entire contract is ‘don’t crash when process is referenced’ is a sign of stability rather than neglect — the API surface it needs to cover hasn’t changed. The README explicitly documents scope boundaries (only nextTick and a few fields; hrtime/stdout are separate packages), which is good practice for keeping a widely-transitively-depended-on shim minimal. API Design - There is effectively no API to learn: consumers never import this package directly by design — it exists purely so bundlers can silently substitute it when code references the ambient process global, making its ‘API’ the same as Node’s native process object for the handful of properties it implements.

Used by 21 apps in this directory

Clojure
71%
AGPL 3.0

Logseq

Knowledge Management · Note Taking

45,349

A privacy-first, open-source knowledge graph platform combining Markdown, Org-mode, bidirectional linking, and local-first storage for building your second brain.

View details
92
Repo Health
82
Technical
65
Dependency
Built with
Clojure 71%
OCaml 12%
Updated 1 weeks ago
TypeScript
44%
Other

Magic

AI Agents · Automation · Low Code Platforms

5,055

Magic is an enterprise-grade open-source AI agent platform combining a generalist AI agent, workflow engine, IM, and collaborative office system for running an AI-powered digital workforce.

View details
68
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 44%
PHP 32%
Updated 2 months ago
TypeScript
51%
Other

Mattermost

Collaboration · Devops · Team Chat

39,418

Open core, self-hosted team collaboration with chat, AI agents, voice calling, and deep DevOps integrations — all under your control.

View details
96
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 51%
Go 40%
Updated 6 days ago
PHP
81%
Other

Mautic

Automation · Ecommerce · Marketing

10,830

The world's largest open source marketing automation platform — own your data, run multi-channel campaigns, and escape vendor lock-in forever.

View details
98
Repo Health
76
Technical
63
Dependency
Built with
PHP 81%
Updated 1 weeks ago
Clojure
57%
Other

Metabase

Analytics

49,827

The open-source BI platform that lets anyone ask questions and build dashboards without writing SQL — with an embedded analytics SDK and AI-powered query assistant included.

View details
95
Repo Health
84
Technical
62
Dependency
Built with
Clojure 57%
TypeScript 38%
Updated 6 days ago
TypeScript
98%
Other

Novu

Developer Tools

40,195

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated 6 days ago
JavaScript
90%
Other

OpenSign

Digital Signiture

7,163

Self-host a full-featured DocuSign alternative with unlimited e-signatures, multi-signer workflows, and cryptographic PDF signing.

View details
83
Repo Health
61
Technical
69
Dependency
Built with
JavaScript 90%
Updated 1 weeks ago
Go
91%
Apache 2.0

Ory Kratos

Authentication

13,933

API-first identity and user management that handles login, registration, MFA, and recovery so your application never has to.

View details
69
Repo Health
78
Technical
65
Dependency
Built with
Go 91%
Updated 3 months ago
Python
45%
Other

Redash

Analytics · Data Engineering

28,849

Redash lets anyone connect to 35+ SQL and NoSQL data sources, write a query in the browser, and turn the result into a shared dashboard — no separate BI suite required.

View details
91
Repo Health
74
Technical
61
Dependency
Built with
Python 45%
JavaScript 29%
TypeScript 19%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers