diff --git a/core/recipes/article_comment/recipe.yml b/core/recipes/article_comment/recipe.yml
index f4ac4e4be49a2a7d59638ea8a041ef97c2c00497..757072fa3b73f208c295f9208d9bbccf691cc3cf 100644
--- a/core/recipes/article_comment/recipe.yml
+++ b/core/recipes/article_comment/recipe.yml
@@ -5,6 +5,9 @@ recipes:
   - article_content_type
   - comment_base
 config:
+  # If the `comment` field already exists, it is guaranteed to be the right
+  # field type because the comment_base recipe treats the field storage strictly.
+  strict: false
   actions:
     core.entity_form_display.node.article.default:
       setComponent:
diff --git a/core/recipes/article_content_type/recipe.yml b/core/recipes/article_content_type/recipe.yml
index dfd4371c0c850f7b9dcf79543afd1b1c2fe1234a..fc7d77a88ea121946e70e063f3822f7c6853d208 100644
--- a/core/recipes/article_content_type/recipe.yml
+++ b/core/recipes/article_content_type/recipe.yml
@@ -6,6 +6,10 @@ install:
   - node
   - path
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.node.body
+    - field.storage.node.field_image
   import:
     node:
       # Only import config which is also imported by the Standard profile.
diff --git a/core/recipes/article_tags/recipe.yml b/core/recipes/article_tags/recipe.yml
index 59566afecb798e0496b8505f367b46503cbb77dc..68f2c01b843c7e3d5d0a768dac323c0a5f1b4c1f 100644
--- a/core/recipes/article_tags/recipe.yml
+++ b/core/recipes/article_tags/recipe.yml
@@ -7,6 +7,9 @@ recipes:
 install:
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.node.field_tags
   import:
     taxonomy:
       - views.view.taxonomy_term
diff --git a/core/recipes/audio_media_type/recipe.yml b/core/recipes/audio_media_type/recipe.yml
index bd86d21d819439266473758fd13744ac97c28f51..196a2c4501c2e5d2641a14f4720f76f9d6270cb8 100644
--- a/core/recipes/audio_media_type/recipe.yml
+++ b/core/recipes/audio_media_type/recipe.yml
@@ -7,6 +7,9 @@ install:
   - path
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.media.field_media_audio_file
   import:
     file:
       - views.view.files
diff --git a/core/recipes/basic_block_type/recipe.yml b/core/recipes/basic_block_type/recipe.yml
index d1d7fa8755e2d04789cccce89c8fd8c954c77610..6fc0500a2380fc8e33fdb7c9df5194d968b4c777 100644
--- a/core/recipes/basic_block_type/recipe.yml
+++ b/core/recipes/basic_block_type/recipe.yml
@@ -5,6 +5,9 @@ install:
   - block_content
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.block_content.body
   import:
     block_content:
       - field.storage.block_content.body
diff --git a/core/recipes/basic_html_format_editor/recipe.yml b/core/recipes/basic_html_format_editor/recipe.yml
index d1e5e6ec8ca6120c5e4f4e3020dd4d3bb57d7360..71ac24b1e0b9c27a18bba207665000e4206a3dd2 100644
--- a/core/recipes/basic_html_format_editor/recipe.yml
+++ b/core/recipes/basic_html_format_editor/recipe.yml
@@ -4,6 +4,8 @@ type: 'Text format editor'
 install:
   - ckeditor5
 config:
+  # If the basic_html format and editor already exist, leave them as-is.
+  strict: false
   actions:
     user.role.authenticated:
       grantPermission: 'use text format basic_html'
diff --git a/core/recipes/comment_base/recipe.yml b/core/recipes/comment_base/recipe.yml
index 0cf967155a4193f763c7dd7fa55dad87bebded8b..0f09d5aadd346a92f80b8d9110865fae9993bb17 100644
--- a/core/recipes/comment_base/recipe.yml
+++ b/core/recipes/comment_base/recipe.yml
@@ -6,6 +6,10 @@ install:
   - node
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.comment.comment_body
+    - field.storage.node.comment
   import:
     comment:
       - core.entity_view_mode.comment.full
diff --git a/core/recipes/content_search/recipe.yml b/core/recipes/content_search/recipe.yml
index b9f60c59a7f19c1c04c9d2b979c23a058789cf7f..800c5777bef464028c9f11a4a39db79ddc3edd26 100644
--- a/core/recipes/content_search/recipe.yml
+++ b/core/recipes/content_search/recipe.yml
@@ -12,8 +12,6 @@ config:
       - search.page.node_search
   actions:
     user.role.anonymous:
-      grantPermissions:
-        - 'search content'
+      grantPermission: 'search content'
     user.role.authenticated:
-      grantPermissions:
-        - 'search content'
+      grantPermission: 'search content'
diff --git a/core/recipes/core_recommended_admin_theme/recipe.yml b/core/recipes/core_recommended_admin_theme/recipe.yml
index 046f5a27fc65e4f5bfaf6a144a05b4c48c08f331..61cd28e17c9c231e520cc9a47b98e8e01f2ccfed 100644
--- a/core/recipes/core_recommended_admin_theme/recipe.yml
+++ b/core/recipes/core_recommended_admin_theme/recipe.yml
@@ -5,6 +5,8 @@ install:
   - claro
   - block
 config:
+  # Leave existing blocks and menus as-is.
+  strict: false
   import:
     system:
       - system.menu.account
diff --git a/core/recipes/core_recommended_front_end_theme/recipe.yml b/core/recipes/core_recommended_front_end_theme/recipe.yml
index a7b2e26f40d68c62688059c3adf2962bf9f5f9c6..00faf6409ec5493024559da9cddc8a37ac07f988 100644
--- a/core/recipes/core_recommended_front_end_theme/recipe.yml
+++ b/core/recipes/core_recommended_front_end_theme/recipe.yml
@@ -5,6 +5,8 @@ install:
   - olivero
   - block
 config:
+  # Leave existing blocks and menus as-is.
+  strict: false
   import:
     system:
       - system.menu.account
diff --git a/core/recipes/core_recommended_maintenance/recipe.yml b/core/recipes/core_recommended_maintenance/recipe.yml
index ef6ad24ee645e9bb40c26e146924310968600cad..2833c9f69c591ace4853c793696fe6476edd8b0f 100644
--- a/core/recipes/core_recommended_maintenance/recipe.yml
+++ b/core/recipes/core_recommended_maintenance/recipe.yml
@@ -7,6 +7,8 @@ install:
   - dblog
   - views
 config:
+  # Leave existing config as-is.
+  strict: false
   import:
     automated_cron:
       - automated_cron.settings
diff --git a/core/recipes/document_media_type/recipe.yml b/core/recipes/document_media_type/recipe.yml
index 868610953e0957def8d27fb376b7f1ea5d2a4f38..44dd72715ba7ca5d9b2e321d03a43c36786e9998 100644
--- a/core/recipes/document_media_type/recipe.yml
+++ b/core/recipes/document_media_type/recipe.yml
@@ -6,6 +6,9 @@ install:
   - path
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.media.field_media_document
   import:
     file:
       - views.view.files
diff --git a/core/recipes/editorial_workflow/recipe.yml b/core/recipes/editorial_workflow/recipe.yml
index baa7f86de7f2470da5889bcc4df73fce8e194d8e..9ad3752643774270171e63c4bd46365ff34990a7 100644
--- a/core/recipes/editorial_workflow/recipe.yml
+++ b/core/recipes/editorial_workflow/recipe.yml
@@ -7,6 +7,9 @@ install:
   - node
   - views
 config:
+  # If the config we're shipping already exists, we don't really care what
+  # it looks like.
+  strict: false
   import:
     content_moderation:
       - views.view.moderated_content
diff --git a/core/recipes/feedback_contact_form/recipe.yml b/core/recipes/feedback_contact_form/recipe.yml
index 5940cf4a6b936427c9a18463351d94d192d33e8b..084f2712537cd211ee8ce40094f43a44bc092329 100644
--- a/core/recipes/feedback_contact_form/recipe.yml
+++ b/core/recipes/feedback_contact_form/recipe.yml
@@ -17,6 +17,8 @@ input:
       source: config
       config: ['system.site', 'mail']
 config:
+  # Don't conflict with existing configuration.
+  strict: false
   import:
     contact:
       - contact.form.personal
diff --git a/core/recipes/full_html_format_editor/recipe.yml b/core/recipes/full_html_format_editor/recipe.yml
index 171c75ac7b8188bca9eae26f2311c4e0f1d76549..a8e669e196601b04f91643c4d279feca7e6b3ffe 100644
--- a/core/recipes/full_html_format_editor/recipe.yml
+++ b/core/recipes/full_html_format_editor/recipe.yml
@@ -3,3 +3,6 @@ description: 'Provides "Full HTML" text format along with WYSIWYG editor and rel
 type: 'Text format editor'
 install:
   - ckeditor5
+config:
+  # If the full_html format and editor already exist, leave them as-is.
+  strict: false
diff --git a/core/recipes/image_media_type/recipe.yml b/core/recipes/image_media_type/recipe.yml
index 9fe2163049457488c3cb853e13b0a384cb07b38d..d516854f836ee921f7904f76da8882c4f66ceb0b 100644
--- a/core/recipes/image_media_type/recipe.yml
+++ b/core/recipes/image_media_type/recipe.yml
@@ -6,6 +6,9 @@ install:
   - path
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.media.field_media_image
   import:
     file:
       - views.view.files
diff --git a/core/recipes/local_video_media_type/recipe.yml b/core/recipes/local_video_media_type/recipe.yml
index 8bb1c6f6f630d7fe729dd8d885cf53f7eac01b8c..270be6e563169066f76fa7250bc2d4ae2b93cab8 100644
--- a/core/recipes/local_video_media_type/recipe.yml
+++ b/core/recipes/local_video_media_type/recipe.yml
@@ -6,6 +6,9 @@ install:
   - path
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.media.field_media_video_file
   import:
     file:
       - views.view.files
diff --git a/core/recipes/page_content_type/recipe.yml b/core/recipes/page_content_type/recipe.yml
index e9193c024f2765e1d006aa74e166c5a58d2e2ec7..805e6cce316bf6b4d604b794a53e2faf499ef696 100644
--- a/core/recipes/page_content_type/recipe.yml
+++ b/core/recipes/page_content_type/recipe.yml
@@ -5,6 +5,9 @@ install:
   - node
   - path
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.node.body
   import:
     node:
       - core.entity_view_mode.node.full
diff --git a/core/recipes/remote_video_media_type/recipe.yml b/core/recipes/remote_video_media_type/recipe.yml
index fd6d9cd02b12df9f500dfe42d916a21de007c668..3ab591c7f95287d64676edfe553be210507ec6b3 100644
--- a/core/recipes/remote_video_media_type/recipe.yml
+++ b/core/recipes/remote_video_media_type/recipe.yml
@@ -6,6 +6,9 @@ install:
   - path
   - views
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.media.field_media_oembed_video
   import:
     media_library:
       - core.entity_view_mode.media.media_library
diff --git a/core/recipes/restricted_html_format/recipe.yml b/core/recipes/restricted_html_format/recipe.yml
index 8aec764918f93e9d44a5735a61778b5e1d8b6b5c..46dca71dbe842e98130175bba64f821899d46a9d 100644
--- a/core/recipes/restricted_html_format/recipe.yml
+++ b/core/recipes/restricted_html_format/recipe.yml
@@ -4,6 +4,8 @@ type: 'Text format'
 install:
   - filter
 config:
+  # If the restricted_html format already exists, leave it as-is.
+  strict: false
   import:
     filter: '*'
   actions:
diff --git a/core/recipes/standard/recipe.yml b/core/recipes/standard/recipe.yml
index 6d67b270d18e91832c7294a0a7bcf1f6b420808b..7960d7f0948f3e9638844647ec7e29297d57803e 100644
--- a/core/recipes/standard/recipe.yml
+++ b/core/recipes/standard/recipe.yml
@@ -36,6 +36,10 @@ install:
   - views_ui
   - shortcut
 config:
+  # This recipe is intended to set up a full site from scratch, fulfilling certain
+  # expectations. It's not really designed to be a building block. Therefore, treat
+  # all of the config strictly.
+  strict: true
   import:
     claro:
       - block.block.claro_help
diff --git a/core/recipes/standard_responsive_images/recipe.yml b/core/recipes/standard_responsive_images/recipe.yml
index 8175e8de0aca17ec14c53c7ab46b5ff222030c2c..d238fb84cd3fd59fcc09113995e1599ca35ee1d0 100644
--- a/core/recipes/standard_responsive_images/recipe.yml
+++ b/core/recipes/standard_responsive_images/recipe.yml
@@ -4,5 +4,7 @@ type: 'Responsive image'
 install:
   - responsive_image
 config:
+  # There's no need to conflict with existing responsive image styles.
+  strict: false
   import:
     image: '*'
diff --git a/core/recipes/tags_taxonomy/recipe.yml b/core/recipes/tags_taxonomy/recipe.yml
index 71bc5e3a9bbd52c565590fb349fec07001015f66..7a38c9d67bd567055804e0efcc2e1ea9c3a91f05 100644
--- a/core/recipes/tags_taxonomy/recipe.yml
+++ b/core/recipes/tags_taxonomy/recipe.yml
@@ -8,5 +8,7 @@ install:
   # https://www.drupal.org/project/drupal/issues/3479980
   - views
 config:
+  # If the `tags` vocabulary already exists, there's no need to conflict with it.
+  strict: false
   import:
     taxonomy: '*'
diff --git a/core/recipes/user_picture/recipe.yml b/core/recipes/user_picture/recipe.yml
index 773e6b7711853fa402f6d644a8b50e40e6035beb..93f348ca21106d72adfa71266181ff412662f866 100644
--- a/core/recipes/user_picture/recipe.yml
+++ b/core/recipes/user_picture/recipe.yml
@@ -5,6 +5,9 @@ install:
   - image
   - user
 config:
+  strict:
+    # Treat field storages strictly, since they influence the database layout.
+    - field.storage.user.user_picture
   import:
     image:
       - image.style.thumbnail