For the full list of changes, check out the Webiny 6.2.0external link release on GitHub.

Page Builder
anchor

Language Selector and Indicator for Page Creation (#5092external link)
anchor

When creating a new page, you now see a language selector dropdown in the “Create Page” dialog if multiple languages are configured. The selected language is automatically prepended to the page path. If only one language exists, it’s auto-assigned without showing the dropdown. A language code tag also appears in the page editor title bar and in the pages list table, making it easier to identify which language each page belongs to.

Page Translations (#5083external link,#5081external link)
anchor

You can now translate a page into a different language directly from the Pages list. Open a page’s options menu, click “Translate”, select a target language and destination folder, and confirm. The translated page copy is created with the appropriate language assignment and path prefixing, and the editor opens automatically.

Schedule Publishing From the Editor (#5059external link)
anchor

You can now schedule publish and unpublish actions for pages directly from the page editor, matching the scheduling functionality already available in the Headless CMS editor.

Webiny SDK
anchor

You can try all SDK methods interactively via the SDK Playground built into your Webiny project.

Newsdk.languagesModule (#5085external link)
anchor

A new languages namespace is now available in the SDK, providing methods to list and retrieve language configurations.

SDK Token Parameter Now Supports Async Token Providers (#5060external link)
anchor

The SDK’s token parameter previously only accepted a plain string. It now also accepts an async function that returns a token string, allowing the token to be refreshed on every request. This is useful in contexts where tokens expire, such as inside the admin app.

Headless CMS
anchor

Fixed Schedule Menu Item Crashing on New Unsaved Entries (#5069external link)
anchor

When creating a new content entry that had not yet been saved, the Schedule action in the editor menu would malfunction. The Schedule option now appears as disabled until the entry is saved.

Admin
anchor

Named Dialogs Infrastructure (#5083external link)
anchor

A new named dialogs system is available in @webiny/app-admin. Dialogs can be registered via AdminConfig.Dialog, triggered with useOpenDialog(), and consumed with useDialog(). Dialogs mount on open and unmount on close, eliminating render overhead when dialogs are not visible.

Folder Picker Component (#5083external link)
anchor

A reusable FolderPicker component is now available in @webiny/app-aco for selecting folders in forms. It renders a folder tree and returns the selected folder ID.

Languages Module (#5081external link)
anchor

A new @webiny/languages package provides language management capabilities with GetLanguageByCode and ListLanguages use cases, an admin UI for managing language entries, and security permissions integration.

Development
anchor

Consolidated API Exports to Root (#5080external link,#5064external link)
anchor

Commonly used API abstractions like Logger, BuildParams, EventPublisher, KeyValueStore, and DomainEvent can now be imported directly from webiny/api:

The old sub-path imports (e.g. webiny/api/logger) are now deprecated and will be removed in a future release.

Introduced theApi.RouteExtension (#5066external link)
anchor

You can now register custom REST routes on the API Gateway and GraphQL Lambda directly from webiny.config.tsx using the Api.Route extension. Route handlers are classes with full dependency injection support:

Injectable Permissions With Domain/Features Layer Separation (#5076external link)
anchor

Permission handling has been refactored to use a three-layer structure: domain/permissionsSchema.tsfeatures/permissions/abstractions.tsfeatures/permissions/feature.ts. The new createPermissionsAbstraction and createPermissionsFeature factories replace the monolithic createPermissions approach, and all admin and API packages have been migrated to DI-backed permissions.

Endpoint-Agnostic GraphQL Client (#5073external link)
anchor

The low-level GraphQLClient is now endpoint-agnostic—endpoint is a required field on each request. Two new abstractions are available: MainGraphQLClient (points to the main GraphQL API) and CmsGraphQLClient (points to /cms/manage). This ensures all GraphQL requests travel through the same client infrastructure.

Webiny Version Displayed During Deploy (#5058external link)
anchor

The Webiny version is now printed when running yarn webiny deploy, making it easier to verify which version is being deployed.

Fixed ExtensionsrcProps Accepting Directory Paths (#5055external link)
anchor

Providing a folder path instead of a file path in an extension’s src prop would silently pass validation and then fail later with a confusing error. Extension src props now immediately reject directory paths with a clear message.

Infrastructure
anchor

Added Custom Domain Support for the API CloudFront Distribution (#5068external link)
anchor

You can now configure custom domains and an ACM SSL certificate for the API directly in webiny.config.tsx using the new Infra.Api.CustomDomains extension:

This matches the existing Infra.Admin.CustomDomains extension for the Admin app.