unstale

npm / pixi.js

pixi.js

What changed in pixi.js 8, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

19 breaking5 deprecations50 new APIs and options1 performance6 behavior and defaults1 tooling96 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

pixi.js 8178 changes

Breaking changes 19

  • Mirrored matrices now decompose into a real rotation, zero skew and a negative scale.x; the same change applies to setFromMatrix() and child reparenting/replacement methods.

    8.21.0release notes

  • Replaces StructsAndGroups.isUniform and also describes storage buffers; the old property now reads undefined rather than throwing.

    8.20.0release notes

  • Particles now inherit tint and alpha from ancestor render groups, so remove any manual compensation for the previous behavior.

    8.20.0release notes

  • Hit testing now matches the drawn stroke, including its alignment and winding.

    8.20.0release notes

  • Identical rectangles and rectangles flush against the right or bottom edge now count as contained.

    8.20.0release notes

  • WebGPU now handles clockwiseFrontFace as a winding; WGSL front_facing branches may take the opposite branch, while culling is unchanged.

    8.20.0release notes

  • Zero values for scaleX and scaleY are now applied literally instead of being coerced to 1, matching scale.set(0, 0).

    8.19.0release notes

  • Adds a textureSpace option, defaulting to 'global'; patterns tile continuously across adjacent shapes, and local radial gradients scale to the gradient's outer radius.

    8.19.0release notes

  • The supplied matrix is now applied directly rather than inverted and rescaled by the texture size.

    8.19.0release notes

  • With word wrapping and non-left alignment, Text, HTMLText, and BitmapText now report the rendered string width instead of wordWrapWidth; use wordWrapWidth directly if you need the configured wrapping width.

    8.18.0release notes

  • BitmapFont character keys now use character strings instead of character codes.

    8.17.1release notes

  • xAdvance now uses true advance width from measureText() instead of bounding-box width.

    8.17.0release notes

  • BlurFilter now uses an optimized halving strength scheme by default, changing visual output; set legacy to true to restore the old behavior.

    8.17.0release notes

  • Drop shadow blur and distance now scale proportionally to font size.

    8.17.0release notes

  • breakWords: true now uses CSS word-break: break-word instead of break-all, matching other text renderers.

    8.17.0release notes

  • For align: 'justify', width calculation now uses wordWrapWidth instead of maxLineWidth, and the last line is no longer stretched.

    8.17.0release notes

  • Creating SplitText from an existing Text now transfers its anchor by mapping the anchor to pivot coordinates, changing layout and positioning.

    8.16.0release notes

  • SplitText more accurately splits Text across a wider range of TextStyle configurations, which may slightly change character positioning.

    8.16.0release notes

  • A unified garbage-collection system replaces the separate texture and renderable garbage-collection systems.

    8.15.0release notes

Deprecations 5

  • The getter is deprecated in favor of isFrontFaceInverted(), which accepts a target and flipY value.

    8.21.0release notes

  • Adds a method to determine winding for a target and flipY value before binding; the frontFaceInverted getter is deprecated.

    8.21.0release notes

  • getOptimalTexture() and createTexture() now accept a TexturePoolRequest object with per-request format and scaleMode; positional signatures still work but are deprecated.

    8.21.0release notes

  • Deprecated in favor of GCSystem.

    8.15.0release notes

  • Deprecated in favor of GCSystem.

    8.15.0release notes

New APIs and options 50

  • PixiJS adds 3D mipmaps.

    8.22.0release notes

  • PixiJS adds support for 3D textures, storage textures and 3D mipmaps.

    8.22.0release notes

  • Containers receive federated contextmenu events that PixiJS hit-tests and propagates like pointerdown; eventFeatures.click gates them.

    8.22.0release notes

  • Containers now receive contextmenucapture events, gated by eventFeatures.click.

    8.22.0release notes

  • The contextmenu event is also available through the oncontextmenu handler property.

    8.22.0release notes

  • PixiJS adds storage textures.

    8.22.0release notes

  • The new WebGPU renderer option, used with antialias, discards the canvas multisample depth/stencil buffer after each pass and also discards its color buffer on non-tile-based GPUs.

    8.22.0release notes

  • BufferImageSource supports partial uploads through update(start, end).

    8.22.0release notes

  • WebGLLoader, WebGPULoader and CanvasLoader extensions register async load() hooks that matching renderers await during init(), enabling lazy backend imports.

    8.21.0release notes

  • Geometry gains an indexCount property and constructor option so geometries can draw a prefix of a shared index buffer without re-uploading it.

    8.21.0release notes

  • Adds object-form bind/push and capturable bind state.

    8.20.0release notes

  • Adds copyDepthTexture for render targets on WebGPU and WebGL2.

    8.20.0release notes

  • Adds depth-only targets.

    8.20.0release notes

  • Adds depth-stencil formats.

    8.20.0release notes

  • Adds vertexCount to geometry.

    8.20.0release notes

  • Exports GPU shader layout helpers for advanced users.

    8.20.0release notes

  • Adds support for partial buffer updates.

    8.20.0release notes

  • Opt-in flipY reverses render Y orientation while also adjusting projection and winding/cull inversion; absent or false is a no-op.

    8.20.0release notes

  • Adds a Safari WGSL fallback.

    8.20.0release notes

  • Adds WGSL shader overrides.

    8.20.0release notes

  • Adds depth sampling through TextureView.

    8.20.0release notes

  • Adds WebGPU render bundles.

    8.20.0release notes

  • Adds an opt-in subpath for rendering live DOM elements or immutable snapshots into PixiJS textures; live elements remain interactive and must be direct children of the Pixi canvas.

    8.19.0release notes

  • Adds a WebGPU-only probe that reports transient attachment device support.

    8.19.0release notes

  • Texture sources gain an opt-in transient flag for WebGPU MSAA render targets, allowing the MSAA buffer to be discarded after a render pass and reducing memory bandwidth for single-pass use.

    8.19.0release notes

  • Application exposes a read-only getter for the HTMLDivElement wrapping DOMContainer elements, allowing apps to customize the DOM overlay root.

    8.18.0release notes

  • Adds a pure function that serializes a Graphics or GraphicsContext to a self-contained SVG string, supporting shapes, paths, strokes, holes, and gradients.

    8.18.0release notes

  • Adds an explicit width option for rope thickness, decoupling it from texture height; omitting it preserves the previous texture.height default.

    8.18.0release notes

  • The preference option on autoDetectRenderer and Application.init can now accept an array of renderer names to restrict the fallback chain; RendererPreference is also exported.

    8.18.0release notes

  • Adds a defaultAnchor option forwarded to the generated Texture.

    8.18.0release notes

  • Adds a textureOptions parameter for passing fields such as defaultAnchor to the underlying Texture.

    8.18.0release notes

  • Adds a channel option to choose whether the red or alpha texture channel drives sprite-mask visibility; the default remains red.

    8.18.0release notes

  • Bitmap text supports normal, pre, nowrap, pre-line, and pre-wrap whiteSpace modes with space and newline collapsing.

    8.17.0release notes

  • Containers emit visibleChanged when visibility changes, providing the new visibility value to listeners.

    8.17.0release notes

  • A function was added for removing aliases from the resolver.

    8.17.0release notes

  • SplitText supports tagStyles so styled runs are split into per-character Text objects while preserving individual styles.

    8.17.0release notes

  • Cube texture support was added.

    8.16.0release notes

  • External texture support was added.

    8.16.0release notes

  • The rendering system gained mip level rendering support.

    8.16.0release notes

  • Spritesheets gained parseSync.

    8.16.0release notes

  • Application initialization can select the experimental Canvas renderer with preference set to 'canvas'.

    8.16.0release notes

  • Rendering to an array layer was added.

    8.16.0release notes

  • Text and HTMLText support tagged text using tagStyles to define styles for markup tags.

    8.16.0release notes

  • View containers can disable automatic garbage collection for a node with autoGarbageCollect.

    8.15.0release notes

  • The new unified garbage-collection configuration uses gcActive to control whether garbage collection is active.

    8.15.0release notes

  • The new unified garbage-collection configuration uses gcFrequency to set the collection frequency.

    8.15.0release notes

  • The new unified garbage-collection configuration uses gcMaxUnusedTime to set the maximum unused time.

    8.15.0release notes

  • Multiple Render Targets support was added.

    8.15.0release notes

  • RenderTexture.create now accepts the dynamic option.

    8.15.0release notes

  • Nodes can manually release associated GPU resources with unload and are recreated automatically when needed.

    8.15.0release notes

Performance 1

  • Uses indexed loops instead of for...in on every draw.

    8.22.0release notes

Behavior and default changes 6

  • When left at its default of true, Tab now activates the accessibility layer on a fresh page; set it to false to prevent activation.

    8.22.0release notes

  • Render bundles are now stamped with baked pipeline state.

    8.21.0release notes

  • Importing pixi.js/html-source registers a lowest-priority fallback for generic HTML elements.

    8.19.0release notes

  • Bitmap text word wrapping supports break-after characters including hyphens, en-dash, em-dash, and soft hyphen.

    8.17.0release notes

  • SplitBitmapText now defaults to a white fill, matching BitmapText.

    8.16.0release notes

  • SplitText mirrors Text behavior and regenerates automatically when its TextStyle changes via text.styleChanged().

    8.16.0release notes

Tooling 1

Fixes and other changes 96

  • Declares accessibilityOptions on the public renderer options so it is available in the public options type.

    8.22.0release notes

  • accessibleText now applies to the default button type and to accessible elements recycled from the pool.

    8.22.0release notes

  • Fixes array uniform synchronization over-reads and overlapping matrix elements.

    8.22.0release notes

  • Fixes blend filter backdrop behavior when every parent filter is skipped.

    8.22.0release notes

  • Integer texture formats are fixed on WebGL and WebGPU.

    8.22.0release notes

  • Fixes a crash involving nested filters after renderer resize.

    8.22.0release notes

  • Stops warnings about unread attributes that already have a format.

    8.22.0release notes

  • Blur samples are clamped to the input frame.

    8.21.0release notes

  • Untinted canvas tiling sprites preserve translucent colors.

    8.21.0release notes

  • Handles strokes wider than the shape.

    8.21.0release notes

  • The resource sweep is safe when unload listeners re-enter it.

    8.21.0release notes

  • VAOs and buffer listeners are released when a Geometry is destroyed.

    8.21.0release notes

  • Destroying a WebGPU renderer no longer destroys the shared GpuProgram.

    8.21.0release notes

  • Inactive graphics batches are ignored when creating bind groups.

    8.21.0release notes

  • The center of a nine-slice renders in canvas when borders cover the texture.

    8.21.0release notes

  • Fixes a BatcherPipe leak when a RenderGroup is destroyed.

    8.21.0release notes

  • Cached GPU render targets are released when a RenderTarget is destroyed.

    8.21.0release notes

  • Text, HTMLText and Graphics render correctly with a second renderer.

    8.21.0release notes

  • Per-target stencil state is kept on the backend render target.

    8.21.0release notes

  • Text and HTMLText textures are regenerated after WebGL context loss.

    8.21.0release notes

  • PixiJS types now compile with TypeScript 6 and 7 as well as 5; TypeScript 6 and 7 users should remove @webgpu/types from compilerOptions.types and use @types/web instead of the dom lib.

    8.21.0release notes

  • Idle WebGPU bind groups are swept by the renderer GC.

    8.21.0release notes

  • The WebGPU front face is updated when a reused pass changes flipY.

    8.21.0release notes

  • WebGPU MSAA textures no longer inherit autoGenerateMipmaps.

    8.21.0release notes

  • The WebGPU renderer is restored after a device loss.

    8.21.0release notes

  • SVG radial gradients no longer render as linear gradients.

    8.20.1release notesrelease notes

  • Text detaches from a shared TextStyle when destroyed.

    8.20.1release notesrelease notes

  • UBO offsets are preserved in the unsafe-eval polyfill.

    8.20.1release notesrelease notes

  • Handles a missing base in bitmap font parsers.

    8.20.0release notes

  • Adds persistentDeviceId to FederatedPointerEvent.

    8.20.0release notes

  • Accounts for frame origin and rotation when filling graphics with textures.

    8.20.0release notes

  • Fixes upload signatures for Chrome 150 and later.

    8.20.0release notes

  • Copies the radius when copying from another RoundedRectangle.

    8.20.0release notes

  • Fixes selection of the vertex used for the first edge.

    8.20.0release notes

  • Fixes a trailing glyph after a glyph-less word-break character.

    8.19.0release notes

  • Handles null results from getShaderInfoLog when the context is lost.

    8.19.0release notes

  • Handles null results from getShaderSource when the context is lost.

    8.19.0release notes

  • The renderer's maxBatchableTextures value is now passed to non-default batchers.

    8.19.0release notes

  • ParticleContainer now respects the blend mode inherited from its ancestors; a blendMode set directly on the container is unchanged.

    8.19.0release notes

  • The canvas renderer now rounds the anchor offset when roundPixels is enabled.

    8.19.0release notes

  • Fixes a crash when text begins with whitespace.

    8.19.0release notes

  • Fixes pattern shearing when tileRotation is used on non-square sprites.

    8.19.0release notes

  • Prevents an error when using Application.domContainerRoot in Node.js.

    8.18.1release notes

  • Stroke-only Graphics masks now render correctly on the Canvas renderer.

    8.18.0release notes

  • Handles previously unhandled actions in the GraphicsPath.transform switch statement.

    8.18.0release notes

  • Handles literal < characters in tagged text.

    8.18.0release notes

  • Skips _applyMipRange for single-mip textures on iOS 18.0–18.1.

    8.18.0release notes

  • Fixes a baseline mismatch when tagStyles is used with lineHeight.

    8.18.0release notes

  • Fixes stale TextureMatrix state when pooled textures reuse the same reference.

    8.18.0release notes

  • Fixes tilePosition being divided by resolution when using the Canvas renderer.

    8.18.0release notes

  • Avoids play/mediaReady recursion before video dimensions are available.

    8.18.0release notes

  • Compressed textures now respect resolution specified in the URL, such as @0.75x.

    8.17.1release notes

  • Center-aligned text is now positioned correctly when words exceed wordWrapWidth.

    8.17.1release notes

  • Using addChildAt now emits the removed event.

    8.17.0release notes

  • Fixes a crash when a resource is destroyed in a batched group and removes listeners from old resources when setResource is used.

    8.17.0release notes

  • Bitmap text now guards against missing characters and kerning data.

    8.17.0release notes

  • Canvas text renders align: 'justify' by distributing extra word spacing.

    8.17.0release notes

  • Invalidates the cached source to prevent stale alpha reuse.

    8.17.0release notes

  • Offsets are now handled correctly.

    8.17.0release notes

  • Kerning values are now scaled correctly by fontScale.

    8.17.0release notes

  • Bounds now account for miter joins at sharp angles.

    8.17.0release notes

  • Empty Graphics now return valid empty bounds.

    8.17.0release notes

  • getLocalBounds no longer returns stale data between operations in the same frame.

    8.17.0release notes

  • NineSliceSprite now respects texture trim offset.

    8.17.0release notes

  • ParticleContainer rendering now applies the global filter offset.

    8.17.0release notes

  • Renderer.destroy() now removes all listeners.

    8.17.0release notes

  • Split text renders align: 'justify' by distributing extra word spacing.

    8.17.0release notes

  • Prevents filter corruption caused by mipmap separation in TexturePool.

    8.17.0release notes

  • Corrects mutual clamping of minFPS and maxFPS.

    8.17.0release notes

  • Modifier keys are now copied from TouchEvent to normalized touch objects.

    8.17.0release notes

  • Moving DOMPipe registration to init.ts fixes Web Worker support.

    8.17.0release notes

  • cullArea is interpreted in the container's local coordinate space and transformed to global coordinates before culling checks.

    8.16.0release notes

  • Passing a black tint now correctly applies the tint.

    8.16.0release notes

  • HTMLText now respects breakWords and no longer cuts off words that exceed wordWrapWidth.

    8.16.0release notes

  • HTMLText now respects the alpha value of its fill.

    8.16.0release notes

  • HTMLText now respects the alpha value of its stroke.

    8.16.0release notes

  • Custom parsers can now override src in Resolver.

    8.16.0release notes

  • Text now aligns correctly with right or center alignment, with a small positional adjustment.

    8.16.0release notes

  • The Video Loader now catches load errors.

    8.16.0release notes

  • Fixed garbage collection for bitmap text.

    8.15.0release notes

  • Message processing in the KTX worker now has error handling.

    8.15.0release notes

  • ParticleContainer types were improved.

    8.15.0release notes

  • Fixed RenderTexture ignoring the format setting in WebGL.

    8.15.0release notes

  • Corrected viewport Y calculation for root render targets.

    8.15.0release notes

  • SVG parsing now allows negative values for polygons and polylines.

    8.15.0release notes

  • The stage Container is created on initialization only if it does not already exist.

    8.14.3release notes

  • Application reinitialization now works properly.

    8.14.2release notes

  • Recognizes XML bitmap fonts that include versions.

    8.14.2release notes

  • Resolves a TypeScript annoyance with Container.filters.

    8.14.2release notes

  • Fixes a graphics memory leak and cleanup issue.

    8.14.2release notes

  • The assets resolver now correctly parses resolution and format from URLs in object sources.

    8.14.2release notes

  • Destroying a Texture no longer leaves the automatically added resize event listener on its TextureSource.

    8.14.2release notes

  • Corrects uBackTexture binding for filters that have blendRequired.

    8.14.2release notes

  • Fixes the bytesPerRow calculation for BufferImageSource in WebGPU.

    8.14.1release notes

  • Guards mask reset from a null reference.

    8.14.1release notes

  • Prevents errors during worker manager reset.

    8.14.1release notes