Release Notes > 6.4.0
Webiny 6.4.0 Changelog
See what's new in Webiny version 6.4.0
Headless CMS
CMS Models Cache Now Includes Plugin-Registered Models (#5208
)
When listing CMS content models, plugin-registered models were fetched outside the cache boundary. Even when the cache was warm, every request triggered a fresh plugin model lookup. Plugin models are now fetched inside the cache boundary along with database models, so a cache hit returns the complete merged list without any additional lookups.
Added Revision Description Field (#5165
)
Content model entry revisions can now include a description. When an entry is published, the revision description is stored alongside the revision metadata, making it easier to track what changed between versions.
AI Personas and Projects for Content Generation (#5194
,#5202
)
The AI Powerups package now supports configurable personas and file-backed project contexts that shape AI-generated content tone and audience targeting.
Personas are presets with a name, description, and style that influence how the AI generates content. Projects are file-backed contexts with token budget validation, version-tracked caching, and default persona bindings. Together, they let you define consistent content guidelines for different brands, audiences, or content types.
The implementation uses a manifest-based approach where the AI model fetches project files on demand via a read_project_file tool instead of receiving all content upfront. Generation results now include telemetry data (files read, cache hits, tool calls made, total steps) in the websocket response.
Additionally, the AiImageEnrichment functionality was moved from api-file-manager to ai-powerups to resolve a circular package dependency.
Fixed Ordered List Numbering in Lexical Editor (#5194
)
Ordered list items now get correct sequential numbering when importing HTML content into the Lexical rich text editor. Previously, imported lists could display incorrect numbers.
Webiny SDK
Removed Standalone Entity Type Exports (#5152
)
Standalone domain entity types are no longer exported from @webiny/sdk. Types such as FmFile, CmsEntryData, TaskStatus, and similar low-level shapes have been removed from the public API. Method parameter types, result wrappers, and input/filter types remain exported. Consumers should rely on TypeScript inference to obtain entity shapes from method return types rather than importing these internal types directly.
WebSockets Service Now Exported Fromwebiny/api(#5203
)
The Websockets service abstraction was not previously accessible from the main webiny/api entry point, requiring deep imports to use it in custom API routes. It can now be imported directly and injected as a dependency into any Route implementation.
Website Builder
Read-Only Mode for Non-Draft Page Revisions (#5164
)
The Website Builder editor now opens published and previously published page revisions in read-only mode. Only draft revisions remain fully editable, preventing accidental modifications to live content.
Published Pages Open Clean URL From Pages List (#5151
)
Clicking the link icon next to a published page in the pages list now opens the page’s public URL without preview query parameters. Draft and unpublished pages continue to open the preview link with wb.* params.
Custom Query Parameters for Live Preview URLs (#5215
)
Previously, there was no way to inject custom query parameters into Website Builder’s live preview URLs without modifying framework code. You can now register a PreviewUrlModifier via the DI container to append any query parameters you need to all preview URLs — including asynchronously fetched values such as signed tokens.
The modifier applies to both the in-editor iframe URL and the page list preview links.
Fixed Model Registration and GraphQL Field Registry Bug (#5220
)
Website Builder page and redirect models were migrated to the ModelFactory pattern and their registrations moved to run before context plugins, matching the pattern used in other packages. Additionally, a bug was fixed where the CMS GraphQL field type registry could be constructed with no field type implementations, causing GraphQL input types to generate empty and produce a schema error.
Website Builder UI Improvements (#5160
)
This release includes various UI improvements to the Website Builder interface.
Admin
Added MultiSelect Component (#5200
)
A new MultiSelect component is now available in @webiny/admin-ui. It works like the existing Select component but allows picking multiple values via a checkbox dropdown. The trigger displays all selected labels inline by default; enable showSelectionCount to show a compact count summary instead (e.g. “3 items selected”).
Added Toggle and ToggleGroup Components (#5159
)
Two new form input components have been added to @webiny/admin-ui: Toggle, a button that switches between active and inactive states supporting text, icons, or both; and ToggleGroup, which groups multiple toggles for single or multi-select scenarios with an optional bordered container. Both components support primary, outline, ghost, and ghost-negative visual variants and integrate with the standard form validation and notes API.
Dialog Loading Overlay Now Covers the Entire Dialog (#5168
)
The loading spinner shown while a dialog action was in progress was being clipped, appearing only over the dialog body and cutting off at the footer. It now covers the full dialog surface, including the header and footer. The Dialog component gains a first-class loading prop (boolean | { text?: string }) that handles overlay rendering internally.
Fixed Audit Logs Infinite Scroll Discarding Previously Loaded Records (#5175
)
When scrolling through the audit logs list, loading more records replaced the current page instead of appending to it. Users could not scroll back to see earlier entries, and the scroll position jumped to the top on each page load. Previously loaded records are now accumulated across pages, and the scroll position is preserved when new entries are appended.
Fixed Dynamic Zone Template Gallery Bottom Spacing (#5166
)
The template picker modal in the Dynamic Zone field was cutting off the last row of template tiles. A missing bottom margin has been added so all templates are fully visible and accessible when scrolling.
Replaced File Picker Component (#5214
)
The legacy react-butterfiles library has been replaced with a new BrowserFilePicker component in @webiny/app-admin. The new component uses a presenter-based architecture with proper MIME type detection and size validation. This change affects file upload flows in the File Manager and CMS model import — no API changes are required, but the underlying implementation is now more robust.
Form Model Enhancements (#5194
)
The form model system now supports hiddenWhen conditional visibility, improved error handling via FormErrors and PresenterErrors, a multi-file picker field type, and better focus management.
Development
Upgraded Rsbuild and Rspack to V2 (#5167
)
The bundling toolchain used to build the Webiny Admin app and Lambda functions has been upgraded from Rsbuild v1 / Rspack v1 to Rsbuild v2 / Rspack v2, bringing improved performance, reduced installation size, and various upstream fixes.