Skip to content

Service registration: Allow running Umbraco with different combinations of backoffice, website and delivery API (closes #21622)#21630

Merged
AndyButland merged 10 commits intomainfrom
v17/bugfix/allow-run-without-backoffice
Mar 3, 2026
Merged

Service registration: Allow running Umbraco with different combinations of backoffice, website and delivery API (closes #21622)#21630
AndyButland merged 10 commits intomainfrom
v17/bugfix/allow-run-without-backoffice

Conversation

@AndyButland
Copy link
Copy Markdown
Contributor

@AndyButland AndyButland commented Feb 4, 2026

Description

This PR addresses the issue raised #21622 where it's not possible to configure Umbraco to run without a backoffice (which could be useful if you want a differently configured build running on front-end servers, to lower any potential attack service or unnecessary processing).

I've checked various combinations of backoffice, website and delivery API setups and adjusted service registrations such that they can be supported.

Change Summary

  • Added new AddCore() extension method as an alternative entry point to AddBackOffice() for delivery-only scenarios.
  • AddBackOffice() now calls AddCore() internally, then adds backoffice-specific services.
  • Introduces IBackOfficeEnabledMarker interface to conditionally register Management API services.
  • Adds integration tests for all supported configuration scenarios.

Supported Scenarios

// Full Umbraco with backoffice (default)
builder.CreateUmbracoBuilder()
    .AddBackOffice()
    .AddWebsite()
    .AddDeliveryApi()
    .AddComposers()
    .Build();

app.UseUmbraco()
    .WithMiddleware(u =>
    {
        u.UseBackOffice();
        u.UseWebsite();
    })
    .WithEndpoints(u =>
    {
        u.UseBackOfficeEndpoints();
        u.UseWebsiteEndpoints();
    });

// Delivery-only (no backoffice)
builder.CreateUmbracoBuilder()
    .AddCore()
    .AddWebsite()
    .AddDeliveryApi()
    .AddComposers()
    .Build();

app.UseUmbraco()
    .WithMiddleware(u =>
    {
        u.UseWebsite();
    })
    .WithEndpoints(u =>
    {
        u.UseWebsiteEndpoints();
        u.UseDeliveryApiEndpoints();
    });

// Website only
builder.CreateUmbracoBuilder()
    .AddCore()
    .AddWebsite()
    .AddComposers()
    .Build();

app.UseUmbraco()
    .WithMiddleware(u =>
    {
        u.UseWebsite();
    })
    .WithEndpoints(u =>
    {
        u.UseWebsiteEndpoints();
    });

// Delivery API only
builder.CreateUmbracoBuilder()
    .AddCore()
    .AddDeliveryApi()
    .AddComposers()
    .Build();

app.UseUmbraco()
    .WithMiddleware(u =>
    {
        // No middleware needed for Delivery API only
    })
    .WithEndpoints(u =>
    {
        u.UseDeliveryApiEndpoints();
    });

Key Changes

File Change
IBackOfficeEnabledMarker.cs New marker interface for conditional backoffice registration
UmbracoBuilderExtensions.cs (Web.Common) New AddCore() method with idempotency
UmbracoBuilder.BackOffice.cs Refactored to call AddCore() internally
ManagementApiComposer.cs Conditional registration based on marker
ControllersAsServicesComposer.cs Skip Management API controllers when backoffice disabled
NoopLocalLoginSettingProvider.cs Fallback for when backoffice identity not configured
NoopConflictingRouteService.cs Fallback for when backoffice not configured
CoreConfigurationTests.cs DI-level tests for service registration
CoreConfigurationHttpTests.cs HTTP boot tests with ValidateOnBuild=true

Testing

  • All existing tests pass
  • New integration tests verify all 4 supported scenarios boot successfully
  • Tests verified to fail when configuration is broken (reversion test)
  • ValidateOnBuild=true catches missing dependencies at startup
  • Manual testing of scenarios
    • All components - backoffice, website and delivery API should function
    • Backoffice only - backoffice should function, website and delivery API should be unavailable
    • Website only - website should function, backoffice and delivery API should be unavailable
    • Delivery API only - delivery API should function, backoffice and website should be unavailable
    • Combinations of any two services should function

Copilot AI review requested due to automatic review settings February 4, 2026 17:54
Copy link
Copy Markdown
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

Enables “delivery-only” Umbraco setups by introducing a core-only DI entry point and conditioning backoffice/Management API registration on an explicit backoffice marker.

Changes:

  • Add new AddCore() builder extension to register core services without the backoffice, and refactor AddBackOffice() to build on top of AddCore().
  • Introduce IBackOfficeEnabledMarker and use it to conditionally wire Management API services/controllers and backoffice-specific middleware behavior.
  • Add new integration tests covering DI build and HTTP boot across supported configuration combinations.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/Umbraco.Tests.Integration/TestServerTest/CoreConfigurationTests.cs Adds DI-container-level integration tests for supported builder combinations and idempotency.
tests/Umbraco.Tests.Integration/TestServerTest/CoreConfigurationHttpTests.cs Adds HTTP boot tests for supported configurations with ValidateOnBuild=true.
src/Umbraco.Web.Website/DependencyInjection/UmbracoBuilderExtensions.cs Updates AddWebsite() expectations (assumes AddCore()/AddBackOffice()) and adjusts registrations accordingly.
src/Umbraco.Web.UI/Composers/ControllersAsServicesComposer.cs Skips registering Management API controllers as services when backoffice is disabled.
src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilderExtensions.cs Introduces AddCore() and associated core registration + idempotency marker.
src/Umbraco.Web.Common/ApplicationBuilder/UmbracoApplicationBuilder.cs Avoids applying backoffice rewrite middleware when backoffice is disabled.
src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs Registers no-op fallbacks for backoffice-dependent services when running without backoffice.
src/Umbraco.Core/Services/NoopConflictingRouteService.cs Adds fallback IConflictingRouteService implementation for non-backoffice scenarios.
src/Umbraco.Core/Security/NoopLocalLoginSettingProvider.cs Adds fallback ILocalLoginSettingProvider implementation for non-backoffice scenarios.
src/Umbraco.Core/DependencyInjection/IBackOfficeEnabledMarker.cs Adds marker interface + implementation indicating backoffice is enabled.
src/Umbraco.Cms.Api.Management/ManagementApiComposer.cs Conditionally registers Management API only when backoffice marker is present.
src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOfficeIdentity.cs Ensures backoffice implementation replaces the core default local-login provider.
src/Umbraco.Cms.Api.Management/DependencyInjection/UmbracoBuilder.BackOffice.cs Refactors AddBackOffice() to call AddCore() and registers the backoffice marker.
src/Umbraco.Cms.Api.Delivery/DependencyInjection/UmbracoBuilderExtensions.cs Ensures Delivery API can run without backoffice by adding required member/auth pieces.
src/Umbraco.Cms.Api.Delivery/DependencyInjection/UmbracoApplicationBuilderExtensions.cs Adds UseDeliveryApiEndpoints() to map controller endpoints when backoffice isn’t present.

Comment thread tests/Umbraco.Tests.Integration/TestServerTest/CoreConfigurationHttpTests.cs Outdated
@AndyButland AndyButland changed the title Core: Allow running Umbraco without backoffice Core: Allow running Umbraco without backoffice (closes #21622) Feb 4, 2026
@AndyButland AndyButland changed the title Core: Allow running Umbraco without backoffice (closes #21622) Service registration: Allow running Umbraco with different combinations of backoffice, website and delivery API (closes #21622) Feb 4, 2026
@AndyButland AndyButland added the status/needs-docs Requires new or updated documentation label Feb 4, 2026
Copy link
Copy Markdown
Member

@Zeegaan Zeegaan left a comment

Choose a reason for hiding this comment

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

Just one small thing.

Overall this looks okay, and would be useful. But I would really like some extensive testing on this, I don't trust myself to catch all potential scenarios 😁

@AndyButland
Copy link
Copy Markdown
Contributor Author

But I would really like some extensive testing on this, I don't trust myself to catch all potential scenarios

Understood. I've added some integration tests as you likely saw, that at least confirms Umbraco will boot under the various scenarios. Will see if we can get some focussed QA on this before it's merged though.

Copy link
Copy Markdown
Member

@Zeegaan Zeegaan left a comment

Choose a reason for hiding this comment

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

Agreed, lets get som QA eyes too, I'll approve 😁

@andr317c
Copy link
Copy Markdown
Contributor

I tested a bit, and I get this

Failed to build models.                                                                                                                                                                                                                                                             
  System.InvalidOperationException: No service for type 'Umbraco.Cms.Infrastructure.ModelsBuilder.UmbracoServices' has been registered.                                                                                                                                                                         
     at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)                                                                                                                                                                   
     at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)                                                                                                                                                                                  
     at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)                                                                                                                                                                                                                                                     
     at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)                                                                                                                                                                                                
     at System.Lazy`1.CreateValue()                                                                                                                                                                                                                                                                                 
     at Umbraco.Cms.DevelopmentMode.Backoffice.InMemoryAuto.InMemoryModelFactory.get_UmbracoServices() in C:\Users\andr3\Desktop\Diffenret\src\Umbraco.Cms.DevelopmentMode.Backoffice\InMemoryAuto\InMemoryModelFactory.cs:line 125                                                                                 
     at Umbraco.Cms.DevelopmentMode.Backoffice.InMemoryAuto.InMemoryModelFactory.GetModelsAssembly(Boolean forceRebuild) in C:\Users\andr3\Desktop\Diffenret\src\Umbraco.Cms.DevelopmentMode.Backoffice\InMemoryAuto\InMemoryModelFactory.cs:line 408                                                               
     at Umbraco.Cms.DevelopmentMode.Backoffice.InMemoryAuto.InMemoryModelFactory.EnsureModels() in C:\Users\andr3\Desktop\Diffenret\src\Umbraco.Cms.DevelopmentMode.Backoffice\InMemoryAuto\InMemoryModelFactory.cs:line 318  

When I fetch content through the delivery api, it only occurs for the "Delivery API Only" setup

@AndyButland
Copy link
Copy Markdown
Contributor Author

Thanks for looking at this @andr317c. Can I just check a couple of things, as it seems OK for me (but maybe I'm missing something).

My Program.cs file looks like this:

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

builder.CreateUmbracoBuilder()
    .AddCore()
    .AddDeliveryApi()
    .AddComposers()
    .Build();

WebApplication app = builder.Build();

await app.BootUmbracoAsync();

app.UseUmbraco()
    .WithMiddleware(u =>
    {
    })
    .WithEndpoints(u =>
    {
        u.UseDeliveryApiEndpoints();
    });

await app.RunAsync();

I don't have the Umbraco.Cms.DevelopmentMode.Backoffice referenced.

And my models builder configuration is set to:

  "ModelsBuilder": {
    "ModelsMode": "None"
  }

Both of which would make sense I think for a delivery API only setup.

Can you see what may be different for you to get that error please?


As I say, I couldn't replicate the problem, but Claude gave me an idea what it could be, which sounded feasible, so I've pushed that change. Please let me know if that now works for you.

@andr317c
Copy link
Copy Markdown
Contributor

andr317c commented Mar 3, 2026

The "issue" is fixed for me now 💪 The only difference is that I had "ModelsBuilder": { "ModelsMode": "InMemoryAuto" }

@AndyButland
Copy link
Copy Markdown
Contributor Author

Docs PR is here: umbraco/UmbracoDocs#7861

@AndyButland AndyButland merged commit fcbedf2 into main Mar 3, 2026
26 of 27 checks passed
@AndyButland AndyButland deleted the v17/bugfix/allow-run-without-backoffice branch March 3, 2026 08:49
@simonech
Copy link
Copy Markdown
Contributor

@AndyButland is this also addressing the issue of having login and backoffice endpoints as separate "registrations"?
#22144

@AndyButland
Copy link
Copy Markdown
Contributor Author

I hadn't considered this for that scenario @simonech, no. So think that will be something to tackle as a follow-up.

alexsee added a commit to alexsee/umbraco-container that referenced this pull request Apr 9, 2026
Updated
[Umbraco.Cms.Persistence.Sqlite](https://github.com/umbraco/Umbraco-CMS)
from 17.2.2 to 17.3.0.

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

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

## 17.3.0

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc3

**Full Changelog**:
umbraco/Umbraco-CMS@release-17.3.0-rc3...release-17.3.0

## What's Changed Since 17.3.0-rc2

### 📦 Dependencies

* Dependencies: Update Microsoft packages to latest patch and fix
HybridCache ParseFault with Redis by @​AndyButland in
umbraco/Umbraco-CMS#22278

### 🐛 Bug Fixes

* Examine: Fix DocumentUrlService not initialized during Examine
indexing after package upgrade by @​AndyButland in
umbraco/Umbraco-CMS#22243
* Unattended Upgrades: Rebuild routing caches after background
migrations to fix unrouteable document URLs by @​AndyButland in
umbraco/Umbraco-CMS#22269
* Migrations: Fix NPoco auto-select breaking re-trust FK migration by
@​AndyButland in umbraco/Umbraco-CMS#22270

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

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

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

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
 ... (truncated)

## 17.3.0-rc3

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc2

### 📦 Dependencies

* Dependencies: Update Microsoft packages to latest patch and fix
HybridCache ParseFault with Redis by @​AndyButland in
umbraco/Umbraco-CMS#22278

### 🐛 Bug Fixes

* Examine: Fix DocumentUrlService not initialized during Examine
indexing after package upgrade by @​AndyButland in
umbraco/Umbraco-CMS#22243
* Unattended Upgrades: Rebuild routing caches after background
migrations to fix unrouteable document URLs by @​AndyButland in
umbraco/Umbraco-CMS#22269
* Migrations: Fix NPoco auto-select breaking re-trust FK migration by
@​AndyButland in umbraco/Umbraco-CMS#22270

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

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

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

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
 ... (truncated)

## 17.3.0-rc2

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed Since 17.3.0-rc1

### 🐛 Bug Fixes
* Migrations: Fix re-trust constraints migration targeting non-Umbraco
tables and transaction failure (closes #​22227) by @​AndyButland in
umbraco/Umbraco-CMS#22229
* Distributed Locking: Add ROWLOCK hint to prevent cross-row contention
on umbracoLock table (closes #​22113) by @​AndyButland in
umbraco/Umbraco-CMS#22126
* Application URLs: Prevent back office hosts being overwritten in a
shared database setup (closes #​16741) by @​matthewcare in
umbraco/Umbraco-CMS#22160
* Migrations: Fix property detection for invariant content types with
culture-varying compositions (closes #​22159) by @​AndyButland in
umbraco/Umbraco-CMS#22167
* Migrations: Fix package migrations not running after fresh install
with packages (closes #​22202) by @​AndyButland in
umbraco/Umbraco-CMS#22204

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

## What's Changed Since the Previous Version (17.2.2)

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
* Backoffice: Update vite from 7.1.11 to 7.3.1 by @​iOvergaard in
umbraco/Umbraco-CMS#22065
* Dependencies: Update server-side dependencies to latest patch or minor
releases by @​AndyButland in
umbraco/Umbraco-CMS#21860

### 🚤 Performance
* Performance: Implement key-based caching for data type and template
repositories by @​AndyButland in
umbraco/Umbraco-CMS#21280
* Management API: Optimize collection view performance by eliminating
N+1 patterns by @​AndyButland in
umbraco/Umbraco-CMS#21684
* Performance: Optimize handling of content type updates by @​kjac in
umbraco/Umbraco-CMS#21910
* Backoffice Performance: Add inflight request deduplication to item
data request managers by @​madsrasmussen in
umbraco/Umbraco-CMS#21767
* URL and Alias Caches: Optimize for invariant documents by
@​AndyButland in umbraco/Umbraco-CMS#21558
* Custom Views: Prevent re-rendering Block Views and Properties by
@​rickbutterfield in umbraco/Umbraco-CMS#21186
* Core: Minimize await to a single JS cycle (refactor #​21186) by
@​nielslyngsoe in umbraco/Umbraco-CMS#22074
* Auth: Skip /token refresh when access token is still valid by
@​iOvergaard in umbraco/Umbraco-CMS#22087
* Memory Management: Dispose `IDisposable` resources correctly in four
internal classes by @​AndyButland in
umbraco/Umbraco-CMS#22014
* Redirect Tracking: Fix segment change detection and optimise
descendant traversal (closes #​22082) by @​AndyButland in
umbraco/Umbraco-CMS#22091
 ... (truncated)

## 17.3.0-rc

## Upgrade Notes

In 17.3 we have upgraded our dependency on `MailKit` to 4.15.1. This is
a minor version update, but we found a few changes we had to make in
core to accommodate changes to nullability constraints. Unless using
methods of this library, or it's transitive dependency `MimeKit`, it's
unlikely projects will be affected. The update is necessary though, as
the version we previously depended on now has a security vulnerability
raised against it.

We have made a change to how we handle redirects which brings a
significant performance improvement for publish time on large sites,
when documents with many descendent nodes are published. If you have
custom URL providers you should review this change, as there are some
[very rare
cases](umbraco/Umbraco-CMS#22091 (comment))
where you'll need to adjust to ensure descendent redirects are correctly
handled.

Note also that we now auto-generate HMAC secret key for new installs.
This has been applied to make Umbraco more secure by default, but it's
not been forced for upgrades.

## What's Changed

### 🙌 Notable Changes
* Templates: Add optional Central Package Management support to
UmbracoProject and UmbracoExtension templates by @​NguyenThuyLan in
umbraco/Umbraco-CMS#21641
* Service registration: Allow running Umbraco with different
combinations of backoffice, website and delivery API (closes #​21622) by
@​AndyButland in umbraco/Umbraco-CMS#21630
* Imaging Configuration: Auto-generate HMAC secret key for new installs
by @​AndyButland in umbraco/Umbraco-CMS#21976
* Migrations: Run unattended upgrades in background, add
liveness/readiness health probes (closes #​21987) by @​AndyButland in
umbraco/Umbraco-CMS#22020

### 💥 Breaking Changes
* Dependencies: Update MailKit to 4.15.1 by @​AndyButland in
umbraco/Umbraco-CMS#22028

### 📦 Dependencies
* Bump lodash from 4.17.21 to 4.17.23 in
/tests/Umbraco.Tests.AcceptanceTest in the npm_and_yarn group across 1
directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21519
* Bump the npm_and_yarn group across 2 directories with 2 updates by
@​dependabot[bot] in umbraco/Umbraco-CMS#21754
* Bump qs from 6.14.1 to 6.14.2 in /src/Umbraco.Web.UI.Client in the
npm_and_yarn group across 1 directory by @​dependabot[bot] in
umbraco/Umbraco-CMS#21755
* Dependencies: Bumps @​umbraco-ui/uui from 1.17.0 to 1.17.1 by
@​iOvergaard in umbraco/Umbraco-CMS#22029
* Dependencies: Updates @​umbraco-ui/uui to 1.17.2 to fix multiple
folder drag-and-drop failing (closes #​21837) by @​iOvergaard in
umbraco/Umbraco-CMS#21886
* Backoffice: Update vite from 7.1.11 to 7.3.1 by @​iOvergaard in
umbraco/Umbraco-CMS#22065
* Dependencies: Update server-side dependencies to latest patch or minor
releases by @​AndyButland in
umbraco/Umbraco-CMS#21860

### 🚤 Performance
* Performance: Implement key-based caching for data type and template
repositories by @​AndyButland in
umbraco/Umbraco-CMS#21280
* Management API: Optimize collection view performance by eliminating
N+1 patterns by @​AndyButland in
umbraco/Umbraco-CMS#21684
* Performance: Optimize handling of content type updates by @​kjac in
umbraco/Umbraco-CMS#21910
* Backoffice Performance: Add inflight request deduplication to item
data request managers by @​madsrasmussen in
umbraco/Umbraco-CMS#21767
* URL and Alias Caches: Optimize for invariant documents by
@​AndyButland in umbraco/Umbraco-CMS#21558
* Custom Views: Prevent re-rendering Block Views and Properties by
@​rickbutterfield in umbraco/Umbraco-CMS#21186
* Core: Minimize await to a single JS cycle (refactor #​21186) by
@​nielslyngsoe in umbraco/Umbraco-CMS#22074
* Auth: Skip /token refresh when access token is still valid by
@​iOvergaard in umbraco/Umbraco-CMS#22087
* Memory Management: Dispose `IDisposable` resources correctly in four
internal classes by @​AndyButland in
umbraco/Umbraco-CMS#22014
* Redirect Tracking: Fix segment change detection and optimise
descendant traversal (closes #​22082) by @​AndyButland in
umbraco/Umbraco-CMS#22091


### 🌈 Accessibility Improvements
* Entity Actions: Adds a descriptive title to the first action so you
know what it does by @​iOvergaard in
umbraco/Umbraco-CMS#21739
* Search field: Added aria-label and name to search input for
accessibility (closes #​21938) by @​andreaslborg in
umbraco/Umbraco-CMS#21962
* List view: Added labels entity bulk action buttons by @​andreaslborg
in umbraco/Umbraco-CMS#21964
* Accessibility: Add title attributes to buttons in block list entry and
property editor UI by @​manutdkid77 in
umbraco/Umbraco-CMS#21842
* Accessibility: Add tooltips to block grid entry actions by
@​manutdkid77 in umbraco/Umbraco-CMS#21958
* Accessibility: Added `title` attribute for icon in content types by
@​TechPdo in umbraco/Umbraco-CMS#21956

### 🚀 New Features
 ... (truncated)

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

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Umbraco.Cms.Persistence.Sqlite&package-manager=nuget&previous-version=17.2.2&new-version=17.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexander Seeliger <alexsee@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category/notable status/needs-docs Requires new or updated documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants