Skip to content

chore(deps): update dependency pixi.js to v8.19.0#242

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pixijs-monorepo
Open

chore(deps): update dependency pixi.js to v8.19.0#242
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pixijs-monorepo

Conversation

@renovate

@renovate renovate Bot commented May 16, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
pixi.js (source) 8.15.08.19.0 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

pixijs/pixijs (pixi.js)

v8.19.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.19.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • fix: Container.updateTransform honors zero scale (#​12044) by @​Zyie in #​12046
    • Container.updateTransform({ scaleX: 0, scaleY: 0 }) previously coerced a zero scale to 1 (the code used opts.scaleX || 1), so passing 0 left the container at full size. It now applies zero scale literally, matching scale.set(0, 0). If you relied on updateTransform ignoring a zero scale, stop passing 0 when you mean full scale.
    const container = new Container();
    container.updateTransform({ scaleX: 0, scaleY: 0 });
    // before: scale coerced to (1, 1) — container stayed full-size
    // after:  scale applied as (0, 0) — container hidden, matching scale.set(0, 0)
  • fix: particle container inherit blend mode by @​DmitriyGolub in #​11978
    • ParticleContainer now respects the blend mode inherited from its ancestors. Previously the render pipe read the container's own local blendMode instead of the resolved groupBlendMode, so setting e.g. stage.blendMode = 'add' had no effect on particles. Particles nested under a parent with a non-default blend mode will now render differently (e.g. additive brightening) where they were silently ignored before. A blendMode set directly on the ParticleContainer is unchanged.
  • fix: FillPattern tiling and radial gradient sizing by @​Zyie in #​12037
    • FillPattern gains a textureSpace option ('global' | 'local'), while fixing several long-standing pattern/gradient sizing bugs. textureSpace defaults to 'global', so patterns now tile continuously across adjacent shapes instead of remapping per shape; setTransform(matrix) now applies the matrix you pass directly (it previously inverted and rescaled it by the texture size); and textureSpace: 'local' radial gradients now scale to the gradient's outer radius. Existing pattern fills and local radial gradients can render differently.

      If you hand-compensated for the old setTransform behavior (pre-inverting or scaling by texture size), remove that compensation. The legacy positional new FillPattern(texture, repetition) form still works.

    import { Assets, FillPattern, Graphics } from 'pixi.js';
    
    const texture = await Assets.load('pattern.png');
    
    // new options-object constructor with explicit textureSpace
    const pattern = new FillPattern({ texture, repetition: 'repeat', textureSpace: 'local' });
    
    const g = new Graphics().rect(0, 0, 200, 100).fill({ fill: pattern });
🎁 Added
  • feat: add HTML-in-Canvas texture support by @​Zyie in #​12053
    • A new opt-in pixi.js/html-source subpath renders live DOM elements into PixiJS textures while the element stays fully interactive in the browser (inputs editable, links clickable, CSS animations running). Use HTMLSource for a live element or ElementImageSource for an immutable snapshot. The element must be a direct child of the Pixi canvas. Importing the subpath also registers a lowest-priority Texture.from fallback for generic HTML elements, so it cannot affect apps that don't import it.
    import { Application, Sprite } from 'pixi.js';
    import { HTMLSource } from 'pixi.js/html-source';
    
    const app = new Application();
    await app.init({ resizeTo: window });
    document.body.appendChild(app.canvas);
    
    const form = document.createElement('form');
    form.innerHTML = '<input value="still editable" />';
    app.canvas.appendChild(form); // must be a direct child of the Pixi canvas
    
    const sprite = Sprite.from(new HTMLSource({ resource: form, autoUpdate: true }));
    app.stage.addChild(sprite); // live DOM mirrored to the GPU; the form stays interactive
  • feat: implement transientAttachment for MSAA RenderTextures for WebGPU by @​GoodBoyDigital in #​12050
    • Texture sources gain an opt-in transient flag so the WebGPU backend can discard the MSAA buffer at the end of a render pass (storeOp: 'discard') instead of writing it back to memory, and keep MSAA contents in tile memory on TBDR mobile GPUs where GPUTextureUsage.TRANSIENT_ATTACHMENT is available. This cuts memory bandwidth for single-pass MSAA render targets. Only set it on antialiased textures that follow a single-pass-then-discard pattern; a later loadOp: 'load' on a transient attachment yields undefined contents. Default is false, so existing code is unaffected. A WebGPU-only renderer.device.extensions.transientAttachment probe reports device support.
🐛 Fixed
🧹 Chores

New Contributors

Full Changelog: pixijs/pixijs@v8.18.1...v8.19.0

v8.18.1

Compare Source

💾 Download

Installation:

npm install pixi.js@8.18.1

Development Build:

Production Build:

Documentation:

Changed

🐛 Fixed

v8.18.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.18.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • fix: text.width and word wrap returning incorrect values by @​Zyie in #​12007
    • Text/HTMLText/BitmapText with wordWrap: true and non-left align (center/right/justify) now return the true rendered width from text.width instead of reporting wordWrapWidth. If you relied on text.width === wordWrapWidth for layout, use wordWrapWidth directly or wrap the text in a sized container.
    const text = new Text({
        text: 'hello',
        style: { wordWrap: true, wordWrapWidth: 800, align: 'center' },
    });
    // before: text.width === 800
    // after:  text.width reflects the rendered string width
🎁 Added
  • feat: add graphicsContextToSvg() for Graphics → SVG export by @​GoodBoyDigital in #​11989
    • Adds graphicsContextToSvg(source, precision?), a pure function that serializes a Graphics or GraphicsContext to a self-contained SVG string. Supports rects, circles, ellipses, rounded rects, polygons, bezier/quadratic/arc paths, strokes, holes (via fill-rule="evenodd"), and linear/radial gradients.
    import { Graphics, graphicsContextToSvg } from 'pixi.js';
    
    const g = new Graphics()
        .rect(0, 0, 100, 50)
        .fill({ color: 0xff0000 })
        .circle(150, 25, 25)
        .stroke({ color: 0x0000ff, width: 4 });
    
    const svgString = graphicsContextToSvg(g, 2);
    await navigator.clipboard.writeText(svgString);
  • feat: add mask channel selection for sprite masks by @​Zyie in #​11987
    • setMask() gains a channel option ('red' | 'alpha') to pick which texture channel drives visibility, matching how design tools like Figma apply PNG masks. Default remains 'red'.
    import { Assets, Sprite } from 'pixi.js';
    
    const photo = new Sprite(await Assets.load('photo.png'));
    const maskSprite = new Sprite(await Assets.load('mask-alpha.png'));
    
    photo.setMask({
        mask: maskSprite,
        channel: 'alpha',
    });
  • feat: allow preference to accept an array of renderer types by @​Zyie in #​11963
    • autoDetectRenderer and Application.init now accept an array of renderer names for preference, letting you restrict the fallback chain (e.g. disable WebGPU entirely) rather than only reorder it. A new RendererPreference type is exported.
    import { Application, autoDetectRenderer } from 'pixi.js';
    
    const renderer = await autoDetectRenderer({
        preference: ['webgl', 'canvas'],
    });
    
    const app = new Application();
    await app.init({ preference: ['webgl', 'canvas'] });
  • feat: provide a getter to the domElement via app.domContainerRoot by @​carlos22 in #​11974
    • Application exposes a read-only domContainerRoot getter returning the HTMLDivElement that wraps all DOMContainer elements, so apps can add CSS classes, inline styles, or customize the DOM overlay root.
    import { Application } from 'pixi.js';
    
    const app = new Application();
    await app.init({ resizeTo: window });
    
    app.domContainerRoot.classList.add('pixi-dom-layer');
    app.domContainerRoot.style.pointerEvents = 'auto';
  • feat: add width option to MeshRope by @​mehmetcanakbay in #​11990
    • MeshRope now accepts an explicit width for rope thickness, decoupling it from the texture's height. Omitting width preserves the previous texture.height default.
    import { MeshRope, Point, Texture } from 'pixi.js';
    
    const points = [new Point(0, 0), new Point(100, 50), new Point(200, 0)];
    
    const rope = new MeshRope({
        texture: Texture.from('snake.png'),
        points,
        width: 40,
    });
  • feat: add a default anchor to texture generation by @​ksv90 in #​12011
    • renderer.generateTexture() accepts a defaultAnchor option that's forwarded onto the produced Texture. RenderTexture.create() also gains a textureOptions parameter to pass through fields like defaultAnchor to the underlying Texture.
    import { Graphics, Sprite } from 'pixi.js';
    
    const shape = new Graphics().circle(0, 0, 50).fill(0xff3366);
    
    const texture = app.renderer.generateTexture({
        target: shape,
        defaultAnchor: { x: 0.5, y: 0.5 },
    });
    
    const sprite = new Sprite(texture);
    sprite.position.set(200, 200); // centered by default
🐛 Fixed
🧹 Chores

New Contributors

v8.17.1

Compare Source

💾 Download

Installation:

npm install pixi.js@8.17.1

Development Build:

Production Build:

Documentation:

Changed

🐛 Fixed
  • fix: compressed textures ignoring resolution from URL (e.g. @0.75x) by @​Zyie in #​11960
  • fix: center-align text correctly when words exceed wordWrapWidth by @​Zyie in #​11966
🧹 Chores
  • chore: fix BitmapFont char keys from char codes to character strings by @​Zyie in #​11967
  • fix: add secrets: inherit to publish-switch workflow for S3 docs upload by @​Zyie in #​11962

v8.17.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.17.0

Development Build:

Production Build:

Documentation:

Changed

🚨 Behavior Change
  • BlurFilter now uses an optimized halving strength scheme by default, which changes visual output compared to previous versions. Set legacy: true to restore the old behavior.
    new BlurFilter({ legacy: true });
    // or globally:
    BlurFilter.defaultOptions.legacy = true;
  • Text with align: 'justify' now uses wordWrapWidth for width calculation instead of maxLineWidth, matching CSS behavior. The last line is no longer stretched.
  • breakWords: true in HTMLText now correctly uses CSS word-break: break-word instead of break-all to match behavior of other text renderers.
🎁 Added
  • feat: add tagged text support to canvasTextSplit by @​Zyie in #​11949
    • SplitText now supports tagStyles, so styled runs (e.g. <red>Hello</red> <blue>World</blue>) are correctly split into per-character Text objects with individual styles preserved.
  • feat: Improves text rendering and layout handling by @​Zyie in #​11947
    • Bitmap text now supports whiteSpace modes (normal, pre, nowrap, pre-line, pre-wrap) with proper space/newline collapsing
    • Bitmap text word wrap supports break-after characters (hyphens, en-dash, em-dash, soft hyphen)
    • Canvas text and split text now render align: 'justify' by distributing extra word spacing
    • Dynamic bitmap fonts scale drop shadow blur and distance proportionally to font size
    • Bitmap font xAdvance now uses true advance width from measureText() instead of bounding-box width
    • Kerning values correctly scaled by fontScale in dynamic bitmap fonts
  • feat: add visibleChanged event to container by @​ikigai-bjorn-s in #​11940
    container.on('visibleChanged', (visible) => {
        console.log('Visibility changed to:', visible);
    });
  • feat: Add function for removing aliases from resolver by @​Sertion in #​11921
🐛 Fixed
🧹 Chores

New Contributors

v8.16.0

Compare Source

💾 Download

Installation:

npm install pixi.js@8.16.0

Development Build:

Production Build:

Documentation:

Changed
🚨 Behavior Change
  • SplitText now more accurately splits Text across a wider range of TextStyle configurations. This may result in slight changes to character positioning.
  • Using SplitText.from from an existing Text now correctly transfers the source anchor to the new instance by mapping the anchor to pivot coordinates. This changes layout and positioning compared to previous behavior.
  • SplitBitmapText now correctly defaults to a white fill, matching the behavior of BitmapText.
  • HTMLText now correctly respects breakWords and no longer cuts off words that exceed wordWrapWidth.
  • HTMLText now respects the alpha value of its fill and stroke.
  • Text now correctly aligns when using align: 'right' or align: 'center', resulting in a small positional adjustment.
  • Container.cullArea is now correctly interpreted in the container’s local coordinate space and transformed to global coordinates before culling checks.
    // cullArea is defined in local space and transformed during culling
    container.cullArea = new Rectangle(0, 0, 100, 100);
  • graphics.texture(texture, 0x000000) will now correctly apply a black tint
🎁 Added
  • feat: Canvas renderer by @​krzys @​Zyie in #​11815
    • Note: This feature is experimental, please let us know if you run into any issues.
     await app.init({
          preference: 'canvas'
      });
  • feat: tagged text by @​Zyie in #​11827
    • Note: Currently only works for Text/HTMLText, BitmapText support coming soon
     const text = new Text({
      text: '<bold>Important:</bold> This is <highlight>highlighted</highlight> text',
      style: {
          fontFamily: 'Arial',
          fontSize: 28,
          fill: 'white',
          tagStyles: {
              bold: { fontWeight: 'bold', fill: 'yellow' },
              highlight: { fill: 'cyan', fontSize: 32 }
          }
      }
     });
  • feat: improve stability of SplitText by @​Zyie in #​11858
    • SplitText now fully mirrors Text behavior and regenerates automatically when its TextStyle changes via text.styleChanged()
    splitText.style.fontSize = 32
    splitText.styleChanged()
  • feat: external texture support by @​astralarya @​GoodBoyDigital in #​11846 #​11861
  • feat: add parseSync to spritesheet by @​jimhigson in #​11794
  • feat: improved Pool typing for pool.get() method by @​unstoppablecarl in #​11799
  • feat: add cube texture by @​GoodBoyDigital in #​11800
  • by @​GoodBoyDigital in
  • feat: Implement mip level rendering support in the rendering system by @​GoodBoyDigital in #​11801
  • feat: render to array layer by @​GoodBoyDigital in #​11803
🐛 Fixed
🧹 Chores
New Contributors

Configuration

📅 Schedule: (in timezone Asia/Ho_Chi_Minh)

  • Branch creation
    • Between 01:00 AM and 06:59 PM, only on Sunday and Wednesday (* 1-18 * * 3,0)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch from c233d3f to a90cead Compare May 18, 2026 11:22
@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch from a90cead to 062a2f4 Compare June 8, 2026 04:20
@renovate renovate Bot changed the title chore(deps): update dependency pixi.js to v8.18.1 chore(deps): update pixijs monorepo to v8.19.0 Jun 8, 2026
@codecov

codecov Bot commented Jun 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch 2 times, most recently from 2f60b5e to 27f9464 Compare June 14, 2026 19:10
@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch 3 times, most recently from f2d9a9f to bfeb71b Compare June 24, 2026 13:11
@renovate renovate Bot changed the title chore(deps): update pixijs monorepo to v8.19.0 chore(deps): update pixijs monorepo (minor) Jun 24, 2026
@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch from bfeb71b to 8f0b6ab Compare June 27, 2026 16:17
@renovate renovate Bot changed the title chore(deps): update pixijs monorepo (minor) chore(deps): update dependency pixi.js to v8.19.0 Jun 27, 2026
@renovate renovate Bot force-pushed the renovate/pixijs-monorepo branch from 8f0b6ab to a60379c Compare July 1, 2026 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants