Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pixijs avatar

Pixijs Scene Text

  • 3k installs
  • 293 repo stars
  • Updated June 4, 2026
  • pixijs/pixijs-skills

pixijs-scene-text is a PixiJS v8 skill for Text, BitmapText, HTMLText, and split text animation with styling and performance guidance.

About

PixiJS 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.

  • Five text classes: Text, BitmapText, HTMLText, SplitText, SplitBitmapText.
  • Options-object constructors replace v7 positional args.
  • BitmapText for per-frame score and timer updates.
  • tagStyles for inline colored markup on Text and HTMLText.
  • Update cost table guides Text versus BitmapText choices.

Pixijs Scene Text by the numbers

  • 3,004 all-time installs (skills.sh)
  • +214 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #168 of 2,277 Frontend Development skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

pixijs-scene-text capabilities & compatibility

Capabilities
text class for high quality static labels · bitmaptext atlas updates without canvas redraw · htmltext rich markup via svg foreignobject · splittext and splitbitmaptext per character anim · tagstyles inline colored tag parsing · bitmapfont.install and msdf font guidance
Use cases
frontend · ui design
Pricing
Free
From the docs

What pixijs-scene-text says it does

All text classes use options-object constructors
SKILL.md
npx skills add https://github.com/pixijs/pixijs-skills --skill pixijs-scene-text

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3k
repo stars293
Security audit2 / 3 scanners passed
Last updatedJune 4, 2026
Repositorypixijs/pixijs-skills

Which PixiJS v8 text class should I use for styled labels, per-frame scores, or per-character animation?

Choose and configure PixiJS v8 text classes for labels, scores, HTML markup, and per-character animation.

Who is it for?

Game and canvas frontend developers rendering labels, scores, or animated text in PixiJS v8.

Skip if: Skip for non-Pixi text stacks, backend APIs, or scene graph basics without text needs.

When should I use this skill?

User asks about PixiJS Text, BitmapText, HTMLText, SplitText, tagStyles, or text update performance.

What you get

Correct text class, constructor options, and update pattern for the target label or animation.

  • BitmapText HUD components
  • optimized ticker-driven labels

Files

SKILL.mdMarkdownGitHub ↗

PixiJS has five text-rendering classes that cover different trade-offs between styling, performance, and animation. Text renders to a canvas for full CSS-style fidelity. BitmapText reads from a pre-generated atlas for cheap updates. HTMLText renders an HTML fragment via SVG <foreignObject> for rich markup. SplitText and SplitBitmapText wrap the first two classes and expose per-character, per-word, and per-line containers for animation.

Assumes familiarity with pixijs-scene-core-concepts. All text classes are leaf nodes; they cannot have children. Wrap multiple text instances in a Container to group them.

Quick Start

const text = new Text({
  text: "Hello PixiJS",
  style: {
    fontFamily: "Arial",
    fontSize: 36,
    fill: 0xffffff,
    stroke: { color: 0x4a1850, width: 5 },
    dropShadow: { color: 0x000000, blur: 4, distance: 6 },
  },
});

text.anchor.set(0.5);
text.x = app.screen.width / 2;
text.y = 40;

app.stage.addChild(text);

All text classes use options-object constructors; positional (string, style) from v7 is not supported.

Related skills: pixijs-scene-core-concepts (leaves, transforms), pixijs-assets (font loading), pixijs-performance (BitmapText tradeoffs), pixijs-color (FillInput for fill/stroke), pixijs-scene-graphics (gradients and patterns reused via FillInput).

Variants

VariantUse whenTrade-offsReference
TextHigh-quality static or infrequent-update labelsExpensive to update (canvas re-draw + GPU upload)references/text.md
BitmapTextScores, timers, gameplay labels, anything that changes every frameLimited styling; fixed glyph atlas; requires MSDF for crisp scalingreferences/bitmap-text.md
HTMLTextRich formatted text, mixed styles, real HTML tagsAsync rendering (one frame delay); similar update cost to Textreferences/html-text.md
SplitTextPer-character animation with rich stylingEach char is a full Text; expensive for long stringsreferences/split-text.md
SplitBitmapTextPer-character animation on long strings or dynamic contentInherits BitmapText limitations (glyph atlas, no MSDF-free crispness)references/split-bitmap-text.md

When to use what

  • "I need a styled static label"Text. Use for titles, menus, dialog, error messages. See references/text.md.
  • "I need a score or timer that updates every frame"BitmapText. Updates only reposition quads; no canvas re-draw. See references/bitmap-text.md.
  • "I need mixed formatting with `<b>`, `<i>`, `<br>`"HTMLText. Real HTML/CSS rendering via SVG. See references/html-text.md.
  • "I need inline colored tags like `<red>Warning:</red>`"Text or HTMLText with tagStyles. Both support it.
  • "I need to animate each character individually"SplitText for short strings, SplitBitmapText for long strings or many instances. See references/split-text.md / references/split-bitmap-text.md.
  • "I need CJK / Arabic / emoji-heavy text"Text or HTMLText. BitmapText fails because the glyph set is too large for a single atlas.
  • "I need a custom font" → Load via Assets.load({ src: 'font.woff2', data: { family: 'MyFont' } }) first, then set style.fontFamily: 'MyFont'. Works for Text and HTMLText.

Update cost comparison

Update triggerTextBitmapTextHTMLTextSplitTextSplitBitmapText
Changing .textHighVery lowHighVery high (N text re-renders)Low (N quad repositions)
Changing .styleHighMediumHighVery highMedium
Moving (.x, .y)FreeFreeFreeFreeFree
Rotating / scalingFreeFreeFreeFreeFree

"Free" = normal Container transform cost. "High" = new canvas draw + GPU upload. "Very low" = quad reposition only. Update strings that change per-frame only on BitmapText or SplitBitmapText.

Quick concepts

  • Options-object constructors. Every v8 text class uses new Text({ text, style, ... }). The v7 (string, style) form is removed.
  • `tagStyles`. Text and HTMLText support per-tag styling via style.tagStyles. Tags are only parsed when tagStyles has entries; otherwise < is treated literally.
  • `BitmapFont.install`. Pre-generates an atlas before you create any BitmapText. Without install, the first BitmapText with a new fontFamily generates the atlas lazily.
  • MSDF fonts. Multi-channel Signed Distance Field fonts stay sharp at any size. Generate with external tools (e.g., msdf-bmfont), load via Assets.load('font.fnt'). Requires import 'pixi.js/text-bitmap' in custom builds.

Common Mistakes

[HIGH] Updating Text.text every frame

Wrong:

app.ticker.add(() => {
  scoreText.text = `Score: ${score}`;
});

Correct:

const scoreText = new BitmapText({ text: "Score: 0", style });
app.ticker.add(() => {
  scoreText.text = `Score: ${score}`;
});

Every Text update re-rasterizes the whole string. Use BitmapText for any value that changes per-frame.

[HIGH] Positional constructor args

Wrong:

const text = new Text("Hello", { fontSize: 24 });

Correct:

const text = new Text({ text: "Hello", style: { fontSize: 24 } });

v8 removed the (string, style) form. All text classes use options objects.

[HIGH] Not importing pixi.js/text-bitmap in custom builds

Under skipExtensionImports: true or aggressive tree-shaking, Assets.load('font.fnt') silently returns raw data unless you add import 'pixi.js/text-bitmap'. The standard import { ... } from 'pixi.js' bundle includes the extension.

[MEDIUM] Adding children to a text instance

Every text class sets allowChildren = false. Wrap in a Container to group text with other content.

API Reference

Related skills

How it compares

Use pixijs-scene-text for per-frame HUD numbers; use standard PixiJS Text when rich styling or infrequent updates matter more than upload cost.

FAQ

Why avoid updating Text every frame?

Each Text update re-rasterizes the string; use BitmapText for per-frame values.

How create text in v8?

Use new Text({ text, style }) options objects; positional constructors were removed.

When use HTMLText?

When you need real HTML tags like bold, italic, or line breaks with CSS styling.

Is Pixijs Scene Text safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.