diff --git a/modules/ui_patterns_devel/src/Controller/UIPatternsDevelDeprecate.php b/modules/ui_patterns_devel/src/Controller/UIPatternsDevelDeprecate.php
deleted file mode 100644
index 969e49fd12b60d5c4e78960a5d61c786f576d23b..0000000000000000000000000000000000000000
--- a/modules/ui_patterns_devel/src/Controller/UIPatternsDevelDeprecate.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Drupal\ui_patterns_devel\Controller;
-
-use Drupal\Core\Controller\ControllerBase;
-
-/**
- * Returns responses for UI Patterns Devel routes.
- *
- * @codeCoverageIgnore
- * @deprecated in ui_patterns:2.0.0-beta5 and is removed from ui_patterns:2.0.0-rc1. Replaced by sdc_devel.
- * @see https://www.drupal.org/project/ui_patterns/issues/3489973
- */
-final class UIPatternsDevelDeprecate extends ControllerBase {
-
-  /**
-   * Builds the response.
-   *
-   * @return array
-   *   The built response array.
-   */
-  public function __invoke(): array {
-    $link = 'https://www.drupal.org/project/sdc_devel';
-    return [
-      '#type' => 'html_tag',
-      '#tag' => 'p',
-      '#value' => $this->t('UI Patterns Devel has been replaced by standalone module <a href="@link">SDC Devel</a>, and will be removed before UI Patterns 2.0.0-rc1, please uninstall and replace this module.', ['@link' => $link]),
-      '#attributes' => [
-        'class' => [
-          'messages',
-          'messages--warning',
-        ],
-      ],
-    ];
-  }
-
-}
diff --git a/modules/ui_patterns_devel/ui_patterns_devel.info.yml b/modules/ui_patterns_devel/ui_patterns_devel.info.yml
deleted file mode 100644
index 3659d65cce6ed798ea8048c9e4740349ce057ce9..0000000000000000000000000000000000000000
--- a/modules/ui_patterns_devel/ui_patterns_devel.info.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-name: UI Patterns Devel
-type: module
-description: Replaced by the sdc_devel standalone module.
-core_version_requirement: ^10.3 || ^11
-package: Development
-dependencies:
-  - ui_patterns:ui_patterns
-lifecycle: deprecated
-lifecycle_link: https://www.drupal.org/project/ui_patterns/issues/3489973
diff --git a/modules/ui_patterns_devel/ui_patterns_devel.links.menu.yml b/modules/ui_patterns_devel/ui_patterns_devel.links.menu.yml
deleted file mode 100644
index ffbaa7dec19eabebd3dfac6e2582189880d188b2..0000000000000000000000000000000000000000
--- a/modules/ui_patterns_devel/ui_patterns_devel.links.menu.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-ui_patterns_devel.twig_validator:
-  title: UI components
-  description: Components definitions and templates validation, provided by UI Patterns.
-  parent: system.admin_reports
-  route_name: ui_patterns_devel.twig_validator
diff --git a/modules/ui_patterns_devel/ui_patterns_devel.links.task.yml b/modules/ui_patterns_devel/ui_patterns_devel.links.task.yml
deleted file mode 100644
index 6dae38c83412caf14c13c140e4f8f8aae9cbda7b..0000000000000000000000000000000000000000
--- a/modules/ui_patterns_devel/ui_patterns_devel.links.task.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-ui_patterns_devel.overview:
-  route_name: ui_patterns_devel.twig_validator
-  title: "Overview"
-  base_route: ui_patterns_devel.twig_validator
-
-ui_patterns_devel.overview_details:
-  route_name: ui_patterns_devel.twig_validator.details
-  title: "Details"
-  base_route: ui_patterns_devel.twig_validator
diff --git a/modules/ui_patterns_devel/ui_patterns_devel.routing.yml b/modules/ui_patterns_devel/ui_patterns_devel.routing.yml
deleted file mode 100644
index 7c2034de62f7b943258d334164b270c29de8ae5d..0000000000000000000000000000000000000000
--- a/modules/ui_patterns_devel/ui_patterns_devel.routing.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-ui_patterns_devel.twig_validator:
-  path: "/admin/reports/ui-components"
-  defaults:
-    _title: "Components status report"
-    _controller: '\Drupal\ui_patterns_devel\Controller\UIPatternsDevelDeprecate'
-  requirements:
-    _permission: "access components page+access site reports"
-
-ui_patterns_devel.twig_validator.details:
-  path: "/admin/reports/ui-components/details"
-  defaults:
-    _title: "Components status report"
-    _controller: '\Drupal\ui_patterns_devel\Controller\UIPatternsDevelDeprecate'
-  requirements:
-    _permission: "access components page+access site reports"
-
-ui_patterns_devel.twig_validator.component:
-  path: "/admin/reports/ui-components/component/{component_id}"
-  defaults:
-    _title: "Components status report"
-    _controller: '\Drupal\ui_patterns_devel\Controller\UIPatternsDevelDeprecate'
-    component_id: ""
-  requirements:
-    _permission: "access components page+access site reports"
diff --git a/modules/ui_patterns_legacy/src/Element/ComponentElementAlter.php b/modules/ui_patterns_legacy/src/Element/ComponentElementAlter.php
index 483b2ce5900ebef73c30f062166bd08c7e5cc3ae..41829eafda1af2ed11c68ae505979bf934df27c8 100644
--- a/modules/ui_patterns_legacy/src/Element/ComponentElementAlter.php
+++ b/modules/ui_patterns_legacy/src/Element/ComponentElementAlter.php
@@ -67,10 +67,7 @@ class ComponentElementAlter implements TrustedCallbackInterface {
    */
   protected function addPreviewStory(array $element): array {
     $component = $this->componentPluginManager->getDefinition($element["#component"]);
-    // ::mergeStories() is a temporary compatibility layer.
-    // @todo Replace by StoryPluginManager::getComponentStories() before 2.0.0
-    // release.
-    $component = $this->storyPluginManager->mergeStories($component['id'], $component);
+    $component['stories'] = $this->storyPluginManager->getComponentStories($component['id']);
     if (!isset($component["stories"])) {
       return $element;
     }
diff --git a/modules/ui_patterns_library/src/Controller/LibraryController.php b/modules/ui_patterns_library/src/Controller/LibraryController.php
index 24a4fca020d0b946ee2afbddc98fbfc554ab0bfa..9797f69bd77bddf589d3468356e5837db338a7d0 100644
--- a/modules/ui_patterns_library/src/Controller/LibraryController.php
+++ b/modules/ui_patterns_library/src/Controller/LibraryController.php
@@ -66,10 +66,7 @@ class LibraryController extends ControllerBase {
   public function single(string $provider, string $machineName) {
     $id = $provider . ":" . $machineName;
     $definition = $this->componentPluginManager->getDefinition($id);
-    // ::mergeStories() is a temporary compatibility layer.
-    // @todo Replace by StoryPluginManager::getComponentStories() before 2.0.0
-    // release.
-    $definition = $this->storyPluginManager->mergeStories($id, $definition, TRUE);
+    $definition['stories'] = $this->storyPluginManager->getComponentStories($id);
     return [
       '#theme' => 'ui_patterns_single_page',
       '#component' => $definition,
@@ -106,10 +103,7 @@ class LibraryController extends ControllerBase {
     foreach ($grouped_definitions as $group_id => $definitions) {
       foreach ($definitions as $definition_id => $definition) {
         if ($definition['provider'] == $provider) {
-          // ::mergeStories() is a temporary compatibility layer.
-          // @todo Replace by StoryPluginManager::getComponentStories() before
-          // 2.0.0 release.
-          $definition = $this->storyPluginManager->mergeStories($definition_id, $definition, TRUE);
+          $definition['stories'] = $this->storyPluginManager->getComponentStories($definition_id);
           $groups[$group_id][$definition_id] = $definition;
         }
       }
@@ -131,10 +125,7 @@ class LibraryController extends ControllerBase {
     $grouped_definitions = $this->componentPluginManager->getGroupedDefinitions();
     foreach ($grouped_definitions as $group_id => $definitions) {
       foreach ($definitions as $definition_id => $definition) {
-        // ::mergeStories() is a temporary compatibility layer.
-        // @todo Replace by StoryPluginManager::getComponentStories() before
-        // 2.0.0 release.
-        $definition = $this->storyPluginManager->mergeStories($definition_id, $definition, TRUE);
+        $definition['stories'] = $this->storyPluginManager->getComponentStories($definition_id);
         $groups[$group_id][$definition_id] = $definition;
       }
     }
diff --git a/modules/ui_patterns_library/src/Element/ComponentElementAlter.php b/modules/ui_patterns_library/src/Element/ComponentElementAlter.php
index 1cd797ffae66f7414c0cd5d47f131e8f30354f23..04ee3c5e0e42a35a599a7f4ee56020e5f139b60f 100644
--- a/modules/ui_patterns_library/src/Element/ComponentElementAlter.php
+++ b/modules/ui_patterns_library/src/Element/ComponentElementAlter.php
@@ -55,10 +55,7 @@ class ComponentElementAlter implements TrustedCallbackInterface {
     }
     $story_id = $element["#story"];
     $component = $this->componentPluginManager->getDefinition($element["#component"]);
-    // ::mergeStories() is a temporary compatibility layer.
-    // @todo Replace by StoryPluginManager::getComponentStories() before 2.0.0
-    // release.
-    $component = $this->storyPluginManager->mergeStories($component['id'], $component);
+    $component["stories"] = $this->storyPluginManager->getComponentStories($element["#component"]);
     if (!isset($component["stories"])) {
       return $element;
     }
diff --git a/modules/ui_patterns_library/src/StoryPluginManager.php b/modules/ui_patterns_library/src/StoryPluginManager.php
index 367b5f8b7a5a847cfc3444910abec8989528a10b..84e5ec44d8138703ba19495efaa6e574136e91a5 100644
--- a/modules/ui_patterns_library/src/StoryPluginManager.php
+++ b/modules/ui_patterns_library/src/StoryPluginManager.php
@@ -168,39 +168,6 @@ final class StoryPluginManager extends DefaultPluginManager {
     return (bool) preg_match($regex, $component_id);
   }
 
-  /**
-   * Merge stories (temporary compatibility layer).
-   *
-   * Initially, the stories were authored inside the component definition.
-   * They are now they own plugins with their own definition files.
-   * To not break the projects using the previous format, we are merging
-   * everything. But this is a temporary solution.
-   */
-  public function mergeStories(string $component_id, array $definition, bool $display_warning = FALSE): array {
-    $legacy_stories = $definition["stories"] ?? [];
-    if (!empty($legacy_stories) && $display_warning) {
-      $this->messenger->addWarning(
-        t("@component is still using the obsolete stories format. Move the stories from the component definition to their own files.",
-        ["@component" => $component_id])
-      );
-    }
-    $definition["stories"] = array_merge(
-      $legacy_stories,
-      $this->getComponentStories($component_id),
-    );
-    // Also, we went from 'title' to 'name' in order to increase compatibility
-    // with sdc_styleguide. See #3464909.
-    foreach ($definition["stories"] as $story_id => $story) {
-      if (!isset($story["name"]) && isset($story["title"])) {
-        $definition["stories"][$story_id]["name"] = $story["title"];
-      }
-      if (isset($story["name"]) && !isset($story["title"])) {
-        $definition["stories"][$story_id]["title"] = $story["name"];
-      }
-    }
-    return $definition;
-  }
-
   /**
    * {@inheritdoc}
    */
diff --git a/src/Template/TwigExtension.php b/src/Template/TwigExtension.php
index e2ed184a6ef52c24fe48e0b245f39177db6b5b3c..10e14dac6baec41abe699043a0fb3fe2600f6a03 100644
--- a/src/Template/TwigExtension.php
+++ b/src/Template/TwigExtension.php
@@ -59,8 +59,6 @@ class TwigExtension extends AbstractExtension {
    */
   public function getFunctions() {
     return [
-      // @todo Remove component() before 2.0.0 release.
-      new TwigFunction('component', [$this, 'renderComponent']),
       // For ComponentNodeVisitorBeforeSdc.
       new TwigFunction('_ui_patterns_normalize_props', [$this, 'normalizeProps'], ['needs_context' => TRUE]),
       // For ComponentNodeVisitorAfterSdc.
@@ -78,31 +76,6 @@ class TwigExtension extends AbstractExtension {
     ];
   }
 
-  /**
-   * Render given component.
-   *
-   * @param string $component_id
-   *   Component ID.
-   * @param array $slots
-   *   Pattern slots.
-   * @param array $props
-   *   Pattern props.
-   *
-   * @return array
-   *   Pattern render array.
-   *
-   * @see \Drupal\Core\Theme\Element\ComponentElement
-   */
-  public function renderComponent(string $component_id, array $slots = [], array $props = []) {
-    $this->messenger->addWarning("component() Twig function is deprecated in favor of include() function and will be removed before 2.0.0.");
-    return [
-      '#type' => 'component',
-      '#component' => $component_id,
-      '#slots' => $slots,
-      '#props' => $props,
-    ];
-  }
-
   /**
    * Normalize props (and slots).
    *