v8.18.0
Installation:
npm install pixi.js@8.18.0
Development Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.mjs
Production Build:
- https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.min.js
- https://cdn.jsdelivr.net/npm/pixi.js@8.18.0/dist/pixi.min.mjs
Documentation:
https://github.com/pixijs/pixijs/compare/v8.17.1...v8.18.0
- fix:
text.widthand word wrap returning incorrect values by @Zyie in https://github.com/pixijs/pixijs/pull/12007Text/HTMLText/BitmapTextwithwordWrap: trueand non-leftalign(center/right/justify) now return the true rendered width fromtext.widthinstead of reportingwordWrapWidth. If you relied ontext.width === wordWrapWidthfor layout, usewordWrapWidthdirectly 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
- feat: add
graphicsContextToSvg()for Graphics → SVG export by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11989- Adds
graphicsContextToSvg(source, precision?), a pure function that serializes aGraphicsorGraphicsContextto a self-contained SVG string. Supports rects, circles, ellipses, rounded rects, polygons, bezier/quadratic/arc paths, strokes, holes (viafill-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);
- Adds
- feat: add mask channel selection for sprite masks by @Zyie in https://github.com/pixijs/pixijs/pull/11987
setMask()gains achanneloption ('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
preferenceto accept an array of renderer types by @Zyie in https://github.com/pixijs/pixijs/pull/11963autoDetectRendererandApplication.initnow accept an array of renderer names forpreference, letting you restrict the fallback chain (e.g. disable WebGPU entirely) rather than only reorder it. A newRendererPreferencetype 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.domContainerRootby @carlos22 in https://github.com/pixijs/pixijs/pull/11974Applicationexposes a read-onlydomContainerRootgetter returning theHTMLDivElementthat wraps allDOMContainerelements, 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
widthoption toMeshRopeby @mehmetcanakbay in https://github.com/pixijs/pixijs/pull/11990MeshRopenow accepts an explicitwidthfor rope thickness, decoupling it from the texture's height. Omittingwidthpreserves the previoustexture.heightdefault.
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 https://github.com/pixijs/pixijs/pull/12011
renderer.generateTexture()accepts adefaultAnchoroption that's forwarded onto the producedTexture.RenderTexture.create()also gains atextureOptionsparameter to pass through fields likedefaultAnchorto the underlyingTexture.
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
- fix: stroke-only Graphics masks now render correctly on Canvas renderer by @DmitriyGolub in https://github.com/pixijs/pixijs/pull/11979
- fix: skip
_applyMipRangefor single-mip textures (iOS 18.0–18.1) by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11985 - fix: stale
TextureMatrixwhen pooled textures reuse the same reference by @GoodBoyDigital in https://github.com/pixijs/pixijs/pull/11997 - fix: unhandled actions in
GraphicsPath.transform()switch statement by @Zyie in https://github.com/pixijs/pixijs/pull/11996 - fix(VideoSource): avoid play/mediaReady recursion before video dimensions (#11133) by @satoren in https://github.com/pixijs/pixijs/pull/12009
- fix:
text.widthand word wrap returning incorrect values by @Zyie in https://github.com/pixijs/pixijs/pull/12007 - fix: handle literal
<characters inparseTaggedTextby @glennflanagan in https://github.com/pixijs/pixijs/pull/11972 - fix: move
CanvasFilterSystemto the filters module by @Zyie in https://github.com/pixijs/pixijs/pull/12014 - fix:
SplitTextbaseline mismatch whentagStylesused withlineHeightby @Zyie in https://github.com/pixijs/pixijs/pull/12008 - fix:
TilingSprite.tilePositiondivided by resolution when using Canvas renderer by @Zyie in https://github.com/pixijs/pixijs/pull/11957 - fix: move
CanvasFilterSystemto filters module by @Zyie in https://github.com/pixijs/pixijs/pull/12014 - fix(VideoSource): avoid play/mediaReady recursion before video dimensions by @satoren in https://github.com/pixijs/pixijs/pull/12009
- chore: bump
@xmldom/xmldomto 0.8.12 by @Zyie in https://github.com/pixijs/pixijs/pull/12016
- @mehmetcanakbay made their first contribution in https://github.com/pixijs/pixijs/pull/11990
- @DmitriyGolub made their first contribution in https://github.com/pixijs/pixijs/pull/11979
- @carlos22 made their first contribution in https://github.com/pixijs/pixijs/pull/11974
- @satoren made their first contribution in https://github.com/pixijs/pixijs/pull/12009
- @ksv90 made their first contribution in https://github.com/pixijs/pixijs/pull/12011
- @glennflanagan made their first contribution in https://github.com/pixijs/pixijs/pull/11972
v2.0.0-rc.2
- perf(code-splitting): reuse side effects evaluation state by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/13668
- perf: trace hook interception only pays off once global tracing is already on by @SyMind in https://github.com/web-infra-dev/rspack/pull/13689
- feat(create-rspack): modernize starter template configs by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13645
- feat(split-chunks): support enforceSizeThreshold option by @jaehafe in https://github.com/web-infra-dev/rspack/pull/13576
- feat(resolve): support
#/subpath alias import by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13633 - feat(create-rspack): reuse rspack config in rstest templates by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13666
- feat: enforce macro-generated implemented_hooks in debug builds by @SyMind in https://github.com/web-infra-dev/rspack/pull/13677
- feat: only apply require-* parser plugins to js-auto/js-dynamic by @SyMind in https://github.com/web-infra-dev/rspack/pull/13678
- feat: skip building side-effect-only imports in make by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/13688
- feat: add compiler.hooks.shouldRecord for NoEmitOnErrorsPlugin by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13630
- feat(cli): use jiti to load typescript config by @hardfist in https://github.com/web-infra-dev/rspack/pull/13690
- fix(browser): import napi symbols from binding by @CPunisher in https://github.com/web-infra-dev/rspack/pull/13641
- fix(core): fix cjs export function tree shaking by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/13643
- fix(config): tighten rule loader/use typings by @kyungilcho in https://github.com/web-infra-dev/rspack/pull/13514
- fix: add
@emnapi/coreand@emnapi/runtimeas dependencies by @CPunisher in https://github.com/web-infra-dev/rspack/pull/13665 - fix(loader): preserve additionalData in builtin loaders by @ahabhgk in https://github.com/web-infra-dev/rspack/pull/13661
- fix(cli): disable hmr in preview by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13669
- fix(hash): keep fullhash in sync with css-only content changes by @GiveMe-A-Name in https://github.com/web-infra-dev/rspack/pull/13491
- fix(watcher): flush pending events on unpause to prevent stuck files_data by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13603
- fix(watcher): filter stale FSEvents with mtime baseline comparison by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13610
- fix(rstest): respect importFunctionName when importDynamic is disabled by @9aoy in https://github.com/web-infra-dev/rspack/pull/13673
- fix: fix flaky wasm tests by @hardfist in https://github.com/web-infra-dev/rspack/pull/13655
- fix: support module external type in array externals by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/13663
- fix(mf): resolve version from parent package for secondary entry points by @davidfestal in https://github.com/web-infra-dev/rspack/pull/13636
- fix(wasm): fix browser e2e timeout by running @rspack/browser builds in a worker by @hardfist in https://github.com/web-infra-dev/rspack/pull/13687
- fix: Revert rstest importFunctionName feature when importDynamic is disabled by @9aoy in https://github.com/web-infra-dev/rspack/pull/13699
- refactor(concatenated-module): reduce clone overhead by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/13642
- refactor: replace expect("TODO") with descriptive error messages by @jaehafe in https://github.com/web-infra-dev/rspack/pull/13685
- docs: clarify v2 migration package upgrades by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13664
- docs: supplement preserveModules documentation by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/13659
- docs: use detectSyntax in swc-loader examples by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13672
- docs: document package.json imports resolution by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13686
- docs: clarify externals configuration by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13692
- docs: correct several config option types by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13694
- docs: improve library.type and ESM output docs by @JSerFeng in https://github.com/web-infra-dev/rspack/pull/13648
- chore: release 2.0.0-rc.1 by @LingyuCoder in https://github.com/web-infra-dev/rspack/pull/13625
- chore(ci): reduce Linux Node.js matrix to save CI resources by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13657
- chore: bump @rslint/core to 0.4.0 by @fansenze in https://github.com/web-infra-dev/rspack/pull/13658
- chore(deps): update Rslib 0.21.0 by @Timeless0911 in https://github.com/web-infra-dev/rspack/pull/13650
- chore(ci): add node 24 to release canary and debug workflows by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13656
- chore: using codspeed bench scan dependencies by @SyMind in https://github.com/web-infra-dev/rspack/pull/13400
- feat: Add support for assigning numbers in
beforeModuleIdshook by @hamlim in https://github.com/web-infra-dev/rspack/pull/13222 - test(swc-loader): use detectSyntax auto in test configs by @chenjiahan in https://github.com/web-infra-dev/rspack/pull/13667
- chore(ci): use unique job IDs in bench workflows to avoid CodSpeed data loss by @stormslowly in https://github.com/web-infra-dev/rspack/pull/13542
- chore(deps): update dependency create-rstack to v1.9.1 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13676
- chore(deps): update dependency axios to ^1.15.0 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13675
- chore(deps): update dependency cspell to ^9.8.0 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13682
- chore(deps): update dependency heading-case to ^1.1.0 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13683
- chore(deps): update patch npm dependencies by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13681
- chore(deps): update taiki-e/install-action digest to 0abfcd5 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13679
- chore(deps): update dependency jest-diff to ^30.3.0 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13684
- chore(deps): update dependency @rslint/core to v0.4.1 by @renovate[bot] in https://github.com/web-infra-dev/rspack/pull/13680
- @kyungilcho made their first contribution in https://github.com/web-infra-dev/rspack/pull/13514
- @davidfestal made their first contribution in https://github.com/web-infra-dev/rspack/pull/13636
Full Changelog: https://github.com/web-infra-dev/rspack/compare/v2.0.0-rc.1...v2.0.0-rc.2
tdesign-vue-next@1.19.1
Dropdown@RSS1102 (#6600)- 修复
panelTopContent和panelBottomContent默认不跟随面板内容滚动的问题 - 修复多层下拉菜单配置 panelTopContent 后渲染位置错误的问题
- 修复
Menu: 修复1.19.0版本更新导致部分菜单使用场景渲染异常的问题 @uyarn (#6602)Slider: 修复 label 值为 function 类型时控制台警告 @liweijie0812 (#6601)
Dropdown@RSS1102 (#6600)- Fixed an issue where panelTopContentand panelBottomContentdo not scroll with panel content by default.
- Fixed incorrect rendering position of multi-level dropdown menus when panelTopContentis configured.
Menu: Fixed an issue where rendering of certain menu elements was incorrect after the1.19.0update @uyarn (#6602)Slider: Fixed a console warning that occurred when the label value was of function type @liweijie0812 (#6601)
Release 2026-04-13 23:31
Release 2026-04-13 23:31
- router-core: avoid intermediate success state for async notFound (#7184) (16f6892d6b) by @schiller-manuel
- @tanstack/react-router@1.168.21
- @tanstack/react-start@1.167.39
- @tanstack/react-start-client@1.166.38
- @tanstack/react-start-rsc@0.0.18
- @tanstack/react-start-server@1.166.39
- @tanstack/router-cli@1.166.33
- @tanstack/router-core@1.168.15
- @tanstack/router-generator@1.166.32
- @tanstack/router-plugin@1.167.22
- @tanstack/router-vite-plugin@1.166.37
- @tanstack/solid-router@1.168.19
- @tanstack/solid-start@1.167.35
- @tanstack/solid-start-client@1.166.35
- @tanstack/solid-start-server@1.166.36
- @tanstack/start-client-core@1.167.17
- @tanstack/start-plugin-core@1.167.34
- @tanstack/start-server-core@1.167.19
- @tanstack/start-static-server-functions@1.166.33
- @tanstack/start-storage-context@1.166.29
- @tanstack/vue-router@1.168.19
- @tanstack/vue-start@1.167.35
- @tanstack/vue-start-client@1.166.35
- @tanstack/vue-start-server@1.166.36
Release 2026-04-13 23:10
Release 2026-04-13 23:10
- docs: correct server function name in example (#7173) (f1a4973d41) by @MoonBrillante
- stabilize tests (#7185) (c3d525924d) by @schiller-manuel
- @tanstack/react-router@1.168.20
- @tanstack/react-start@1.167.38
- @tanstack/react-start-client@1.166.37
- @tanstack/react-start-rsc@0.0.17
- @tanstack/react-start-server@1.166.38
v7.14.1
See the changelog for release notes: https://github.com/remix-run/react-router/blob/main/CHANGELOG.md#v7141