diff --git a/modules/paragraphs_gridstack_demo/paragraphs_gridstack_demo.install b/modules/paragraphs_gridstack_demo/paragraphs_gridstack_demo.install
index a367ecd31fa87c0cffc2012ef621825670d7b17a..c07d50a4241833c7828e6bc86d893615fc040447 100644
--- a/modules/paragraphs_gridstack_demo/paragraphs_gridstack_demo.install
+++ b/modules/paragraphs_gridstack_demo/paragraphs_gridstack_demo.install
@@ -64,3 +64,52 @@ function paragraphs_gridstack_demo_install() {
     \Drupal::service('search_api.post_request_indexing')->destruct();
   }
 }
+
+/**
+ * Delete installed entities and configs.
+ *
+ * Implements hook_install().
+ */
+function paragraphs_gridstack_demo_uninstall() {
+  // Delete installed entities.
+  $gridstack_demo_node = \Drupal::service('entity_type.manager')->getStorage('node')->loadByProperties(['type' => 'gridstack_content_demo']);
+  foreach ($gridstack_demo_node as $node) {
+    $paragraphs = $node->get('field_gridstack_paragraphs')->referencedEntities();
+    foreach ($paragraphs as $paragraph) {
+      $paragraph_gridstack_entites = $paragraph->referencedEntities();
+      foreach ($paragraph_gridstack_entites as $entity) {
+        $entity->delete();
+      }
+      $paragraph->delete();
+    }
+    $node->delete();
+  }
+  // Delete configs.
+  $config_factory = \Drupal::service('config.factory');
+  $configs = [
+    'core.entity_form_display.node.gridstack_content_demo.default',
+    'core.entity_form_display.paragraph.gridstack_container.default',
+    'core.entity_view_display.node.gridstack_content_demo.teaser',
+    'core.entity_view_display.paragraph.gridstack_container.default',
+    'core.entity_view_display.paragraph.gridstack_item.default',
+    'field.field.node.gridstack_content_demo.field_gridstack_paragraphs',
+    'field.field.paragraph.gridstack_container.field_gridstack_paragraphs',
+    'field.field.paragraph.gridstack_item.field_gridstack_image',
+    'field.field.paragraph.gridstack_item.field_gridstack_subtitle',
+    'field.field.paragraph.gridstack_item.field_gridstack_title',
+    'field.storage.node.field_gridstack_paragraphs',
+    'field.storage.paragraph.field_gridstack_image',
+    'field.storage.paragraph.field_gridstack_paragraphs',
+    'field.storage.paragraph.field_gridstack_subtitle',
+    'field.storage.paragraph.field_gridstack_title',
+    'node.type.gridstack_content_demo',
+    'paragraphs.paragraphs_type.gridstack_container',
+    'paragraphs.paragraphs_type.gridstack_item',
+    'paragraphs_gridstack.optionset.demo',
+    'core.entity_form_display.paragraph.gridstack_item.default',
+    'core.entity_view_display.node.gridstack_content_demo.default',
+  ];
+  foreach ($configs as $config) {
+    $config_factory->getEditable($config)->delete();
+  }
+}