Skip to content

Performance: Optimize property retrieval and authorization checks in collection views (closes #21367)#21470

Merged
AndyButland merged 17 commits intomainfrom
v17/improvement/optimize-collection-view-property-retrieval
Jan 26, 2026
Merged

Performance: Optimize property retrieval and authorization checks in collection views (closes #21367)#21470
AndyButland merged 17 commits intomainfrom
v17/improvement/optimize-collection-view-property-retrieval

Conversation

@AndyButland
Copy link
Contributor

@AndyButland AndyButland commented Jan 21, 2026

Description

The investigation and updates from this PR came from looking into the suggestion in this issue report #21367 around optimization of retrieving pages of content for collection views.

I found a few places where we could optimize:

  • Collection views often need only "system" properties (those that exists as specific fields in the node or content tables, such as name, created etc.), or, if they do need content properties, will only have a subset of them, and almost certainly small ones. So there's no need to load all properties for getting the data for this display.
  • We have no need for template information for documents in this display.
  • We are currently doing access checks per item, rather than batching up and authorising a page at a time.

I've addressed each of these in this PR.

Change Summary

  • Optimise collection view property retrieval to only load properties configured for display
  • Skip loading templates for collection view content (not needed)
  • Optimise authorisation checks to batch all items in a single operation instead of per-item queries

Property Retrieval Optimization

Collection views now only load the custom properties that are configured in the list view configuration, rather than loading all properties for each content item.

Template Retrieval Optimization

Collection views now no longer retrieve template information.

Authorization Performance Optimization

Previously, FilterItemsBasedOnAccessAsync looped through each item and called HasAccessToListViewItemAsync one by one, resulting in N separate authorization calls (and potentially N separate database queries) for N items on the page.

Before (20 items on collection view page):

  • 20 calls to IsDeniedAsync (per-item)
  • 20 calls to load full content/media items just to check paths
  • ~40+ database queries total

After:

  • 1 call to FilterAuthorizedAsync (batch)
  • 1 call to GetAllPaths (paths only, not full entities)
  • ~2-3 database queries total

Key changes:

  • ContentPermissionService and MediaPermissionService now use IEntityService.GetAllPaths() instead of loading full content/media items - we only need paths for authorization
  • Added new FilterAuthorizedAccessAsync methods to permission services for batch filtering
  • Added new FilterAuthorizedAsync methods to permission authorizers
  • Updated ContentListViewServiceBase to use batch authorization via FilterAuthorizedKeysAsync
  • Deprecated HasAccessToListViewItemAsync (scheduled for removal in V19)

Benchmarking

I ran some measurements on retrieving a page of list collection items, using a database with a collection view hosting many content items. Each item had only two properties - with more, I'd expect further benefits to the optimization around loading properties. Measurements are averages from loading a few pages one at a time, with one custom property on the collection view.

Current: 823ms
New (with property and template optimisations only): 736ms
New (with property, template and authorisation optimisation): 541ms

So around 34% improvement overall.

Testing

All existing integration tests should pass, in particular: Cannot_Get_List_View_Items_That_The_User_Does_Not_Have_Access_To which verifies the authorisation checks.

Manually should verify that the collection view loads and a hidden item is correctly restricted (I've done this).

Copilot AI review requested due to automatic review settings January 21, 2026 10:56
@AndyButland AndyButland changed the title Collection Views: Optimize property retrieval and authorization checks Performance: Optimize property retrieval and authorization checks in collection views Jan 21, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request optimizes collection view performance through three key improvements: selective property loading, batch authorization, and optional template loading.

Changes:

  • Adds propertyAliases parameter to content retrieval methods to load only configured properties instead of all properties
  • Replaces per-item authorization (N queries) with batch authorization (1-3 queries) using new FilterAuthorizedAsync methods
  • Adds loadTemplates parameter (defaulting to true) to skip loading templates when not needed, particularly for collection views

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/Umbraco.Core/Services/IContentService.cs Adds new GetPagedChildren overload with propertyAliases and loadTemplates parameters
src/Umbraco.Core/Services/ContentService.cs Implements new GetPagedChildren overload, marks old version obsolete
src/Umbraco.Core/Services/IContentPermissionService.cs Adds FilterAuthorizedAccessAsync for batch permission checking
src/Umbraco.Core/Services/ContentPermissionService.cs Implements batch authorization using GetAllPaths instead of loading full content items
src/Umbraco.Core/Services/IMediaPermissionService.cs Adds FilterAuthorizedAccessAsync for batch media permission checking
src/Umbraco.Core/Services/MediaPermissionService.cs Implements batch media authorization, removes dependency on IMediaService
src/Umbraco.Core/Security/Authorization/IContentPermissionAuthorizer.cs Adds FilterAuthorizedAsync interface method
src/Umbraco.Core/Security/Authorization/ContentPermissionAuthorizer.cs Implements FilterAuthorizedAsync by delegating to permission service
src/Umbraco.Core/Security/Authorization/IMediaPermissionAuthorizer.cs Adds FilterAuthorizedAsync interface method
src/Umbraco.Core/Security/Authorization/MediaPermissionAuthorizer.cs Implements FilterAuthorizedAsync by delegating to permission service
src/Umbraco.Infrastructure/Services/ContentListViewServiceBase.cs Adds FilterAuthorizedKeysAsync, extracts custom property aliases from config, uses batch authorization
src/Umbraco.Infrastructure/Services/Implement/ContentListViewService.cs Implements FilterAuthorizedKeysAsync using content permission authorizer
src/Umbraco.Infrastructure/Services/Implement/MediaListViewService.cs Implements FilterAuthorizedKeysAsync using media permission authorizer
src/Umbraco.Infrastructure/Services/Implement/ContentSearchServiceBase.cs Adds propertyAliases and loadTemplates parameters to SearchChildrenAsync
src/Umbraco.Infrastructure/Services/Implement/ContentSearchService.cs Implements new SearchChildrenAsync overload, passes parameters to ContentService
src/Umbraco.Infrastructure/Services/Implement/MediaSearchService.cs Implements new SearchChildrenAsync overload (loadTemplates ignored for media)
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs Adds GetPropertyCollections overload with propertyAliases filtering via SQL WHERE IN clause
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs Implements GetPage overload with propertyAliases and loadTemplates, filters properties at SQL level
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs Implements GetPage overload with propertyAliases (loadTemplates ignored)
src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs Implements GetPage overload with propertyAliases (loadTemplates ignored)
src/Umbraco.Core/Persistence/Repositories/IContentRepository.cs Adds GetPage method signature with propertyAliases and loadTemplates parameters
tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentServiceTests.cs Adds comprehensive tests for propertyAliases and loadTemplates parameters
Various test files Updates calls to GetPagedChildren and GetPage with new required parameters

@AndyButland
Copy link
Contributor Author

Thanks for the review @lauraneto - some good catches there. I've addressed your comments with the latest commits.

@AndyButland AndyButland merged commit 997df3d into main Jan 26, 2026
25 of 26 checks passed
@AndyButland AndyButland deleted the v17/improvement/optimize-collection-view-property-retrieval branch January 26, 2026 10:53
@AndyButland AndyButland changed the title Performance: Optimize property retrieval and authorization checks in collection views Performance: Optimize property retrieval and authorization checks in collection views (closes #21367) Jan 26, 2026
alexsee pushed a commit to alexsee/umbraco-container that referenced this pull request Feb 23, 2026
Updated [Umbraco.Cms](https://github.com/umbraco/Umbraco-CMS) from
17.1.0 to 17.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Umbraco.Cms's
releases](https://github.com/umbraco/Umbraco-CMS/releases)._

## 17.2.0

## What's Changed Since 17.2.0-rc2

### 📦 Dependencies
* build(deps): bumps @​umbraco-ui/uui to 1.17.0 by @​iOvergaard in
umbraco/Umbraco-CMS#21765

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc2...release-17.2.0

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc...release-17.2.0-rc2

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
 ... (truncated)

## 17.2.0-rc2

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc...release-17.2.0-rc2

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

 ... (truncated)

## 17.2.0-rc

## What's Changed

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

### 🧪 Testing
* E2E: QA Replaced unreliable Thread.Sleep(500) with a counter/gate
pattern that ensures both transactions are initialized before releasing
them to compete for locks by @​andr317c in
umbraco/Umbraco-CMS#21165
* E2E QA: Updated integration test that was missing directory setup by
@​andr317c in umbraco/Umbraco-CMS#21167
* E2E: QA Added acceptance tests for removing a not-found content picker
by @​nhudinh0309 in umbraco/Umbraco-CMS#21177
* E2E: QA Fixed failing tests for the current user profile by
@​nhudinh0309 in umbraco/Umbraco-CMS#21214
* Upgrade MSW from 1.3.5 to 2.12.4 by @​madsrasmussen in
umbraco/Umbraco-CMS#21096
* E2E: QA Added acceptance tests for rendering content with invariant
blocks by @​nhudinh0309 in
umbraco/Umbraco-CMS#21180
* E2E: QA Added acceptance tests for content delivery API by
@​nhudinh0309 in umbraco/Umbraco-CMS#21095
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-17.1.0...release-17.2.0).
</details>

Updated
[Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS)
from 17.1.0 to 17.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Umbraco.Cms.Persistence.Sqlite's
releases](https://github.com/umbraco/Umbraco-CMS/releases)._

## 17.2.0

## What's Changed Since 17.2.0-rc2

### 📦 Dependencies
* build(deps): bumps @​umbraco-ui/uui to 1.17.0 by @​iOvergaard in
umbraco/Umbraco-CMS#21765

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc2...release-17.2.0

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc...release-17.2.0-rc2

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
 ... (truncated)

## 17.2.0-rc2

## What's Changed Since 17.2.0-rc

### 🐛 Bug Fixes
* Block Workspace: rename root-tab to 'generic' by @​nielslyngsoe in
umbraco/Umbraco-CMS#21699
* Block Workspace: Tabs navigation, Cherry-pick from #​21672 by
@​nielslyngsoe in umbraco/Umbraco-CMS#21693

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.2.0-rc...release-17.2.0-rc2

## What's Changed Since the Last Release (17.1.0)

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

 ... (truncated)

## 17.2.0-rc

## What's Changed

### 🙌 Notable Changes
* User group: add description to user group (closes #​14986) by
@​NguyenThuyLan in umbraco/Umbraco-CMS#21057
* Content Types: Root properties by @​nielslyngsoe in
umbraco/Umbraco-CMS#21500

### 📦 Dependencies
* Storybook: Bumps storybook from 9.0.14 to 10.1.10 by @​dependabot[bot]
in umbraco/Umbraco-CMS#21208
* Bump qs from 6.14.0 to 6.14.1 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21270
* Bump the npm_and_yarn group across 2 directories with 1 update by
@​dependabot[bot] in umbraco/Umbraco-CMS#21403
* Dependencies: Bumps login dependencies to latest by @​iOvergaard in
umbraco/Umbraco-CMS#21539
* Tiptap RTE: Upgraded to latest v3.x by @​leekelleher in
umbraco/Umbraco-CMS#21493
* Dependencies: Bumps @​umbraco-ui/uui to 1.17.0-rc.4 by @​iOvergaard in
umbraco/Umbraco-CMS#21538
* build(deps): bumps @​umbraco-ui/uui to 1.17.0-rc.5 by @​iOvergaard in
umbraco/Umbraco-CMS#21569
* Dependencies: Update Microsoft packages to 10.0.1 and pin vulnerable
transitive dependencies (closes #​21122) by @​AndyButland in
umbraco/Umbraco-CMS#21285
* Dependencies: Bump to latest minor/patch versions by @​AndyButland in
umbraco/Umbraco-CMS#21540

### 🚀 New Features
* Markdown Conversion: Remove hard dependency on deprecated library and
replace with `IMarkdownToHtmlConverter` abstraction (closes #​21238 and
#​19500) by @​AndyButland in
umbraco/Umbraco-CMS#21242
* UI: Refactor breadcrumb URLs to use Path Constants by @​iOvergaard in
umbraco/Umbraco-CMS#21179
* Tree Navigation: Add visual indicators for items with restricted
access by @​iOvergaard in
umbraco/Umbraco-CMS#21365
* Recycle Bin: Adds `emptyRecycleBin` collection action kind for
Documents and Media by @​leekelleher in
umbraco/Umbraco-CMS#21482
* Tiptap RTE: Adds link (`umbLink`) support to `styleMenu` API by
@​leekelleher in umbraco/Umbraco-CMS#21494
* Rollback: Add toggle for diff display (closes #​18518) by
@​AndyButland in umbraco/Umbraco-CMS#21426
* Dictionary: Add configurable value search functionality by
@​Nis-Knowit in umbraco/Umbraco-CMS#21200

### 🚤 Performance
* Performance: Embeds the API of selected extra conditions by
@​nielslyngsoe in umbraco/Umbraco-CMS#21188
* Performance: Bundle Js Libs by @​nielslyngsoe in
umbraco/Umbraco-CMS#21187
* Performance: Embed Store API in Manifests to lower number of network
request by @​madsrasmussen in
umbraco/Umbraco-CMS#21191
* Performance: Avoid database lookup in `UserIdKeyResolver` for
super-user by @​AndyButland in
umbraco/Umbraco-CMS#21281
* Performance: Only flush ID/Key map in `ContentCacheRefresher` on
content deletion by @​AndyButland in
umbraco/Umbraco-CMS#21283
* Performance: Optimize refresh of hybrid cache for a document by
retrieving draft and published in single query by @​AndyButland in
umbraco/Umbraco-CMS#21407
* Backoffice Performance: Inline entry point modules to reduce JS chunk
count by @​madsrasmussen in
umbraco/Umbraco-CMS#21380
* HybridCache: Optimize content type change cache rebuild to resolve SQL
timeouts by @​AndyButland in
umbraco/Umbraco-CMS#21207
* Backoffice Performance: Use import maps to save requests by
@​nielslyngsoe in umbraco/Umbraco-CMS#21363
* Document URL Cache: Ensure URLs are rebuilt after upgrade and prevent
duplicate initialization (closes #​21337) by @​AndyButland in
umbraco/Umbraco-CMS#21379
* Performance: Fix thread safety and optimize cache updates in
`PublishStatusService` after content changes by @​AndyButland in
umbraco/Umbraco-CMS#21415
* Tiptap RTE: Optimize `umb-input-tiptap` initialization and rendering
by @​leekelleher in umbraco/Umbraco-CMS#21070
* Routing: Add `DocumentUrlAliasService` for optimized URL alias lookups
(closes #​21383) by @​AndyButland in
umbraco/Umbraco-CMS#21396
* Performance: Optimize property retrieval and authorization checks in
collection views (closes #​21367) by @​AndyButland in
umbraco/Umbraco-CMS#21470

### 🧪 Testing
* E2E: QA Replaced unreliable Thread.Sleep(500) with a counter/gate
pattern that ensures both transactions are initialized before releasing
them to compete for locks by @​andr317c in
umbraco/Umbraco-CMS#21165
* E2E QA: Updated integration test that was missing directory setup by
@​andr317c in umbraco/Umbraco-CMS#21167
* E2E: QA Added acceptance tests for removing a not-found content picker
by @​nhudinh0309 in umbraco/Umbraco-CMS#21177
* E2E: QA Fixed failing tests for the current user profile by
@​nhudinh0309 in umbraco/Umbraco-CMS#21214
* Upgrade MSW from 1.3.5 to 2.12.4 by @​madsrasmussen in
umbraco/Umbraco-CMS#21096
* E2E: QA Added acceptance tests for rendering content with invariant
blocks by @​nhudinh0309 in
umbraco/Umbraco-CMS#21180
* E2E: QA Added acceptance tests for content delivery API by
@​nhudinh0309 in umbraco/Umbraco-CMS#21095
 ... (truncated)

Commits viewable in [compare
view](umbraco/Umbraco-CMS@release-17.1.0...release-17.2.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants