or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

application.mdcomponent-extension.mdhooks.mdindex.mdjsx-elements.mdroot-creation.md
tile.json

tessl/npm-pixi--react

React integration for PixiJS enabling declarative 2D graphics programming with JSX and React patterns.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@pixi/react@8.0.x

To install, run

npx @tessl/cli install tessl/npm-pixi--react@8.0.0

index.mddocs/

@pixi/react

@pixi/react is a React integration library for PixiJS that enables declarative 2D graphics programming using JSX. It bridges React's component-based architecture with PixiJS's high-performance 2D graphics rendering, providing hooks, components, and a type-safe API for building interactive graphics applications.

Package Information

  • Package Name: @pixi/react
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install pixi.js@^8.2.6 @pixi/react

Core Imports

import { Application, createRoot, extend } from "@pixi/react";
import { useApplication, useTick, useExtend } from "@pixi/react";

For CommonJS:

const { Application, createRoot, extend, useApplication, useTick, useExtend } = require("@pixi/react");

Type imports:

import type { ApplicationRef, PixiElements, PixiReactElementProps, UnprefixedPixiElements } from "@pixi/react";

Basic Usage

import { Application, extend } from "@pixi/react";
import { Container, Graphics } from "pixi.js";
import { useCallback } from "react";

// Register PixiJS components for JSX usage
extend({ Container, Graphics });

const MyComponent = () => {
  const drawCallback = useCallback((graphics) => {
    graphics.clear();
    graphics.setFillStyle({ color: "red" });
    graphics.rect(0, 0, 100, 100);
    graphics.fill();
  }, []);

  return (
    <Application>
      <pixiContainer x={100} y={100}>
        <pixiGraphics draw={drawCallback} />
      </pixiContainer>
    </Application>
  );
};

Architecture

@pixi/react is built around several key components:

  • Component Extension System: The extend() function registers PixiJS classes for JSX usage, enabling selective imports
  • React Integration: Full React lifecycle support with context, refs, and hooks
  • Reconciler: Custom React reconciler manages PixiJS display objects as React components
  • Type System: Complete TypeScript integration with type-safe JSX elements for all PixiJS components
  • Hook System: React hooks for accessing application state, ticker integration, and dynamic component registration

Capabilities

Application Component

Root component that creates and manages a PixiJS Application with React lifecycle integration. Handles canvas creation, application initialization, and context provision.

interface ApplicationProps extends BaseApplicationProps, Partial<ApplicationOptions> {
  className?: string;
  children?: PixiReactChildNode;
  defaultTextStyle?: TextStyle | TextStyleOptions;
  extensions?: (ExtensionFormatLoose | any)[];
  onInit?: (app: Application) => void;
  resizeTo?: HTMLElement | Window | RefObject<HTMLElement | null>;
}

const Application: React.ForwardRefExoticComponent<ApplicationProps & React.RefAttributes<ApplicationRef>>;

Application Component

Root Creation

Imperative API for creating PixiJS React roots, useful for custom integration scenarios and programmatic application management.

function createRoot(
  target: HTMLElement | HTMLCanvasElement,
  options?: CreateRootOptions
): Root;

interface CreateRootOptions {
  onInit?: (app: PixiApplication) => void;
}

interface Root {
  render(children: ReactNode, applicationOptions: ApplicationOptions): Promise<PixiApplication>;
}

Root Creation

Component Extension

System for registering PixiJS components for JSX usage, enabling selective imports and bundle size optimization.

function extend(objects: { [key: string]: new (...args: any) => any }): void;

Component Extension

React Hooks

Collection of hooks for accessing PixiJS application state, integrating with the ticker system, and dynamically extending components.

function useApplication(): ApplicationState;
function useTick<T>(options: TickerCallback<T> | UseTickOptions<T>): void;
function useExtend(objects: Parameters<typeof extend>[0]): void;

React Hooks

JSX Elements

Type-safe JSX elements for all PixiJS components, supporting both prefixed (pixiContainer) and unprefixed (container) usage patterns.

interface PixiElements extends PrefixedPixiElements {}

type PixiReactElementProps<T extends new (...args: any) => any> =
  BaseNodeProps<InstanceType<T>>
  & GraphicsProps<InstanceType<T>>
  & EventHandlers
  & ConstructorOptions<T>;

JSX Elements

Types

interface ApplicationRef {
  getApplication(): PixiApplication | null;
  getCanvas(): HTMLCanvasElement | null;
}

interface ApplicationState {
  app: PixiApplication;
  isInitialised: boolean;
  isInitialising: boolean;
}

interface UseTickOptions<T> {
  callback: TickerCallback<T>;
  context?: T;
  isEnabled?: boolean;
  priority?: number;
}

type PixiReactChildNode = BasePixiReactNode | Iterable<BasePixiReactNode> | ReactNode;