Entry point for the PixiJS v8 skill collection. PixiJS is the fastest library available for the web, working across all devices and allowing you to create rich, interactive graphics and cross-platform applications using WebGL, WebGPU, and Canvas as a fallback.
dean-stack integration (read before mounting Pixi inside a component)
PixiJS is first-party in dean-stack at pixi.js@^8.18.1 for any canvas-based UI. It is a side channel the same way anime.js is — render functions stay pure; everything that touches Pixi (new Application(), Ticker.add(...), sprite mutation, scene-graph reads) lives inside useEffect / useLayoutEffect / event handlers, never during render.
The canonical lifecycle wrapper is usePixiApp(canvasRef, setup, deps) in apps/<name>/app/canvas/use-pixi-app.ts:
- Owns async
Application.init({ canvas, resizeTo, preference: "webgl", autoStart: options.autoStart ?? !reducedMotion }). - Calls the user
setup(app, { reducedMotion })callback once init resolves; the callback registers children and Ticker tasks and may return a cleanup function. - Tears down on unmount via
app.destroy(true, { children: true, texture: true }), with cancellation that survives StrictMode double-mount. - Detects
prefers-reduced-motion: reduceonce at mount and passes it tosetup; callers must skip Ticker registration when true (static frames still render). - Static scenes that only update on resize or pointer input should pass
autoStart: falseand callapp.render()from those handlers. - React owns the
<canvas>DOM node; Pixi only paints into it. The wrapping component renders<canvas ref={canvasRef}>inside a sized container.
Pillar mapping (same constraints as the rest of the stack):
- Pillar 1 (Storybook-first) — every Pixi-wrapping component ships with a sibling
*.stories.tsxand a Playwright story spec. - Pillar 2 (Zod-first types) — Pixi-wrapping component props are still
z.objectschemas wrapped bydefineComponent. Pixi-internal types (Texture,Container, etc.) are runtime-only and don't need Zod validation. - Pillar 3 (IDB-first state) — game state (progress, score, settings) stays in
atomWithIDB. PixiDisplayObjects never own data; they read derived values via refs the React component updates from atom subscriptions. - Pillar 4 (CLI-gate-first) — Pixi component story specs run in the Playwright
storybookproject under headless Chromium. WebGL via SwiftShader is reliable; the defaultpreference: "webgl"inusePixiAppkeeps tests deterministic.
Seed example: apps/web/app/components/pixi-canvas-demo/ (and the same in the generator template) — a rotating square that demonstrates Ticker registration, reduced-motion short-circuit, and the canvas-ref-as-Pixi-canvas pattern.
How to use this skill
- Find the specialized skill in the router below that best matches the task.
- Load that skill's
SKILL.mdand follow its guidance. - If no sub-skill fits (the task references a specific class, function, option, or API surface not listed below), WebFetch
https://pixijs.download/release/docs/llms.txt. That file is the auto-generated, always-current index of the full PixiJS API and guides. Each entry links to a.html.mdpage you can WebFetch for the detailed content.
For the long-form description and trigger keywords of every skill, see references/index.md.
Skill router
Foundations
| Skill | Load when... |
|---|---|
| pixijs-application | Creating or configuring a PixiJS Application, calling app.init(), accessing app.stage/renderer/canvas/screen, resize/ticker plugins, app.destroy(). |
| pixijs-core-concepts | Understanding the renderer pipeline, choosing WebGL/WebGPU/Canvas, render loop internals, systems and pipes. |
| pixijs-create | Scaffolding a new project with the create-pixi CLI (bundler-vite, creation-web, framework-react templates). |
| pixijs-environments | Running PixiJS in Web Workers, Node/SSR, or strict-CSP contexts (DOMAdapter, WebWorkerAdapter, pixi.js/unsafe-eval). |
| pixijs-migration-v8 | Upgrading from v7 to v8 or fixing v7 patterns (beginFill/endFill, @pixi/* packages, BaseTexture, DisplayObject). |
| pixijs-scene-core-concepts | Understanding the scene graph as a whole: containers vs leaves, transforms, render order, masking, RenderLayer. |
Scene Objects
| Skill | Load when... |
|---|---|
| pixijs-scene-container | Working with Container: addChild/removeChild, transforms, zIndex, bounds, toGlobal/toLocal, destroy. |
| pixijs-scene-sprite | Drawing images: Sprite, AnimatedSprite, NineSliceSprite, TilingSprite. |
| pixijs-scene-graphics | Drawing vector shapes or paths: Graphics, GraphicsContext, fill/stroke, FillGradient, SVG. |
| pixijs-scene-text | Rendering text: Text, BitmapText, HTMLText, SplitText, TextStyle. |
| pixijs-scene-mesh | Custom geometry: Mesh, MeshSimple, MeshPlane, MeshRope, PerspectiveMesh. |
| pixijs-scene-particle-container | Rendering thousands of lightweight sprites: ParticleContainer, Particle, dynamicProperties. |
| pixijs-scene-dom-container | Overlaying HTML elements on the canvas: DOMContainer, pixi.js/dom. |
| pixijs-scene-gif | Displaying animated GIFs: GifSprite, GifSource, pixi.js/gif. |
Utilities
| Skill | Load when... |
|---|---|
| pixijs-assets | Loading resources: Assets.init, Assets.load, bundles, manifests, spritesheets, caching. |
| pixijs-color | Creating or converting colors: Color class, hex/rgb/hsl, tint, premultiply. |
| pixijs-events | Handling pointer/mouse/touch/wheel input: eventMode, FederatedEvent, hitArea, cursor, drag. |
| pixijs-math | Points, vectors, matrices, shapes, hit testing: Point, Matrix, Rectangle, toGlobal/toLocal. |
| pixijs-ticker | Per-frame logic or controlling the render loop: Ticker, deltaTime, UPDATE_PRIORITY, maxFPS. |
Advanced
| Skill | Load when... |
|---|---|
| pixijs-accessibility | Screen reader or keyboard navigation: AccessibilitySystem, accessibleTitle, tabIndex. |
| pixijs-blend-modes | Compositing with blend modes: add, multiply, screen, overlay, pixi.js/advanced-blend-modes. |
| pixijs-custom-rendering | Writing custom shaders, uniforms, or batchers: Shader.from, GlProgram/GpuProgram, UniformGroup, custom Filter. |
| pixijs-filters | Applying visual effects: BlurFilter, ColorMatrixFilter, DisplacementFilter, Filter.from, pixi-filters. |
| pixijs-performance | Profiling or optimizing FPS, draw calls, GPU memory: culling, GCSystem, cacheAsTexture, object pooling. |
Fallback: canonical PixiJS docs
If the task references a class, function, option, or API surface not covered by any sub-skill above, WebFetch https://pixijs.download/release/docs/llms.txt. It's the auto-generated index of the full PixiJS API and guides, regenerated on every release. Each entry links to a .html.md page you can WebFetch for the detailed content. Use this fallback whenever the router table doesn't point at an obvious match.