# Final releases of 31.0.9 and 30.0.15

**URL:** <https://help.nextcloud.com/t/final-releases-of-31-0-9-and-30-0-15/231925>\
**Category:** 🎁 Releases\
**Tags:** app\_api, nc30, nc31\
**Created:** [September 11, 2025, 7:24pm UTC](https://help.nextcloud.com/t/final-releases-of-31-0-9-and-30-0-15/231925 "2025-09-11T19:24:48Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Altahrim](https://help.nextcloud.com/letter_avatar/altahrim/32/5_5575768a8748004e209b776fc1b2916d.png) [@Altahrim](https://help.nextcloud.com/u/Altahrim)\
**Post date:** [September 11, 2025, 7:24pm UTC](https://help.nextcloud.com/t/final-releases-of-31-0-9-and-30-0-15/231925/1 "2025-09-11T19:24:48Z")

</div>

🚀 Final releases of `31.0.9` and `30.0.15` are now available!

## Download

- [Release `31.0.9` on GitHub](https://github.com/nextcloud-releases/server/releases/tag/v31.0.9)

- [Release `30.0.15` on GitHub](https://github.com/nextcloud-releases/server/releases/tag/v30.0.15)

## Changelogs

### 31.0.9

### [server](https://github.com/nextcloud/server)

- [Fix: rework UploadFolder implementation (server#51063)](https://github.com/nextcloud/server/pull/51063)
- [Fix(CardDAV): do not ignore move command object target uri (server#54201)](https://github.com/nextcloud/server/pull/54201)
- [Feat(cardav): support result truncation for addressbook federation (server#54276)](https://github.com/nextcloud/server/pull/54276)
- [Fix(trash): Fix order of metadata deletion (server#54320)](https://github.com/nextcloud/server/pull/54320)
- [Enh(unified-search): Smarter load more (server#54333)](https://github.com/nextcloud/server/pull/54333)
- [Fix(files): drop usage of FileInfoModel (server#54355)](https://github.com/nextcloud/server/pull/54355)
- [Fix(maintenance): refresh page when turned off (sometimes) (server#54359)](https://github.com/nextcloud/server/pull/54359)
- [Fix: increase how long we cache display names (server#54361)](https://github.com/nextcloud/server/pull/54361)
- [Fix(settings): add missing AI icon (server#54365)](https://github.com/nextcloud/server/pull/54365)
- [Fix(files\_sharing): Implement conditional federation placeholder (server#54369)](https://github.com/nextcloud/server/pull/54369)
- [Fix(installer): ensure valid tempFile & extractDir (server#54373)](https://github.com/nextcloud/server/pull/54373)
- [Fix: Fix getting trusted server other than the first (server#54381)](https://github.com/nextcloud/server/pull/54381)
- [Fix(ZipFolderPlugin): set mtime of directories in archive (server#54412)](https://github.com/nextcloud/server/pull/54412)
- [Fix(search): Fix SearchComposer.php filtering logic (server#54423)](https://github.com/nextcloud/server/pull/54423)
- [Perf: ignore any custom property in the nc/oc namespace that isn’t explicitly allowed (server#54425)](https://github.com/nextcloud/server/pull/54425)
- [Perf(calendar): Disable custom properties for individual calendar events (server#54427)](https://github.com/nextcloud/server/pull/54427)
- [Fix: use double / in strings (server#54478)](https://github.com/nextcloud/server/pull/54478)
- [Fix(files\_sharing): Also hide own reshares in shared with me section (server#54481)](https://github.com/nextcloud/server/pull/54481)
- [Fix(core): unified search is cut off on small window (server#54499)](https://github.com/nextcloud/server/pull/54499)
- [Fix(caldav): encode calendar URLs properly when formatting search results (server#54509)](https://github.com/nextcloud/server/pull/54509)
- [Feat(ocm): split ocm discovery and capabilities (server#54544)](https://github.com/nextcloud/server/pull/54544)
- [Change “core.ProfilePage.index” to lowercase (server#54547)](https://github.com/nextcloud/server/pull/54547)
- [Fix(AppManager): Argument must be of type array|object (server#54549)](https://github.com/nextcloud/server/pull/54549)
- [Fix(files\_sharing): sharing status action permission and sidebar await (server#54555)](https://github.com/nextcloud/server/pull/54555)
- [Fix: Fix unique constraint violation in oc\_vcategory migration (server#54572)](https://github.com/nextcloud/server/pull/54572)
- [Fix(files): filter non batch actions in header (server#54582)](https://github.com/nextcloud/server/pull/54582)
- [Fix: use appropriate user agent string when syncing Outlook calendar subscriptions (server#54585)](https://github.com/nextcloud/server/pull/54585)
- [Fix(sharing): fix json decoding the list of groups excluded from sharing (server#54596)](https://github.com/nextcloud/server/pull/54596)
- [Fix: Make some strings in CodeIntegrity.php translatable (server#54602)](https://github.com/nextcloud/server/pull/54602)
- [Chore(flake): Add haze (server#54604)](https://github.com/nextcloud/server/pull/54604)
- [Tests: Update testing certificates that expired after 10 years (server#54616)](https://github.com/nextcloud/server/pull/54616)
- [Fix(encryption): Fix TypeError when trying to decrypt unencrypted file (server#54628)](https://github.com/nextcloud/server/pull/54628)
- [Fix(files\_sharing): Correctly reject pending remote shares (server#54635)](https://github.com/nextcloud/server/pull/54635)
- [Add commands to set/get/delete/clear the distributed memcache (server#54641)](https://github.com/nextcloud/server/pull/54641)
- [Fix(carddav): IAddressBook::getKey() should return a string (server#54652)](https://github.com/nextcloud/server/pull/54652)
- [Fix(2fa): Fix 2FA session setup when ephemeral session is used (server#54663)](https://github.com/nextcloud/server/pull/54663)
- [Do not always check password checkbox when sharing without password (server#54668)](https://github.com/nextcloud/server/pull/54668)
- [Fix(caldav): show confidential event if writable (server#54676)](https://github.com/nextcloud/server/pull/54676)
- [Restore “Others with access” section (server#54680)](https://github.com/nextcloud/server/pull/54680)
- [Fix(AppConfig#setTypedValue): Catch AppConfigUnknownKeyException (server#54686)](https://github.com/nextcloud/server/pull/54686)
- [Fix(TaskProcessingApiController): Don’t allow anonymous access anymore (server#54702)](https://github.com/nextcloud/server/pull/54702)
- [Fix(trashbin): Fix errors in the log on MOVE operations (server#54704)](https://github.com/nextcloud/server/pull/54704)
- [Feat: allow filtering sharing:delete-orphan-shares by share owner or target (server#54710)](https://github.com/nextcloud/server/pull/54710)
- [Fix(deps): Update @nextcloud/vue to v8.29.2 (server#54714)](https://github.com/nextcloud/server/pull/54714)
- [Fix(files\_versions): retrieve all display names with one request (server#54720)](https://github.com/nextcloud/server/pull/54720)
- [Fix(files): verify files are still accessible before downloading (server#54724)](https://github.com/nextcloud/server/pull/54724)
- [Fix(files\_versions): Use helper function to get versions folder (server#54726)](https://github.com/nextcloud/server/pull/54726)
- [Fix(theming): use IAppConfig instead of IConfig to set theming config (server#54740)](https://github.com/nextcloud/server/pull/54740)
- [Fix: cast fileid to string in getMountsForFileId (server#54744)](https://github.com/nextcloud/server/pull/54744)
- [Fix(files\_versions): ensure IDs, Author and Label are strings (server#54767)](https://github.com/nextcloud/server/pull/54767)
- [Fix(status.php): Fix samesite cookies (server#54776)](https://github.com/nextcloud/server/pull/54776)
- [Fix: resolving conflict when uploading multiple files via drag&drop (server#54780)](https://github.com/nextcloud/server/pull/54780)
- [Chore(flake): update haze to 2.1.1 (server#54787)](https://github.com/nextcloud/server/pull/54787)
- [Fix: add missing listener (server#54808)](https://github.com/nextcloud/server/pull/54808)
- [Fix(dav): ensure moving or copying a file is possible (server#54815)](https://github.com/nextcloud/server/pull/54815)
- [Fix(dav): Mark removal of dav object properties as expensive (server#54824)](https://github.com/nextcloud/server/pull/54824)
- [Fix(comments): use showFile route to reference files with a matching … (server#54829)](https://github.com/nextcloud/server/pull/54829)
- [Fix(Filesystem): use FilenameValidator for `Filesystem::isFileBlacklisted` (server#54844)](https://github.com/nextcloud/server/pull/54844)
- [Fix dashboard icons (server#54845)](https://github.com/nextcloud/server/pull/54845)
- [Perf(users): Create lazy users in IUserManager::getSeenUsers (server#54849)](https://github.com/nextcloud/server/pull/54849)
- [Fix: the account files filter should also work in trashbin (server#54852)](https://github.com/nextcloud/server/pull/54852)
- [Fix(security): Update Expires time (server#54866)](https://github.com/nextcloud/server/pull/54866)
- [Fix(files\_trashbin): Fix size propagation when moving file to trash (server#54971)](https://github.com/nextcloud/server/pull/54971)
- [Chore: Use new REUSE format (server#54979)](https://github.com/nextcloud/server/pull/54979)
- [Revert “fix(files\_trashbin): Fix size propagation when moving file to trash” (server#54997)](https://github.com/nextcloud/server/pull/54997)

### [activity](https://github.com/nextcloud/activity)

- [Fix(dashboard): enable rounded icons (activity#2100)](https://github.com/nextcloud/activity/pull/2100)
- [Perf: pass the node of shares around instead getting the path from id each time (activity#2101)](https://github.com/nextcloud/activity/pull/2101)

### [app\_api](https://github.com/nextcloud/app_api)

- [Fix(Memcache-OccService): use “is\_array” to support “false” from “cache-\>get” (app\_api#634)](https://github.com/nextcloud/app_api/pull/634)

### [bruteforcesettings](https://github.com/nextcloud/bruteforcesettings)

- [Ci(github): Update workflows (bruteforcesettings#786)](https://github.com/nextcloud/bruteforcesettings/pull/786)

### [circles](https://github.com/nextcloud/circles)

- [Fix(dashboard): enable rounded item icons (circles#2087)](https://github.com/nextcloud/circles/pull/2087)
- [Fix(share): returns expiration date to front-end (circles#2091)](https://github.com/nextcloud/circles/pull/2091)
- [Fix: ignore empty expiration date (circles#2095)](https://github.com/nextcloud/circles/pull/2095)
- [Enh(loopback): ignore on occ (circles#2097)](https://github.com/nextcloud/circles/pull/2097)
- [Fix(share): extract expiration from cached data (circles#2105)](https://github.com/nextcloud/circles/pull/2105)
- [Fix federated teams with space-containing userid (circles#2114)](https://github.com/nextcloud/circles/pull/2114)
- [Fix: feed array (circles#2123)](https://github.com/nextcloud/circles/pull/2123)

### [files\_downloadlimit](https://github.com/nextcloud/files_downloadlimit)

- [Fix: keep track of download count (files\_downloadlimit#512)](https://github.com/nextcloud/files_downloadlimit/pull/512)

### [files\_pdfviewer](https://github.com/nextcloud/files_pdfviewer)

- [Chore: Update GitHub workflows from templates (files\_pdfviewer#1249)](https://github.com/nextcloud/files_pdfviewer/pull/1249)

### [firstrunwizard](https://github.com/nextcloud/firstrunwizard)

- [Fix: gracefully handle disabled autoplay policies (firstrunwizard#1667)](https://github.com/nextcloud/firstrunwizard/pull/1667)
- [Chore: adjust codeowners (firstrunwizard#1687)](https://github.com/nextcloud/firstrunwizard/pull/1687)

### [password\_policy](https://github.com/nextcloud/password_policy)

- [Ci(github): Update workflows (password\_policy#803)](https://github.com/nextcloud/password_policy/pull/803)

### [photos](https://github.com/nextcloud/photos)

- [Fix: Fallback to icon if collection cover fails to load (photos#3134)](https://github.com/nextcloud/photos/pull/3134)
- [Fix(deps): Update @nextcloud/sharing to ^0.2.5 (photos#3142)](https://github.com/nextcloud/photos/pull/3142)

### [related\_resources](https://github.com/nextcloud/related_resources)

- [Fix: add check if app is enabled for RelatedService (related\_resources#645)](https://github.com/nextcloud/related_resources/pull/645)
- [Chore(workflows): Update lint-php-cs workflow (related\_resources#647)](https://github.com/nextcloud/related_resources/pull/647)

### [suspicious\_login](https://github.com/nextcloud/suspicious_login)

- [Change attribute name “f1\_score” to “f1 score” due to RubixML change (suspicious\_login#1023)](https://github.com/nextcloud/suspicious_login/pull/1023)

### [text](https://github.com/nextcloud/text)

- [Chore(upgrade): mermaid and nextcloud/vue (text#7558)](https://github.com/nextcloud/text/pull/7558)
- [Fix(links): do not steal focus on initial loading (text#7602)](https://github.com/nextcloud/text/pull/7602)

### [updater](https://github.com/nextcloud/updater)

- [Feat: allow to provide manual URL (updater#643)](https://github.com/nextcloud/updater/pull/643)
- [Feat(download): allow to download archives from several URLs (updater#654)](https://github.com/nextcloud/updater/pull/654)

### [viewer](https://github.com/nextcloud/viewer)

- [Fix: sorting to align with files list (viewer#2935)](https://github.com/nextcloud/viewer/pull/2935)
- [Backport/2946/stable31 (viewer#2948)](https://github.com/nextcloud/viewer/pull/2948)
- [Fix: viewer files router in standalone mode (viewer#2952)](https://github.com/nextcloud/viewer/pull/2952)
- [Feat: only provide fonts which are available (shipped by us) (viewer#2957)](https://github.com/nextcloud/viewer/pull/2957)
- [Feat: add API package to register handlers in init scripts (viewer#2958)](https://github.com/nextcloud/viewer/pull/2958)

### 30.0.15

### [server](https://github.com/nextcloud/server)

- [Fix: rework UploadFolder implementation (server#51065)](https://github.com/nextcloud/server/pull/51065)
- [Enh(unified-search): Smarter load more (server#54334)](https://github.com/nextcloud/server/pull/54334)
- [Fix(maintenance): refresh page when turned off (sometimes) (server#54358)](https://github.com/nextcloud/server/pull/54358)
- [Fix(settings): add missing AI icon (server#54366)](https://github.com/nextcloud/server/pull/54366)
- [Fix(files\_sharing): Implement conditional federation placeholder (server#54368)](https://github.com/nextcloud/server/pull/54368)
- [Fix(installer): ensure valid tempFile & extractDir (server#54375)](https://github.com/nextcloud/server/pull/54375)
- [Fix: use the join function for merging davRootPath and path (server#54382)](https://github.com/nextcloud/server/pull/54382)
- [Fix: use double / in strings (server#54477)](https://github.com/nextcloud/server/pull/54477)
- [Fix(files\_sharing): Also hide own reshares in shared with me section (server#54489)](https://github.com/nextcloud/server/pull/54489)
- [Fix(core): unified search is cut off on small window (server#54498)](https://github.com/nextcloud/server/pull/54498)
- [Fix(caldav): encode calendar URLs properly when formatting search results (server#54508)](https://github.com/nextcloud/server/pull/54508)
- [Fix(AppManager): Argument must be of type array|object (server#54548)](https://github.com/nextcloud/server/pull/54548)
- [Fix(files\_sharing): sharing status action permission and sidebar await (server#54556)](https://github.com/nextcloud/server/pull/54556)
- [Fix(cron): Ignore time sensitivity when a class was explicitely scheduled (server#54566)](https://github.com/nextcloud/server/pull/54566)
- [Fix: Fix unique constraint violation in oc\_vcategory migration (server#54571)](https://github.com/nextcloud/server/pull/54571)
- [Fix: use appropriate user agent string when syncing Outlook calendar subscriptions (server#54584)](https://github.com/nextcloud/server/pull/54584)
- [Fix(sharing): fix json decoding the list of groups excluded from sharing (server#54595)](https://github.com/nextcloud/server/pull/54595)
- [Fix: Make some strings in CodeIntegrity.php translatable (server#54601)](https://github.com/nextcloud/server/pull/54601)
- [Chore(flake): Add haze (server#54603)](https://github.com/nextcloud/server/pull/54603)
- [Tests: Update testing certificates that expired after 10 years (server#54615)](https://github.com/nextcloud/server/pull/54615)
- [Fix(encryption): Fix TypeError when trying to decrypt unencrypted file (server#54629)](https://github.com/nextcloud/server/pull/54629)
- [Fix(files\_sharing): Correctly reject pending remote shares (server#54634)](https://github.com/nextcloud/server/pull/54634)
- [Add commands to set/get/delete/clear the distributed memcache (server#54642)](https://github.com/nextcloud/server/pull/54642)
- [Fix(carddav): IAddressBook::getKey() should return a string (server#54651)](https://github.com/nextcloud/server/pull/54651)
- [Fix(2fa): Fix 2FA session setup when ephemeral session is used (server#54662)](https://github.com/nextcloud/server/pull/54662)
- [Fix(caldav): show confidential event if writable (server#54675)](https://github.com/nextcloud/server/pull/54675)
- [Fix(AppConfig#setTypedValue): Catch AppConfigUnknownKeyException (server#54687)](https://github.com/nextcloud/server/pull/54687)
- [Chore: pin NPM to at least `^10.5.1` to prevent bugs with `corepack` (server#54696)](https://github.com/nextcloud/server/pull/54696)
- [Fix(TaskProcessingApiController): Don’t allow anonymous access anymore (server#54701)](https://github.com/nextcloud/server/pull/54701)
- [Fix(trashbin): Fix errors in the log on MOVE operations (server#54705)](https://github.com/nextcloud/server/pull/54705)
- [Feat: allow filtering sharing:delete-orphan-shares by share owner or target (server#54711)](https://github.com/nextcloud/server/pull/54711)
- [Fix(provisioning\_api): Allow group details access for users with admin delegation (server#54712)](https://github.com/nextcloud/server/pull/54712)
- [Fix(deps): Update @nextcloud/vue to v8.29.2 (server#54715)](https://github.com/nextcloud/server/pull/54715)
- [Fix(files\_versions): retrieve all display names with one request (server#54719)](https://github.com/nextcloud/server/pull/54719)
- [Fix(files\_versions): Use helper function to get versions folder (server#54725)](https://github.com/nextcloud/server/pull/54725)
- [Fix(files\_versions): ensure IDs, Author and Label are strings (server#54768)](https://github.com/nextcloud/server/pull/54768)
- [Fix: resolving conflict when uploading multiple files via drag&drop (server#54779)](https://github.com/nextcloud/server/pull/54779)
- [Chore(flake): update haze to 2.1.1 (server#54786)](https://github.com/nextcloud/server/pull/54786)
- [Fix: add missing listener (server#54807)](https://github.com/nextcloud/server/pull/54807)
- [Fix(dav): ensure moving or copying a file is possible (server#54814)](https://github.com/nextcloud/server/pull/54814)
- [Fix(dav): Mark removal of dav object properties as expensive (server#54823)](https://github.com/nextcloud/server/pull/54823)
- [Fix(comments): use showFile route to reference files with a matching … (server#54828)](https://github.com/nextcloud/server/pull/54828)
- [Fix(Filesystem): use FilenameValidator for `Filesystem::isFileBlacklisted` (server#54843)](https://github.com/nextcloud/server/pull/54843)
- [Perf(users): Create lazy users in IUserManager::getSeenUsers (server#54850)](https://github.com/nextcloud/server/pull/54850)
- [Fix: the account files filter should also work in trashbin (server#54851)](https://github.com/nextcloud/server/pull/54851)
- [Build(deps): Bump icewind/streams from 0.7.7 to 0.7.8 (server#54857)](https://github.com/nextcloud/server/pull/54857)
- [Fix(security): Update Expires time (server#54867)](https://github.com/nextcloud/server/pull/54867)
- [Chore: Use new REUSE format (server#54978)](https://github.com/nextcloud/server/pull/54978)

### [activity](https://github.com/nextcloud/activity)

- [Fix(dashboard): enable rounded icons (activity#2099)](https://github.com/nextcloud/activity/pull/2099)

### [app\_api](https://github.com/nextcloud/app_api)

- [Fix(Memcache-OccService): use “is\_array” to support “false” from “cache-\>get” (app\_api#635)](https://github.com/nextcloud/app_api/pull/635)

### [bruteforcesettings](https://github.com/nextcloud/bruteforcesettings)

- [Ci(github): Update workflows (bruteforcesettings#787)](https://github.com/nextcloud/bruteforcesettings/pull/787)

### [circles](https://github.com/nextcloud/circles)

- [Fix(dashboard): enable rounded item icons (circles#2086)](https://github.com/nextcloud/circles/pull/2086)
- [Fix(share): returns expiration date to front-end (circles#2104)](https://github.com/nextcloud/circles/pull/2104)
- [Fix: ignore empty expiration date (circles#2117)](https://github.com/nextcloud/circles/pull/2117)
- [Fix(share): extract expiration from cached data (circles#2119)](https://github.com/nextcloud/circles/pull/2119)
- [Fix: feed array (circles#2124)](https://github.com/nextcloud/circles/pull/2124)

### [files\_downloadlimit](https://github.com/nextcloud/files_downloadlimit)

- [Fix: keep track of download count (files\_downloadlimit#511)](https://github.com/nextcloud/files_downloadlimit/pull/511)

### [files\_pdfviewer](https://github.com/nextcloud/files_pdfviewer)

- [Chore: Update GitHub workflows from templates (files\_pdfviewer#1250)](https://github.com/nextcloud/files_pdfviewer/pull/1250)

### [firstrunwizard](https://github.com/nextcloud/firstrunwizard)

- [Chore: adjust codeowners (firstrunwizard#1688)](https://github.com/nextcloud/firstrunwizard/pull/1688)

### [password\_policy](https://github.com/nextcloud/password_policy)

- [Ci(github): Update workflows (password\_policy#804)](https://github.com/nextcloud/password_policy/pull/804)
- [Update symfony/process (password\_policy#805)](https://github.com/nextcloud/password_policy/pull/805)

### [photos](https://github.com/nextcloud/photos)

- [Fix: Fallback to icon if collection cover fails to load #3134 (photos#3135)](https://github.com/nextcloud/photos/pull/3135)

### [related\_resources](https://github.com/nextcloud/related_resources)

- [Fix: add check if app is enabled for RelatedService (related\_resources#644)](https://github.com/nextcloud/related_resources/pull/644)

### [updater](https://github.com/nextcloud/updater)

- [Feat: allow to provide manual URL (updater#644)](https://github.com/nextcloud/updater/pull/644)

### [viewer](https://github.com/nextcloud/viewer)

- [Fix: sorting to align with files list (viewer#2934)](https://github.com/nextcloud/viewer/pull/2934)
- [Backport/2946/stable30 (viewer#2949)](https://github.com/nextcloud/viewer/pull/2949)
- [Fix: viewer files router in standalone mode (viewer#2951)](https://github.com/nextcloud/viewer/pull/2951)
- [Fix(videos): ensure videos in public shares preserve the aspect ratio (viewer#2955)](https://github.com/nextcloud/viewer/pull/2955)
- [Feat: add API package to register handlers in init scripts (viewer#2959)](https://github.com/nextcloud/viewer/pull/2959)

---

<div class="post-metadata">

**Author:** ![system](https://help.nextcloud.com/user_avatar/help.nextcloud.com/system/32/29333_2.png) [@system](https://help.nextcloud.com/u/system)\
**Post date:** [September 14, 2025, 7:25pm UTC](https://help.nextcloud.com/t/final-releases-of-31-0-9-and-30-0-15/231925/2 "2025-09-14T19:25:38Z")

</div>

This topic was automatically closed after 3 days. New replies are no longer allowed.
