# phaser v4.1.0 — Phaser v4.1.0 - Product: phaser (https://whatsnew.fyi/product/phaser) - Vendor: phaserjs - Date: 2026-04-30 - Version: v4.1.0 - Original notes: https://github.com/phaserjs/phaser/releases/tag/v4.1.0 - Permalink: https://whatsnew.fyi/product/phaser/releases/v4.1.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — RenderConfig#mipmapRegeneration option allows certain framebuffer-based objects to use mipmaps if the game is configured to use mipmaps - **added** — Layer is now a true GameObject - **added** — Base filter Controller now has getPaddingCeil() method which returns the ceiling of the current padding - **changed** — Filter controllers should use getPaddingCeil() instead of getPadding() for custom render nodes - **fixed** — Fix reversions in rounded rectangle handling - **fixed** — Remove duplicate function definition and exposed internal code docs from RectangleCanvasRenderer - **fixed** — Fix duplicate texture name resulting from RenderTexture#saveTexture - **fixed** — Fix framebuffers in filters and DynamicTextures using mipmaps incorrectly - **fixed** — Fix lack of default export in ESM build - **fixed** — Fix lack of Class and LOG_VERSION export in ESM build - **fixed** — Fix Utils.Array.GetRandom often returning null if only startIndex was specified ##### Version 4.1.0 - Salusa - 30th April 2026 ###### New Features - `RenderConfig#mipmapRegeneration` option allows certain framebuffer-based objects to use mipmaps if the game is configured to use mipmaps. This has a cost because mipmaps must be recreated after every change. Currently it only applies to DynamicTextures; Filters cannot render mipmaps. Thanks @Flow! - `Layer` is now a true `GameObject`. This fixes numerous small inconsistencies, and some big issues such as Filters not working. Thanks @rexrainbow for reporting the initial issue! - The base filter `Controller` now has `getPaddingCeil()`, which returns the ceiling of the current padding. This is mostly used internally to avoid quality loss from fractional padding. If your code calls `getPadding()` on a filter controller (typically in a custom render node), you should replace it with `getPaddingCeil()`. ###### Fixes - Fix reversions in rounded rectangle handling. Thanks @laineus! - Remove duplicate function definition and exposed internal code docs from `RectangleCanvasRenderer`. - Fix duplicate texture name resulting from `RenderTexture#saveTexture`. Thanks @UnaiNeuronUp! - Fix framebuffers (in filters and DynamicTextures) using mipmaps incorrectly. Now filters do not render with mipmaps. Thanks @Flow! - Fix lack of default export in ESM build. Thanks @kibertoad! - Fix lack of Class and LOG_VERSION export in ESM build. Thanks to many users including @Flow and @rex for helping investigate this! - Fix `Utils.Array.GetRandom` often returning `null` if only `startIndex` was specified. Now it always returns an array element if part of the array is within range, as documented.