stripe-js

The official ES/CommonJS loader for Stripe.js and Stripe Elements

SDK
npm
v10.1.0
755 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
93 /100 Excellent
Development Activity 100
Maintenance 100
Community 84
Maturity 60
Momentum 28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 85
Code Quality 88
Innovation 92
Learning Curve 90

@stripe/stripe-js is the official loading wrapper that lets you import Stripe.js as an ES module or CommonJS module instead of relying on a hand-written script tag. It exposes a single loadStripe helper that returns a promise resolving to a fully initialized Stripe object, handling script injection, version pinning, and PCI-compliant loading from js.stripe.com for you.

Because Stripe.js must be served directly from Stripe’s domain to stay PCI compliant, this package never bundles the payment library itself — it wraps the global Stripe constructor and ships TypeScript definitions that track the latest Stripe API. That makes it the standard entry point for adding Stripe Elements, Payment Intents, and advanced fraud detection to any modern JavaScript or TypeScript web application.

What You Get

  • A promise-based loadStripe(publishableKey) helper that resolves to an initialized Stripe object
  • Automatic insertion of the Stripe.js script tag from js.stripe.com, with reuse of any existing tag
  • A side-effect-free @stripe/stripe-js/pure entry point for deferred loading and load-parameter control
  • Bundled TypeScript definitions that track the latest Stripe API and Elements
  • Server-side safety — loadStripe resolves to null when called outside the browser

Common Use Cases

  • Mounting Stripe Elements to collect card and payment details in a React, Vue, or vanilla web app
  • Confirming Payment Intents and Setup Intents on the client during checkout
  • Enabling Stripe’s advanced fraud detection by loading Stripe.js on every page
  • Deferring Stripe.js loading until checkout to minimize third-party requests on other pages

Under The Hood

Architecture

The package is a small, single-purpose loader split across three source files in src/. shared.ts holds the core: loadScript guards a module-level stripePromise singleton so Stripe.js is fetched at most once, calling findScript/injectScript to reuse or create a <script src="https://js.stripe.com/..."> tag and wiring load/error listeners that resolve to window.Stripe; initStripe then validates the publishable key, compares the runtime release train, and calls _registerWrapper for telemetry. index.ts is the default entry that eagerly kicks off loadScript on import (after a microtask) so the tag lands early, while pure.ts is the deferred variant that only loads on the first loadStripe call and adds setLoadParameters.

Tech Stack

Written almost entirely in TypeScript (~92%), the package has zero runtime dependencies and is built with Rollup (rollup.config.js) plus Babel to emit both CommonJS (lib/index.js) and ES module (lib/index.mjs) bundles, with @rollup/plugin-replace inlining the package version into _VERSION. Type declarations live under types/ and are copied into the published output. Tooling includes ESLint, Prettier, and @arethetypeswrong/cli for package-export correctness, targeting Node >= 12.16 and TypeScript >= 3.1.

Code Quality

Code quality is high for a library this size. Each source module has a colocated Jest test (index.test.ts, pure.test.ts, shared.test.ts) and the test script chains unit tests, type-snapshot tests, are-the-types-wrong checks, and tsc typechecking. Error handling is explicit and user-facing — clear thrown Error messages for invalid keys and load parameters, a cause-wrapped ‘Failed to load Stripe.js’ rejection, and cache reset on failure so a retry can re-inject the script. Naming is consistent and the public surface is deliberately tiny.

API Design

The developer experience is excellent: the entire public API is essentially loadStripe(publishableKey) returning a typed promise, which removes nearly all boilerplate compared with hand-managing a script tag. The /pure entry point and setLoadParameters give an escape hatch for deferred loading and fraud-signal control without complicating the common path, and isomorphic safety (resolving to null on the server) means the same import works in SSR. Documentation in the README is thorough, with runnable examples and an examples/ directory.

Used by 45 apps in this directory

TypeScript
81%
MIT

OpenCode

AI Code Assistants

220,711

A fully open-source AI coding agent built for the terminal, with a TUI, desktop app, web client, plugin system, and SDK — one of the most-starred AI coding agents on GitHub.

View details
89
Repo Health
76
Technical
66
Dependency
Built with
TypeScript 81%
MDX 16%
Updated 5 days ago
Vue
41%
AGPL 3.0

Operational

Analytics · Automation · Monitoring

474

Open-source event tracker with real-time push notifications and action buttons for tech founders.

View details
54
Repo Health
68
Technical
68
Dependency
Built with
Vue 41%
JavaScript 39%
MDX 13%
Updated 3 weeks ago
PHP
62%
Other

OpnForm

Forms Surveys · Marketing

3,865

Build unlimited, embeddable forms with no code — powered by AI, logic rules, and real-time analytics

View details
91
Repo Health
75
Technical
65
Dependency
Built with
PHP 62%
Vue 28%
Updated 6 days ago
JavaScript
64%
AGPL 3.0

overleaf

Collaboration · Productivity

18,266

Open-source, real-time collaborative LaTeX editor with sandboxed compilation and full TeXLive support for self-hosted academic and research teams.

View details
84
Repo Health
80
Technical
59
Dependency
Built with
JavaScript 64%
TypeScript 30%
Updated 1 months ago
TypeScript
99%
Other

Papermark

Digital Signiture · File Storage

9,263

Open-source DocSend alternative with page-by-page analytics, secure data rooms, and custom domains for document sharing.

View details
78
Repo Health
63
Technical
66
Dependency
Built with
TypeScript 99%
Updated 2 months ago
TypeScript
96%
MIT

Payload CMS

Blogging · CMS · Developer Tools

45,458

The open-source, Next.js-native headless CMS that lives inside your /app folder and gives you a full TypeScript backend instantly.

View details
92
Repo Health
88
Technical
65
Dependency
Built with
TypeScript 96%
Updated 5 days ago
TypeScript
50%
Other

Phase Console

Devops · Security

931

End-to-end encrypted secrets management for engineering teams — from local dev to Kubernetes production.

View details
85
Repo Health
73
Technical
63
Dependency
Built with
TypeScript 50%
Python 48%
Updated 6 days ago
TypeScript
90%
MIT

Plasmic

CMS · Design Tools · Low Code Platforms

7,125

The open-source visual builder that lets teams design React apps and websites with drag-and-drop while integrating seamlessly with your codebase.

View details
81
Repo Health
78
Technical
64
Dependency
Built with
TypeScript 90%
Updated 6 days ago
Python
62%
Apache 2.0

Polar

Developer Tools · Ecommerce · Invoicing Finance

10,410

Open source payments infrastructure that turns software into a business — subscriptions, usage-based billing, digital products, and merchant-of-record compliance in one platform.

View details
90
Repo Health
82
Technical
66
Dependency
Built with
Python 62%
TypeScript 31%
Updated 6 days 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