Problem

When a recipe source (e.g. a custom recipe catalog) lists recipes, opening the catalog can return an empty list / HTTP 500 with no indication why. A single applied recipe whose shipped config has diverged from active config is enough to take down the *whole* listing - you end up with a blank page.

Root cause, generated with AI-help: `Normalizer::getActivationInfo()` calls `$activator->getTasks()` (and `getInstructions()`) without catching exceptions. For an Active recipe, `RecipeActivator::getTasks()` calls `Recipe::createFromDirectory()`, which instantiates core's `ConfigConfigurator` and throws `RecipePreExistingConfigException` whenever the recipe's shipped config no longer matches the live config.

Core throwing here is reasonable: `createFromDirectory()` is strict by design (see core #3570467, #3446329). The bug is that Project Browser lets that throw propagate and blank the catalog instead of degrading the one affected project.

Proposed resolution

Catch the exception, log a warning, but render the rest of the list.

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

fago created an issue. See original summary.

fago’s picture

Status: Active » Needs review

Attached a fix with a test.

fago’s picture

green and working now.

vidit.anjaria’s picture

tormi’s picture

Assigned: Unassigned » tormi

Reviewing

tormi’s picture

Assigned: tormi » Unassigned
Status: Needs review » Reviewed & tested by the community

I tested this on the issue branch in DDEV and can confirm the fix.

Reproduction steps used:
1. Applied recipes:
- ddev dr recipe core/recipes/article_content_type -y
- ddev dr recipe core/recipes/article_comment -y
2. Changed active config to diverge from shipped recipe config:
- Edited Article content type field label from Body to Description at
/admin/structure/types/manage/article/fields

Observed result with this patch: Project Browser recipe catalog still loads (no blank page, no HTTP 500).

vidit.anjaria’s picture

Issue tags: +2026Sprint17

chrisfromredfin’s picture

Status: Reviewed & tested by the community » Patch (to be ported)

Merged to 2.1.x.

Cannot cherry-pick to 2.0.x due to merge conflict in src/Activator/RecipeActivator.php

Please open backport branch to 2.0.x!