
pixijs/pixijs-skills
26 skills77.1k installs7.6k starsGitHub
Install
npx skills add https://github.com/pixijs/pixijs-skillsSkills in this repo
1Pixijspixijs is the entry-point skill for the PixiJS v8 collection on the web. It states PixiJS targets fast interactive graphics across WebGL, WebGPU, and Canvas fallback. The router table maps tasks to specialized skills covering Application init and destroy, core renderer concepts, create-pixi project scaffolding, worker and SSR environments, v7 migration, and scene graph fundamentals. Scene object skills split Container, Sprite, Graphics, Text, Mesh, ParticleContainer, DOMContainer, and GifSprite concerns. Utility skills cover Assets loading, Color, Events, Math, and Ticker frame loops. Advanced entries point to accessibility, blend modes, custom shaders, filters, and performance profiling guidance. When no sub-skill matches a class or API surface, the doc instructs agents to WebFetch pixijs.download release llms.txt for the current API index and linked html.md pages. Developers invoke it first for any PixiJS v8 question so the agent loads the narrowest downstream SKILL.md instead of guessing APIs. Triggers include Application, Sprite, Container, Assets, Ticker, filters, shaders, and create-pixi scaffolding requests.3.7kinstalls2Pixijs Applicationpixijs-application is a PixiJS v8 agent skill for the Application convenience wrapper that owns renderer, root stage container, canvas, and ticker plugins. Version eight requires new Application() with no constructor args, then await app.init(options) before touching canvas, renderer, or screen properties. Init options documented include width, height, background, antialias, resolution, autoDensity, preference for webgl or webgpu, resizeTo, autoStart, sharedTicker, canvas injection, and destroy flags such as releaseGlobalResources to avoid stale textures after re-init. The skill explains app.stage, app.renderer, app.canvas, app.screen, and app.domContainerRoot for DOM overlay containers. ResizePlugin methods resize, queueResize, and cancelResize keep the canvas matched to window or element targets. TickerPlugin registers app.render on UPDATE_PRIORITY.LOW with start and stop controls, while autoStart false enables manual requestAnimationFrame loops. Optional CullerPlugin skips offscreen containers when cullable and cullArea are set. Related skills cover core renderers, ticker detail, scene containers, environments, performance, and custom rendering extensions.3.1kinstalls3Pixijs Core ConceptsPixiJS Core Concepts explains how PixiJS v8 puts pixels on screen through renderer selection, the per-frame render loop, and environment adaptation. autoDetectRenderer picks WebGLRenderer, WebGPURenderer, or CanvasRenderer based on a preference array such as webgpu then webgl, with WebGPU fastest where supported and WebGL as fallback. The TickerPlugin registers renderer.render at UPDATE_PRIORITY.LOW while user callbacks at NORMAL or HIGH run first for physics or game logic. Renderers combine Systems for textures, buffers, filters, and masks with RenderPipes per renderable type like sprites, graphics, and text. DOMAdapter abstracts canvas creation, image loading, and fetch for Web Workers or SSR when set before Application.init. The skill documents common mistakes including accessing app.renderer before await init, setting DOMAdapter too late, and treating preference as a guarantee without checking renderer.name. Related skills cover Application setup, ticker priorities, environments, custom RenderPipes, and scene graph basics.3.1kinstalls4Pixijs Scene Graphicspixijs-scene-graphics documents PixiJS v8 vector drawing with the shape-then-fill pattern on Graphics and shared GraphicsContext instances. Quick start shows rect, circle, moveTo lineTo bezierCurveTo paths, fill alpha objects, and stroke width and color options. Constructor options cover shared context for reused tessellated geometry and roundPixels for crisp pixel-art lines. Core patterns span rect, circle, roundRect, poly, star, ellipse, regularPoly, roundPoly, chamferRect, filletRect, and roundShape primitives plus fill and stroke with FillGradient, FillPattern, and textureSpace local versus global mapping. Holes use cut() with rules for interior boundaries, multiple holes per cut, and separate fill-cut pairs per shape. Path methods include arc, arcTo, arcToSvg, beginPath, and closePath. Advanced sections cover GraphicsContext sharing, svg import and export, containsPoint hit testing, cloning, bounds, draw-time transforms, and GraphicsPath reuse. The skill states Graphics is a leaf node that should not nest children, wrapping groups in Container instead. Related skills point to scene core concepts, container grouping, masking, filters, and performance batching guidance.3.1kinstalls5Pixijs PerformancePixiJS Performance is a v8 optimization skill to apply after DevTools profiling identifies bottlenecks in draw calls, memory, or frame time. It documents proper destroy with cacheAsTexture disabled first, releaseGlobalResources on Application teardown, GCSystem tuning via gcMaxUnusedTime and gcFrequency, and PrepareSystem upload to avoid first-frame hitches. Patterns include object pooling instead of destroy-recreate, batching by grouping Sprites and Graphics types, spritesheets over individual textures, BitmapText for dynamic labels, Graphics baked to textures, CullerPlugin culling with cullArea, and staggered bulk texture destruction across ticker frames. Common mistakes highlight interleaved object types breaking batches, per-frame Text updates, app.destroy without releaseGlobalResources, and overusing cacheAsTexture on large or frequently changing subtrees. Use it when FPS drops, jank appears, draw calls climb, pools leak after navigation, or mobile resolution and antialias settings need profiling on target hardware.3.1kinstalls6Pixijs Scene ContainerPixiJS Scene Container documents the v8 Container node used to build scene graph branches in PixiJS games and interactive apps. It covers constructor options such as sortableChildren, isRenderGroup, boundsArea, and origin versus pivot, plus addChild, removeChild, reparentChild, and zIndex sorting when sortableChildren is enabled. Transform guidance spans position, scale, rotation, alpha, tint, visible versus renderable, and coordinate conversion with getBounds, toGlobal, toLocal, and getGlobalPosition. The skill explains leaf versus container rules so Sprites and Graphics stay wrapped in Containers, documents childAdded and destroyed events, and shows onRender per-frame callbacks replacing v7 updateTransform. Common mistakes call out getBounds returning Bounds not Rectangle, cacheAsBitmap renamed to cacheAsTexture, and avoiding children on leaf objects. Use it when grouping sprites, layering UI, converting coordinates, or tearing down subtrees with destroy options in PixiJS v8 projects.3.1kinstalls7Pixijs AssetsThe pixijs-assets skill documents PixiJS v8's unified Assets loader, resolver, and cache for textures, video, spritesheets, fonts, JSON, GIFs, and compressed GPU formats. It recommends Assets.init for basePath, texturePreference, and manifest-driven setups, then Assets.load for URLs, aliases, arrays, or UnresolvedAsset descriptors. A parser field forces loaders for extension-less CDN or API URLs, replacing deprecated loadParser. Reference files cover bundles, manifests, background loading, progress callbacks, caching, SVG modes, resolution detection, and per-asset data options distinct from LoadOptions retry strategy. Critical v8 rules forbid Texture.from for fetching, require object-form Assets.add, and call Assets.unload between levels to free GPU memory. Supported types span png, webp, avif, mp4, fnt, ktx2, basis, and gif with optional side-effect imports. Decision guidance maps single images, level bundles, loading bars, and memory budgets to the right reference workflow.3.1kinstalls8Pixijs EventsThe pixijs-events skill documents PixiJS v8 federated input mirroring DOM events on the scene graph. Objects opt in with eventMode static or dynamic, while passive is the default and receives no events until changed. It covers pointer, mouse, touch, wheel, and global move event types, listening via on, addEventListener, or property handlers, plus propagation, capture phase, and hitArea overrides for bounds testing. Drag patterns use globalpointermove because pointermove only fires over the object in v8, unlike v7 canvas-wide behavior. Cursor styling uses per-object cursor values or registered cursorStyles on the renderer events system, replacing removed buttonMode. Performance guidance sets eventMode none on non-interactive subtrees, interactiveChildren false where appropriate, custom hitArea on large objects, and eventFeatures toggles to disable unused move categories. Common mistakes highlight default passive mode, buttonMode removal, and cursor non-inheritance from parents.3.1kinstalls9Pixijs Scene SpriteThe pixijs-scene-sprite skill covers PixiJS v8 sprite classes for drawing images on canvas. Sprite is the default single-texture leaf, AnimatedSprite cycles frames, NineSliceSprite preserves border art for resizable UI panels, and TilingSprite repeats textures for scrolling backgrounds. Quick start loads textures with Assets.load, constructs sprites via options objects with anchor and tint, and positions after construction when depending on renderer screen size. Variant table maps use cases to trade-offs and reference files for sprite, animated-sprite, nineslice, and tiling variants. Guidance contrasts anchor versus pivot, requires Assets.load before Sprite.from cache reads, and notes dynamic texture update patterns. Common mistakes include Texture.from URL loading, pivot misuse when centering, NineSlicePlane rename to NineSliceSprite, and adding children to leaf sprites that require a wrapping Container. Related skills point to assets loading, particle containers, graphics, and performance batching references.3kinstalls10Pixijs MathThe pixijs-math skill documents PixiJS v8 math primitives for transforms, layout rectangles, and hit testing across Point, ObservablePoint, Matrix, and shape classes. Container toGlobal and toLocal convert coordinates between scene graph spaces, while Matrix supports translate, rotate, scale, append, invert, and decompose into position, scale, rotation, and skew. Shape classes Rectangle, Circle, Ellipse, Polygon, RoundedRectangle, and Triangle implement contains, strokeContains, and getBounds for custom hitArea usage with containers. Rectangle layout helpers pad, fit, enlarge, ceil, and copyFromBounds support UI bounds aggregation and pixel snapping. Polygon constructors accept flat arrays, point arrays, or spread arguments with containsPolygon for hole detection. Importing pixi.js/math-extras adds vector methods and rectangle intersection and union helpers plus lineIntersection utilities, requiring explicit side-effect import. Common mistakes cover removed @pixi/math imports, ObservablePoint reassignment versus in-place mutation, and storing Point.shared or Matrix.shared references.3kinstalls11Pixijs Scene Core ConceptsPixiJS Scene Core Concepts is the shared mental model for PixiJS v8 display lists covering containers, leaves, transforms, render order, culling, render groups, masking, and destroy semantics. Every display object is a Container subclass; leaves such as Sprite, Graphics, Text, Mesh, and GifSprite must not hold children, while grouping belongs in Container or RenderLayer nodes. The renderer walks the tree each frame, composes local and world transforms, culls offscreen nodes, and draws siblings in array order with optional sortableChildren zIndex or RenderLayer decoupling. Render groups with isRenderGroup true move transform work to the GPU for large stable subtrees. Masking supports Graphics stencil, Sprite alpha, and ColorMask types. Visibility versus renderable flags split skip-render from keep-transform-update behavior for hit testing. Destroy with children true recursively tears down branches and optional texture cleanup. The skill maps each leaf type to dedicated pixijs-scene leaf skills and points to scene-management and masking references for deeper patterns.3kinstalls12Pixijs TickerPixiJS Ticker covers per-frame callbacks, render loop control, and timing units in PixiJS v8 where app.ticker drives registered updates and app.render at UPDATE_PRIORITY.LOW. deltaTime is a frame-rate-independent multiplier near 1.0 at 60fps, deltaMS provides speed-scaled milliseconds for pixels-per-second math, and elapsedMS exposes raw uncapped frame timing for profiling. Priority ordering runs INTERACTION at 50, HIGH at 25, NORMAL at 0, LOW at -25 where render registers, and UTILITY at -50. Patterns show rotation with deltaTime, movement with deltaMS, maxFPS and speed scaling, and per-object onRender hooks for lightweight per-sprite updates. Ticker.shared versus dedicated instances and add, addOnce, and remove lifecycle are documented alongside manual rendering paths when you bypass the default loop. Related skills link to pixijs-application for sharedTicker setup, pixijs-performance for frame budget work, and pixijs-migration-v8 for signature changes from v7.3kinstalls13Pixijs Scene TextPixiJS Scene Text covers five v8 text rendering classes with distinct styling, performance, and animation trade-offs. Text renders canvas-quality styled labels for menus and dialog. BitmapText uses a glyph atlas for cheap per-frame updates such as scores and timers. HTMLText renders real HTML and CSS via SVG foreignObject for rich markup. SplitText and SplitBitmapText expose per-character containers for animation on short or long strings. All classes use options-object constructors; v7 positional string and style forms are removed. tagStyles on Text and HTMLText enable inline colored tags when configured. BitmapFont.install pre-generates atlases before BitmapText creation, and MSDF fonts stay sharp at any scale in custom builds. The skill documents update cost comparisons, CJK and emoji guidance, and common mistakes such as updating Text.text every frame instead of BitmapText or adding children to text leaf nodes.3kinstalls14Pixijs FiltersPixiJS Filters attaches visual effects by assigning one filter or a chained array to container.filters, covering built-in AlphaFilter, BlurFilter, ColorMatrixFilter, DisplacementFilter, and NoiseFilter plus custom Filter.from GLSL or WGSL fragment shaders. PixiJS v8 requires options-object Filter constructors with GlProgram or GpuProgram wrappers instead of legacy positional vertex, fragment, and uniforms forms. Custom shaders use out vec4 finalColor, texture() sampling, and grouped resources with typed uniform values. Filter options include resolution, padding, antialias, blendRequired for back-buffer sampling, clipToViewport, and filterArea rectangles to skip per-frame bounds measurement on large containers. Community filters import from pixi-filters adjustment and glow paths, not deprecated @pixi/filter packages from v7. Advanced blend modes require importing pixi.js/advanced-blend-modes and enabling useBackBuffer on WebGL init. Common mistakes include chaining too many filters without containerizing and sharing filter instances without understanding framebuffer switch costs. The skill links to pixijs-custom-rendering for shader internals, pixijs-blend-modes for composition, an.3kinstalls15Pixijs Scene Particle ContainerPixiJS Scene Particle Container renders hundreds to tens of thousands of lightweight sprites in a single draw call for particle effects, bullet patterns, and similar mass instances. ParticleContainer holds Particle instances in particleChildren, rejecting normal addChild usage; wrap the container in a parent Container to group with other scene nodes. Constructor options include shared texture, initial particles array, dynamicProperties flags for vertex position rotation uvs and color, roundPixels, and optional custom shader. boundsArea is effectively required because default empty bounds cause culling to treat the container as invisible. Particle is a flat struct with x, y, scale, anchor, rotation, tint, and alpha fields, not a Container subclass. dynamicProperties defaults position true and other channels false; mark only animated attributes for GPU upload efficiency. Common mistakes include using addChild instead of addParticle and omitting boundsArea on large particle fields.3kinstalls16Pixijs ColorPixiJS Color creates and converts colors for tints, fills, strokes, and anywhere PixiJS accepts a ColorSource in v8. Most APIs accept raw hex strings directly, so explicit new Color() is only needed when converting formats or manipulating values. Accepted inputs include hex integers and strings, CSS names, RGB and HSL objects, normalized zero to one arrays, and Uint8 arrays. Conversion methods cover toHex, toNumber, toArray, toRgba, and toUint8RgbArray with chainable setValue updates. Component getters return normalized values while RGB object inputs use zero to 255. Manipulation covers setAlpha, multiply, premultiply, and non-destructive toPremultiplied packing for batchers and tint math. Color.shared avoids allocations in hot render loops and ticker-based sprite tint updates. Reusable output buffers support toArray and toRgbArray in per-frame callbacks. Color.isColorLike validates structural shape before passing user input. Common mistakes warn against expecting toRgba zero to 255 output and using 255 in normalized arrays. Related skills link scene graphics, sprite tint, and blend modes.3kinstalls17Pixijs CreatePixiJS Create scaffolds new PixiJS v8 projects using the create-pixi CLI across npm, yarn, pnpm, and bun with interactive or non-interactive --template flows. Templates split into bundler presets like bundler-vite and bundler-webpack, creation-web with AssetPack and scene routing, framework-react via @pixi/react, and extension-default for reusable packages. Node 18 or 20 plus is required with warnings for templates needing newer versions. Existing projects can skip the CLI and npm install pixi.js directly then follow pixijs-application for Application setup. Post-scaffold flow is cd, npm install, and npm run dev with build, preview, and lint scripts on every template. npm 7 plus needs a double dash before CLI flags. Scaffolding into the current directory uses dot as the project name with non-empty directory guards. A Vite top-level-await production build gotcha is documented for strict environments.3kinstalls18Pixijs Custom RenderingPixiJS Custom Rendering covers custom shaders, uniforms, filters, and batchers in PixiJS v8 using Shader.from with gl and gpu programs plus typed UniformGroup resources. Quick start builds a Mesh with MeshGeometry and animates uTime in a ticker callback. Dual-renderer patterns pair GlProgram GLSL with GpuProgram WGSL entry points for WebGL and WebGPU compatibility. Textures pass as separate resources matching shader binding names, not inside UBO blocks. UBO mode packs uniforms for WebGPU with isStatic requiring manual update calls and strict layout matching. Custom filters use Filter.from fragment shaders with GLSL ES 3.0 conventions: in and out varyings, finalColor output, and texture sampling. blendRequired enables uBackTexture destination sampling with an extra GPU copy cost each frame. Custom Batcher subclasses register via ExtensionType.Batcher for specialized rendering paths. Strict CSP environments need pixi.js/unsafe-eval for UBO sync fallback. Related skills point to filters, mesh geometry, performance batching, and v8 migration references.3kinstalls19Pixijs Scene Dom ContainerThe pixijs-scene-dom-container skill documents how to position HTML elements over a PixiJS v8 canvas with DOMContainer, which extends ViewContainer as a leaf node that drives an HTMLElement via CSS transforms from the scene graph. It covers the pixi.js/dom side-effect import, DOMPipe registration for custom builds, constructor options for element and anchor, visibility sync, pointer-events defaults, and the shared domContainerRoot layer above the canvas. Developers use it when they need native inputs, iframes, videos, or styled HTML panels that follow PixiJS display objects. The skill warns that DOMContainer is experimental in v8, cannot nest PixiJS children, is unavailable in Web Workers, and that PixiJS filters, masks, and blend modes do not affect DOM elements. Common mistakes include missing the dom import in skipExtensionImports builds, nesting sprites inside DOMContainer, and expecting GPU filters on HTML overlays.2.9kinstalls20Pixijs Blend ModesThe pixijs-blend-modes skill explains how to set container.blendMode in PixiJS v8 for standard GPU blend equations and filter-based advanced modes. Standard modes include normal, add, multiply, screen, erase, none, inherit, min, and max, which are hardware-accelerated without filters. Advanced modes such as color-burn, overlay, and hard-light require importing pixi.js/advanced-blend-modes and enabling useBackBuffer true on WebGL init. The skill emphasizes batch-friendly child ordering because blend-mode transitions break render batches, recommending grouping siblings with the same mode. Common mistakes cover missing advanced extension imports causing silent fallback, using removed v7 BLEND_MODES enum, alternating modes across adjacent objects, and high-DPI clipping from Filter.defaultOptions.resolution defaulting to one. Developers use it for glow, shadow, and Photoshop-style compositing in canvas games and interactive graphics across browser and WebGPU render targets. A reference table maps each mode string to its pixel compositing effect.2.9kinstalls21Pixijs Scene MeshThe pixijs-scene-mesh skill covers rendering custom geometry in PixiJS v8 using Mesh with MeshGeometry plus specialized subclasses MeshSimple, MeshPlane, MeshRope, and PerspectiveMesh. The base Mesh requires hand-built positions, uvs, indices, and topology while subclasses build geometry internally from texture and shape parameters. Decision guidance maps use cases: deformable rectangles use MeshPlane, rope trails use MeshRope, 2.5D tilted cards use PerspectiveMesh, per-frame vertex animation uses MeshSimple, and custom shaders need base Mesh with pixijs-custom-rendering. Meshes are leaf nodes that cannot have children; grouping uses Container wrappers. Batching applies only under auto rules with MeshGeometry, no custom shader, and at most one hundred vertices. Common mistakes include using removed v7 SimpleMesh names, wrong topology placement on geometry not mesh, and expecting true 3D depth from PerspectiveMesh UV-level perspective correction only in 2D scenes.2.9kinstalls22Pixijs EnvironmentsPixiJS Environments configures DOMAdapter before app.init() so PixiJS v8 runs outside standard browsers. Web Worker setups transfer OffscreenCanvas from the main thread, call DOMAdapter.set(WebWorkerAdapter), then initialize Application with the posted canvas. CSP-restricted sites import pixi.js/unsafe-eval before renderer init to replace eval-based shader compilation with static polyfills despite the counterintuitive module name. Custom Adapter implementations cover Node headless testing and SSR using createCanvas, fetch, and parseXML from canvas and xmldom packages. Subpath imports pixi.js/browser and pixi.js/webworker register environment-specific module bundles synchronously instead of loadEnvironmentExtensions defaults. Critical mistakes include setting the adapter after init, using document or Image directly instead of DOMAdapter.get(), and the removed v8 settings.ADAPTER pattern. Web Worker limitations exclude DOMContainer, AccessibilitySystem, and FontFace loading, favoring bitmap fonts instead. loadEnvironmentExtensions replaces deprecated autoDetectEnvironment since 8.1.6.2.9kinstalls23Pixijs Scene GifThe pixijs-scene-gif skill covers animated GIF playback in PixiJS v8 via GifSprite and GifSource. Require a side-effect import of pixi.js/gif so Assets.load registers the GIF loader extension; without it loads fail or return raw data. Assets.load on a GIF returns GifSource, not Texture, so wrap with GifSprite instead of Sprite. Constructor options include autoPlay, loop, animationSpeed, autoUpdate, fps fallback, and onComplete, onLoop, onFrameChange callbacks. GifSprite is a leaf display object; group multiple instances in a Container. Share one GifSource across sprites with independent playback or clone settings. Manual update mode disconnects from Ticker.shared when autoUpdate is false. For performance-critical multi-frame animation prefer AnimatedSprite with a spritesheet atlas. Memory pitfalls: gif.destroy() keeps frame textures; use destroy(true) or Assets.unload when done. Loading supports data URIs and Assets.load data options for fps, scaleMode, and resolution. Assumes pixijs-scene-core-concepts familiarity and links related skills for assets, ticker, and performance.2.9kinstalls24Pixijs AccessibilityThe pixijs-accessibility skill enables screen reader and keyboard navigation in PixiJS v8 through AccessibilitySystem and per-container accessible properties. Set accessible, accessibleTitle, accessibleHint, accessibleText, accessibleType, tabIndex, and accessibleChildren on Sprites and Containers, with eventMode static or dynamic required for custom tab order. Initialize with accessibilityOptions including enabledByDefault, debug, activateOnTab, and deactivateOnMouseMove, or call setAccessibilityEnabled at runtime. By default the overlay activates only after Tab unless enabledByDefault is true; mobile uses a hidden touch hook for session-wide activation. Screen readers trigger pointertap, click, and tap FederatedEvents through shadow DOM elements when users press Enter, Space, or screen reader actions. Focus on shadow divs dispatches mouseover and mouseout on the mapped container. Common mistakes include missing accessibleTitle, expecting overlay without Tab, deactivateOnMouseMove breaking mouse testing, and forgetting pixi.js/accessibility import in custom builds with skipExtensionImports. Related skills cover pixijs-events, pixijs-scene-dom-container, and pixijs-application ini.2.8kinstalls25Pixijs Migration V8This skill is a breaking change checklist for bringing a v7 codebase up to v8 Work top down through the categories the list maps each v7 pattern to its v8 replacement Install the single package then port in this order imports Application init Graphics Text events shaders filters cleanup ts const app new Application await app init width 800 height 600 document body appendChild app canvas const g new Graphics rect 0 0 100 100 fill color 0xff0000 stroke width 2 color 0x000000 app stage addChild g Related skills pixijs application async init pixijs scene graphics new fill stroke API pixijs custom rendering shader rework pixijs scene text Text constructor changes pixijs performance destroy patterns The pixijs migration v8 agent skill provides documented workflows prerequisites triggers and safety guidance from its SKILL md source Agents load it when user requests match the description and follow step by step instructions without inventing capabilities It integrates with standard agent tooling for the tasks inputs outputs and failure modes described in the repository2.7kinstalls26Pixijs Html SourceThe pixijs-html-source skill use this skill when rendering live HTML/DOM elements (or frozen snapshots of them) as PixiJS v8 textures via the EXPERIMENTAL HTML-in-Canvas browser APIs. Covers the pixi.js/html-source side-effect import, feature-detection with canvas.requestPaint, HTMLSource for a live, repainting element kept interactive in the browser (autoLayout/autoUpdate/autoRequestPaint, requestPaint, isReady, the direct-child-of-canvas + layoutsubtree requirement), ElementImageSource for an immutable captureElementImage `HTMLSource` and `ElementImageSource` turn a DOM element into a `TextureSource` you can use anywhere a normal texture works: on a `Sprite`, as a `Texture` frame, or mapped onto a `Mesh`. `HTMLSource` mirrors a live element's pixels into the GPU (the element stays editable and clickable in the browser); `ElementImageSource` wraps an immutable snapshot that never repaints. Both require a side-effect `import 'pixi.js/html-source'` to register their extensions. > These sources rely on the experimental HTML-in-Canvas browser proposal and are marked EXPERIMENTAL in PixiJS v8. The browser API must be enabled or the texture uploader throws on first render; feature-dete.1.7kinstalls