Upgrade to Nextcloud 26
Note
Critical changes were collected on GitHub. See the original ticket for links to the pull requests and tickets.
General
info.xml
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/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.
Front-end changes
Removed APIs
- 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)
Back-end changes
PHP7.4
In this release support for PHP7.4 was dropped. Make sure your app compatible with PHP8.0 or higher.
PHP8.2
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- #[UseSession].- @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 AppName, UserId and WebRoot are deprecated. Use the camel case variants appName, userId and webRoot instead if you have them injected into one of your app classes.
Changed APIs
- 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 - setParsedSubjectand- setParsedMessageon notifications and activity events when setRichSubject and setRichMessage are used a parsed version is computed automatically. (PR#34807 by come-nc)
- Moved - 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) 
Removed APIs
- OCP\BackgroundJob\IJobList::getAllmethod was removed (PR#36073 by come-nc)
- 3rdparty dependency - 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)
- 3rdparty dependency - nikic/php-parserwas removed (PR#36393 by kesselb)
- Deprecated - 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)
Added APIs
- New - 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.- OC\Authentication\Token\Managerimplements- OCP\Authentication\Token\IProvider. (PR#36033 by individual-it)
- Auto-Submittedheader for emails: There now is a new method on the- OCP\Mail\IMessageinterface- 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)
- New - 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)
Deprecated
- 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)