diff --git a/package/features/viz.feature b/package/features/viz.feature
index d3c01e2f7f..dfe78dd5db 100644
--- a/package/features/viz.feature
+++ b/package/features/viz.feature
@@ -24,6 +24,12 @@ Feature: Viz plugin in new project
         When I execute the kedro viz run command
         Then kedro-viz should start successfully
 
+    Scenario: Execute viz lite with the earliest Kedro version that it supports 
+        Given I have installed kedro version "0.18.3"
+        And I have run a non-interactive kedro new with pandas-iris starter
+        When I execute the kedro viz run command with lite option
+        Then kedro-viz should start successfully
+
     Scenario: Execute viz lite with latest Kedro
         Given I have installed kedro version "latest"
         And I have run a non-interactive kedro new with spaceflights-pandas starter
diff --git a/package/kedro_viz/data_access/managers.py b/package/kedro_viz/data_access/managers.py
index 40e00ebe55..2799bf5f21 100644
--- a/package/kedro_viz/data_access/managers.py
+++ b/package/kedro_viz/data_access/managers.py
@@ -7,7 +7,14 @@
 
 import networkx as nx
 from kedro.io import DataCatalog
-from kedro.io.core import DatasetError
+
+try:
+    # kedro 0.18.11 onwards
+    from kedro.io.core import DatasetError
+except ImportError:  # pragma: no cover
+    # older versions
+    from kedro.io.core import DataSetError as DatasetError  # type: ignore
+
 from kedro.pipeline import Pipeline as KedroPipeline
 from kedro.pipeline.node import Node as KedroNode
 from sqlalchemy.orm import sessionmaker
diff --git a/package/kedro_viz/integrations/kedro/abstract_dataset_lite.py b/package/kedro_viz/integrations/kedro/abstract_dataset_lite.py
index 582130de00..f7317f4d18 100644
--- a/package/kedro_viz/integrations/kedro/abstract_dataset_lite.py
+++ b/package/kedro_viz/integrations/kedro/abstract_dataset_lite.py
@@ -5,7 +5,20 @@
 import logging
 from typing import Any, Optional
 
-from kedro.io.core import AbstractDataset, DatasetError
+try:
+    # kedro 0.18.11 onwards
+    from kedro.io.core import DatasetError
+except ImportError:  # pragma: no cover
+    # older versions
+    from kedro.io.core import DataSetError as DatasetError  # type: ignore
+
+try:
+    # kedro 0.18.12 onwards
+    from kedro.io.core import AbstractDataset
+except ImportError:  # pragma: no cover
+    # older versions
+    from kedro.io.core import AbstractDataSet as AbstractDataset  # type: ignore
+
 
 from kedro_viz.integrations.utils import UnavailableDataset
 
diff --git a/package/kedro_viz/integrations/kedro/data_loader.py b/package/kedro_viz/integrations/kedro/data_loader.py
index aabc5b73a5..ed7af1abb0 100644
--- a/package/kedro_viz/integrations/kedro/data_loader.py
+++ b/package/kedro_viz/integrations/kedro/data_loader.py
@@ -95,7 +95,14 @@ def _load_data_helper(
         # patch the AbstractDataset class for a custom
         # implementation to handle kedro.io.core.DatasetError
         if is_lite:
-            with patch("kedro.io.data_catalog.AbstractDataset", AbstractDatasetLite):
+            # kedro 0.18.12 onwards
+            if hasattr(sys.modules["kedro.io.data_catalog"], "AbstractDataset"):
+                abstract_ds_patch_target = "kedro.io.data_catalog.AbstractDataset"
+            else:  # pragma: no cover
+                # older versions
+                abstract_ds_patch_target = "kedro.io.data_catalog.AbstractDataSet"
+
+            with patch(abstract_ds_patch_target, AbstractDatasetLite):
                 catalog = context.catalog
         else:
             catalog = context.catalog
diff --git a/package/kedro_viz/integrations/utils.py b/package/kedro_viz/integrations/utils.py
index 1875cd7a85..43c4fe6e30 100644
--- a/package/kedro_viz/integrations/utils.py
+++ b/package/kedro_viz/integrations/utils.py
@@ -4,7 +4,12 @@
 
 from typing import Any, Union
 
-from kedro.io.core import AbstractDataset
+try:
+    # kedro 0.18.12 onwards
+    from kedro.io.core import AbstractDataset
+except ImportError:  # pragma: no cover
+    # older versions
+    from kedro.io.core import AbstractDataSet as AbstractDataset  # type: ignore
 
 _EMPTY = object()