Plone 6.1.0a3 released

Release notes for Plone 6.1.0a3

If you want to jump straight in, here are two important links:


Major changes since 6.1.0a2:

  • This release drops support for Python 3.8 and 3.9. We only support Python 3.10, 3.11, and 3.12.
  • plone.staticresources: Upgrade to TinyMCE 7 without any breaking changes in core Plone. If you have custom TinyMCE plugins, please check with Migrating from TinyMCE 6 to TinyMCE 7 | TinyMCE Documentation if you need to upgrade your code.
  • plonetheme.barceloneta:
    • TinyMCE 7.0. This is a version bump only. There are no CSS changes from TinyMCE 6 -> 7.
    • Remove deprecated SVG font resources

The rest of the changes are the same as for Plone 6.0.11, released yesterday, as there is still a lot of overlap between these versions:

  • mxdev: Fix for Python 3.12 virtual envs.
  • plone.namedfile, plone.formwidget.namedfile and Support for allowed media types.
    Support to constrain files to specific media types with an "accept" attribute on file and image fields, just like the "accept" attribute of the HTML file input. With this, allowed file types are checked already before uploading, while still also being checked on the server side.
  • Use label_css_class attribute from widget if available in checkbox_input and radio_input.
  • plone.namedfile: Improve contenttype detection logic for unregistered but common types. Change get_contenttype to support common types which are or were not registered with IANA, like image/webp or audio/midi.
  • Provide HCaptcha if plone.formwidget.hcaptcha is installed.
  • plone.base: Make the TinyMCE help and accordion plugins available as options.
    To really use this, you need an add-on, like collective.outputfilters.tinymceaccordion. But at least the options are available now.
  • plone.base and Add a field webstats_head_js to the Site controlpanel and render its contents in the head section using IHtmlHeadLinks viewlet manager. Reason: some javascript needs to be loaded at the bottom of the page, and some in the head section.
  • plone.recipe.zope2instance: Add support for setting max_value_length in Sentry init. When you use this option, you should use sentry-sdk 1.29.0 or higher.
  • plone.restapi: Add available languages information and the site timezone to the @site endpoint.
  • lxml: Upgraded from version 4.9.4 to 5.2.1. This could mean small differences in html. See the changelog. If you get wrong results, maybe because Diazo theming rules are parsed differently, it should be fine to downgrade, but version 4 is not maintained anymore.
  • Products.PortalTransforms: Use Cleaner from new package lxml_html_clean.
    This was factored out from lxml in version 5.2.0. See

Volto frontend

The default frontend for new Plone 6 sites is Volto.
Note that this is a JavaScript frontend that you need to run in a separate process with NodeJS.

Latest release is 17.15.5. See the changelog.
You can also try Volto 18.0.0-alpha.28. Most likely, the first final release of Plone 6.1 will use Volto 18.

Classic UI

The HTML based and server side rendered UI that was present in Plone 5.2 and earlier major Plone releases is still available and has also been updated and improved upon in Plone 6.0 and 6.1. Our documentation now refers to this frontend as 'Classic UI'.


As we are still in the alpha stage, we are not yet creating plone-backend Docker images.

Python compatibility

This release supports Python 3.10, 3.11, and 3.12.

pip, buildout, setuptools

In Plone core we use these versions to install Plone:


In general you are free to use whatever versions work for you, but these worked for us.


For installation instructions, see the documentation.


If you find any issues, please report them in the main issue tracker.


You should use 5.0.9 to fix an encoding problem, at least visible in Classic UI in the folder contents. See When calling the html serializer pass an encoding by ale-rt · Pull Request #239 · plone/ · GitHub

Since Plone 6.1.0a3 is an alpha release, I am not creating a new Plone release for this. If you are using an alpha, you probably know how to update the version of a single package.