Upgrade to Nextcloud 26
Critical changes were collected on GitHub. See the original ticket for links to the pull requests and tickets.
Make sure your
appinfo/info.xml allows for Nextcloud 26.
<dependencies> <nextcloud min-version="23" max-version="26" /> </dependencies>
Personal settings section Groupware moved to Availability
Up to Nextcloud 25 there had been a settings section Groupware with the ID
groupware. As of Nextcloud 26 this section doesn’t exist anymore. Existing server settings were moved to a new section Availability/
If your app provides groupware-related settings, see if they make can be shown on the Availability page or need a new app-provided section.
OC.addTranslationswas deprecated since Nextcloud 17 and is now removed.
The “app icons” background (https://github.com/nextcloud/server/blob/stable25/core/img/background.png and https://github.com/nextcloud/server/blob/stable25/core/img/background.svg) is not used anymore and will be removed (was only used on login page, where we now use the “clouds” background).
Bootstrap removed: The shipped bootstrap was only used for tooltips since ages but shipped and therefore available globally. Because the version we shipped is now EOL, we decided to remove it instead of bringing in a breaking update. For any tootltip it is recommended to just switch to the native
title=HTML attribute. (PR#36434 by nickvergessen)
In this release support for PHP7.4 was dropped. Make sure your app compatible with PHP8.0 or higher.
In this release support for PHP8.2 was added. See release notes from PHP about new deprecations.
Migration from PHPDoc annotations to native PHP attributes
Nextcloud 26 supports PHP8.0 and later. This allows the migration from PHPDoc annotations to native attributes.
@UseSessionshould be replaced with
@UseSessionwill be removed in a future release. See Reading and writing session variables.
Planned removal of PSR-0 class loading
Nextcloud is still loading classes that follow the long deprecated and replaced PSR-0 standard. Nextcloud 26 is the last version that register a generic PSR-0 class loader. From Nextcloud 27 on apps have to either change class file names to match PSR-4 or ship their own (composer) class loader for PSR-0 files or. (PR#36434 by ChristophWurst)
Dependency Injection Parameters
App container parameters with pascal case names
WebRoot are deprecated. Use the camel case variants
webRoot instead if you have them injected into one of your app classes.
OCP\Files\SimpleFS\ISimpleFile::getSize()may now return a float (to support sizes >2G on 32bit systems)
OCP\Files\SimpleFS\InMemoryFile::getSize()may now return a float (to support sizes >2G on 32bit systems)
It is not required anymore to call
setParsedMessageon notifications and activity events when setRichSubject and setRichMessage are used a parsed version is computed automatically. (PR#34807 by come-nc)
ICreateFromString::handleIMipMessage(string $name, string $calendarData): void;to its own Interface
IHandleImipMessage(PR#34893 by miaulalala)
- Signatures of methods of
OCP\AppFramework\Db\Entitychanged as follows (ref):
public static function fromParams(array $params) -> public static function fromParams(array $params): static
public static function fromRow(array $row) -> public static function fromRow(array $row): static
protected function setter($name, $args) -> protected function setter(string $name, array $args): void
protected function getter($name) -> protected function getter(string $name): mixed
protected function markFieldUpdated($attribute) -> protected function markFieldUpdated(string $attribute): void
- Signatures of methods of
Middlewares can be registered globally (see Global Middlewares, PR#36310 by ChristophWurst)
OCP\BackgroundJob\IJobList::getAllmethod was removed (PR#36073 by come-nc)
php-ds/php-dswas removed (PR#36198 by kesselb)
OCP\Contacts\IManager::getAddressBooksmethod was removed (PR#34329 by come-nc)
OCP\Utilloglevel constants were removed (PR#34329 by come-nc)
nikic/php-parserwas removed (PR#36393 by kesselb)
OCP\AppFramework\Db\Mapperwas removed. You can easily migrate to
OCP\AppFramework\Db\QBMapper, which is doing the same thing using the query builder instead of string based queries. (PR#34490 by rullzer)
Deprecated classes of
OCP\Dashboardwere removed (PR#35966 by juliushaertl)
OCP\Authentication\Token\IProviderfor authentication providers: Created a new public interface
OCP\Authentication\Token\IProviderwith a method invalidateTokensOfUser to invalidate all tokens of a specific user.
OCP\Authentication\Token\IProvider. (PR#36033 by individual-it)
Auto-Submittedheader for emails: There now is a new method on the
IMessage::setAutoSubmitted(). With this method you can specify that an email was an automatic email or response, to allow mail servers to better detect if an out-of-office reply should be sent, better store/filter the emails and so on. Possible values are documented in the
OCP\Mail\Headers\AutoSubmittedinterface. (PR#36033 by bennet0496)
OCP\BackgroundJob\IJobList::getJobsIteratormethod was added (PR#36073)
OCP\BeforeSabrePubliclyLoadedEventevent dispatched on public webdav endpoints (it can be used just like
OCP\SabrePluginEventto inject additional Sabre plugins in apps for example) (PR#35789)
OCP\BackgroundJob\IJobList::getJobsmethod was deprecated (PR#36073)
Controller action annotation
@UseSessionis deprecated. Use new
UseSessionattribute instead (PR#36363 by ChristophWurst)
Notifications jQuery event deprecated: The
OCA.Notification.Actionevent of the notifications app is deprecated in favor of a
notifications:action:executedevent-bus event with (PR#728 by nickvergessen)