@tsparticles/pjs

tsParticles particles.js compatibility layer — drop-in replacement for particles.js with full API compatibility and enhanced features. Ready to use components available for React, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Riot.js, Inferno.
340,020 8,997
Install
npm install @tsparticles/pjs
Latest Version:4.4.0
License:MIT
Last Updated:Oct 21, 2026
Links: GitHub  ·  npm
Maintainer: matteobruni

banner

tsParticles Particles.js Compatibility Package

jsDelivr npmjs npmjs GitHub Sponsors

tsParticles particles.js compatibility library.

[!WARNING] This package is legacy compatibility glue for particles.js-style APIs. It is considered obsolete, and it may be removed in v5. Prefer direct tsParticles APIs for new code.

Included Packages

Dependency Graph

flowchart TD

subgraph b [Bundle]
  bp[tsparticles/pjs]
  bf[tsparticles]
end

subgraph c [Core]
  ce[tsparticles/engine]
end

subgraph p [Plugins]
  pr[tsparticles/plugin-responsive]
end

bp --> bf
bp --> ce
bp --> p

Exposed API

The package exports only one API from its main entrypoint:

import { initPjs } from "@tsparticles/pjs";

Signature:

initPjs(engine: Engine): Promise<void>

initPjs does not return compatibility objects directly. It initializes compatibility and populates global objects.

Installation

pnpm add @tsparticles/pjs @tsparticles/engine

How it works

Calling initPjs(engine) performs these steps:

  1. Checks runtime version compatibility.
  2. Registers required plugins (tsparticles full bundle + responsive plugin).
  3. Creates and exposes legacy globals:
    • globalThis.particlesJS
    • globalThis.pJSDom
    • globalThis.Particles

After initialization, you can use particles.js-compatible APIs.

How to use it

ESM / TypeScript

import { tsParticles } from "@tsparticles/engine";
import { initPjs } from "@tsparticles/pjs";

await initPjs(tsParticles);

await globalThis.particlesJS("tsparticles", {/* particles.js-style options */});

CDN / Vanilla JS / jQuery

The CDN/Vanilla JS version has two files:

  • One is a bundle file with all the scripts included in a single file
  • One includes only initPjs, where dependencies must be loaded manually

After loading the bundle, call initPjs(tsParticles) once, then use legacy globals.

Bundle

Use the bundle when you want a single script with all required dependencies.

Not Bundle

This installation requires more work since all dependencies must be included in the page. Some lines above are all specified in the Included Packages section.

Usage

Using particlesJS compatibility:

(async engine => {
  await initPjs(engine);

  particlesJS("tsparticles", {/* options */});
})(tsParticles);

Using Particles compatibility:

(async engine => {
  await initPjs(engine);

  Particles.init({/* options */});
})(tsParticles);

Compatibility globals (after initPjs)

Global Description Modern equivalent
particlesJS particles.js-compatible loader function (plus .load and .setOnClickHandler) tsParticles.load, tsParticles.loadJSON, tsParticles.setOnClickHandler
pJSDom array of loaded containers tsParticles.dom
Particles marcbruederlin/particles.js style wrapper (init, pauseAnimation, resumeAnimation, destroy) direct tsParticles.load + container methods

If you need explicit references in TS/JS code:

const particlesJSCompat = globalThis.particlesJS;
const pJSDomCompat = globalThis.pJSDom;
const particlesCompat = globalThis.Particles;
Particles Options (only for Particles.init)
Option Type Default Description
selector string - Required: The CSS selector of your canvas element
maxParticles integer 100 Optional: Maximum amount of particles
sizeVariations integer 3 Optional: Amount of size variations
speed integer 0.5 Optional: Movement speed of the particles
color string or string[] #000000 Optional: Color(s) of the particles and connecting lines
minDistance integer 120 Optional: Distance in px for connecting lines
connectParticles boolean false Optional: true/false if connecting lines should be drawn or not
responsive array null Optional: Array of objects containing breakpoints and options
Responsive Options
Option Type Default Description
breakpoint integer - Required: Breakpoint in px
options object - Required: Options object, that overrides default values
Methods
Method Description
pauseAnimation Pauses/stops the particle animation
resumeAnimation Continues the particle animation
destroy Destroys the plugin

Deprecation status

  • particlesJS, pJSDom, and Particles are deprecated compatibility APIs.
  • This package is obsolete and maintained for legacy integration only.
  • It may be removed in v5, so migration to direct tsParticles APIs is strongly recommended.

See migration guide: markdown/pjsMigration.md

Common pitfalls

  • Calling legacy globals before awaiting initPjs(...)
  • Expecting initPjs to return particlesJS/Particles directly
  • Mixing new tsParticles and legacy particles.js options in one config object

Related docs

Related Packages

@tsparticles/engine

Easily create highly customizable particle, confetti and fireworks animations an...

20,171,445 8,997
@tsparticles/basic

Basic tsParticles bundle — minimal core engine with only the essential features...

18,651,336 8,997
@tsparticles/slim

Slim tsParticles bundle — core engine with essential plugins, presets, and inter...

14,833,710 8,997
tsparticles

Full-featured tsParticles bundle — create stunning particle, confetti and firewo...

11,242,027 8,997
@tsparticles/confetti

tsParticles confetti bundle — easily create confetti, confetti cannon, confetti...

10,045,261 8,997

Version History

Version Released License
4.4.0 MIT
4.3.2 MIT
4.3.1 MIT
4.3.0 MIT
4.2.1 MIT
Pre-releases (42)
Version Released License
4.0.0-beta.17 MIT
4.0.0-beta.16 MIT
4.0.0-beta.15 MIT
4.0.0-beta.12 MIT
4.0.0-beta.11 MIT