Kirby 2.5.0


A nasty little bug made its way into this release. Please use 2.5.1 instead to get the fixed version.


With Kirby 2.5.0 we fixed a lot of bugs and also introduced some nice litte features:

Highlights in 2.5.0

Importing field groups into blueprints

In Kirby 2.2.0 we introduced Global Field Definitions that allow you to import field definitions into your blueprints.

With Kirby 2.5.0 we extended that feature. It is now possible to import whole field groups. This is especially useful if a large number of blueprints all need a specific set of fields. You can define them once and import them everywhere.

Read more about this feature in the docs.

More flexible user handling

User objects are no longer required to have a password and an associated email address.
This is useful if you want to implement passwordless authentication (e.g. with OAuth, IndieAuth or SMS tokens).

There is also a new method called $user->loginPasswordless() which you can use to log in a Kirby user after you have manually authenticated the user.

Deleting pages with subpages in the Panel

If you are using the Modules plugin or if you are storing comments to your blog posts as subpages, you may have been in the situation that you wanted to delete a page with its subpages with one click in the Panel.

This was not possible until now. While this was a deliberate decision to make sure that whole page trees don't get deleted by accident, it was a pain for pages with modules, comments or other data in subpages.
Deleting page trees is now finally possible after confirming a warning message. Yay!

Performance improvements with thumb handling

The Panel now only cleans up thumbs after page and file operations (e.g. uploading a file, renaming a page) if that's necessary. This improves performance a lot for image-heavy sites.


  • Added support for importing whole field groups in blueprints
  • Pages with subpages can now be deleted after confirming a warning message #185
  • Better thumb cleaning rules #460
  • Updated translations
  • Added panel.favicon option
  • The list of entries of a Structure field can now be displayed with custom sorting and flipping #652 #722
  • The Select, Checkboxes and Radiobuttons fields now support options from a JSON file with a relative URL
  • Fields that get their options from a JSON file now only fetch the JSON file once per request #998
  • The Datetime field now supports the override option of the date and time fields #1051
  • Proper support for the 12 hour time format in the Datetime field #1046
  • Structure fields no longer require the title field
  • Hidden fields are no longer displayed in structure fields of type table
  • Several other fixes for the structure field
  • More clever thumb deletion on updates
  • Fixed Hide subpages option
  • Input list fields (checkboxes and radio) no longer have a clickable label #1032
  • Make sure that pages with the update option set to false can't be updated in the backend
  • The User field can no longer be configured to use a different set of options #1034


  • General support for passwordless login with the $user->loginPasswordless() method; having a password is no longer a requirement for a user #550
  • User objects are no longer required to have an associated email address #551
  • Updated Smartypants library
  • admin is no longer the default role to avoid permission/security issues with invalid roles; the new default is either editor (if no custom roles have been defined) or a new role without permissions (if custom roles exist) #569
  • Fixed issue where Kirby would output a misleading error message if the directory structure was invalid #549
  • The url option is now automatically corrected if there is an unnecessary trailing slash #564
  • The $users object can now be grouped with $users->groupBy() #577
  • Only get the response from cache if the request is a GET or HEAD request #559
  • Preserve (query) params when redirecting from /home to the site's home URL #573
  • Fixed multilang content fallback for files #575
  • Fixed infinite redirect on the homepage when language.detect is enabled #581


Our partners

CDN by KeyCDN Search by Algolia