diff --git a/examples/all-clusters-minimal-app/tizen/.gn b/examples/all-clusters-minimal-app/tizen/.gn
deleted file mode 100644
index edd34d3..0000000
--- a/examples/all-clusters-minimal-app/tizen/.gn
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2020 Project CHIP Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import("//build_overrides/build.gni")
-
-# The location of the build configuration file.
-buildconfig = "${build_root}/config/BUILDCONFIG.gn"
-
-# CHIP uses angle bracket includes.
-check_system_includes = true
-
-default_args = {
-  target_os = "tizen"
-
-  import("//args.gni")
-}
diff --git a/examples/all-clusters-minimal-app/tizen/BUILD.gn b/examples/all-clusters-minimal-app/tizen/BUILD.gn
deleted file mode 100644
index 99f857e..0000000
--- a/examples/all-clusters-minimal-app/tizen/BUILD.gn
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) 2020 Project CHIP Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import("//build_overrides/chip.gni")
-import("//build_overrides/tizen.gni")
-
-import("${chip_root}/build/chip/tools.gni")
-import("${chip_root}/src/app/common_flags.gni")
-
-import("${tizen_sdk_build_root}/tizen_sdk.gni")
-assert(chip_build_tools)
-
-source_set("chip-all-clusters-common") {
-  sources = [
-    "${chip_root}/examples/all-clusters-app/all-clusters-common/src/binding-handler.cpp",
-    "${chip_root}/examples/all-clusters-app/all-clusters-common/src/bridged-actions-stub.cpp",
-    "${chip_root}/examples/all-clusters-app/all-clusters-common/src/smco-stub.cpp",
-    "${chip_root}/examples/all-clusters-app/all-clusters-common/src/static-supported-modes-manager.cpp",
-  ]
-
-  deps = [
-    "${chip_root}/examples/all-clusters-minimal-app/all-clusters-common",
-    "${chip_root}/examples/platform/tizen:app-main",
-    "${chip_root}/src/lib/shell:shell_core",
-  ]
-
-  include_dirs =
-      [ "${chip_root}/examples/all-clusters-app/all-clusters-common/include" ]
-}
-
-executable("chip-all-clusters-minimal-app") {
-  sources = [
-    "include/CHIPProjectAppConfig.h",
-    "src/main.cpp",
-  ]
-
-  deps = [
-    ":chip-all-clusters-common",
-    "${chip_root}/examples/all-clusters-minimal-app/all-clusters-common",
-    "${chip_root}/examples/platform/tizen:app-main",
-    "${chip_root}/src/lib",
-  ]
-
-  include_dirs = [
-    "${chip_root}/examples/all-clusters-app/all-clusters-common/include",
-    "include",
-  ]
-
-  output_dir = root_out_dir
-}
-
-tizen_sdk_package("chip-all-clusters-minimal-app:tpk") {
-  deps = [
-    ":chip-all-clusters-minimal-app",
-    "${chip_root}/examples/platform/tizen:author-certificate-CHIP",
-  ]
-  manifest = "tizen-manifest.xml"
-  sign_security_profile = "CHIP"
-}
-
-group("tizen") {
-  deps = [ ":chip-all-clusters-minimal-app" ]
-}
-
-group("tizen:tpk") {
-  deps = [ ":chip-all-clusters-minimal-app:tpk" ]
-}
-
-group("default") {
-  deps = [ ":tizen" ]
-}
diff --git a/examples/all-clusters-minimal-app/tizen/args.gni b/examples/all-clusters-minimal-app/tizen/args.gni
deleted file mode 100644
index bf1ef52..0000000
--- a/examples/all-clusters-minimal-app/tizen/args.gni
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (c) 2020 Project CHIP Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import("//build_overrides/chip.gni")
-
-import("${chip_root}/config/standalone/args.gni")
-
-chip_device_project_config_include = "<CHIPProjectAppConfig.h>"
-chip_project_config_include = "<CHIPProjectAppConfig.h>"
-chip_system_project_config_include = "<SystemProjectConfig.h>"
-
-chip_project_config_include_dirs =
-    [ "${chip_root}/examples/all-clusters-minimal-app/tizen/include" ]
-chip_project_config_include_dirs += [ "${chip_root}/config/standalone" ]
diff --git a/examples/all-clusters-minimal-app/tizen/build_overrides b/examples/all-clusters-minimal-app/tizen/build_overrides
deleted file mode 120000
index e578e73..0000000
--- a/examples/all-clusters-minimal-app/tizen/build_overrides
+++ /dev/null
@@ -1 +0,0 @@
-../../build_overrides
\ No newline at end of file
diff --git a/examples/all-clusters-minimal-app/tizen/include/CHIPProjectAppConfig.h b/examples/all-clusters-minimal-app/tizen/include/CHIPProjectAppConfig.h
deleted file mode 100644
index cecc041..0000000
--- a/examples/all-clusters-minimal-app/tizen/include/CHIPProjectAppConfig.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *
- *    Copyright (c) 2020 Project CHIP Authors
- *    All rights reserved.
- *
- *    Licensed under the Apache License, Version 2.0 (the "License");
- *    you may not use this file except in compliance with the License.
- *    You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *    Unless required by applicable law or agreed to in writing, software
- *    distributed under the License is distributed on an "AS IS" BASIS,
- *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *    See the License for the specific language governing permissions and
- *    limitations under the License.
- */
-
-/**
- *    @file
- *          Example project configuration file for CHIP.
- *
- *          This is a place to put application or project-specific overrides
- *          to the default configuration values for general CHIP features.
- *
- */
-
-#pragma once
-
-// include the CHIPProjectConfig from config/standalone
-#include <CHIPProjectConfig.h>
diff --git a/examples/all-clusters-minimal-app/tizen/src/main.cpp b/examples/all-clusters-minimal-app/tizen/src/main.cpp
deleted file mode 100644
index 2d37747..0000000
--- a/examples/all-clusters-minimal-app/tizen/src/main.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *
- *    Copyright (c) 2020 Project CHIP Authors
- *    All rights reserved.
- *
- *    Licensed under the Apache License, Version 2.0 (the "License");
- *    you may not use this file except in compliance with the License.
- *    You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *    Unless required by applicable law or agreed to in writing, software
- *    distributed under the License is distributed on an "AS IS" BASIS,
- *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *    See the License for the specific language governing permissions and
- *    limitations under the License.
- */
-
-#include <app-common/zap-generated/ids/Attributes.h>
-#include <app-common/zap-generated/ids/Clusters.h>
-#include <app/ConcreteAttributePath.h>
-#include <app/clusters/network-commissioning/network-commissioning.h>
-#include <app/util/endpoint-config-api.h>
-#include <platform/Tizen/NetworkCommissioningDriver.h>
-#include <static-supported-modes-manager.h>
-
-#include <TizenServiceAppMain.h>
-#include <binding-handler.h>
-
-using namespace chip;
-using namespace chip::app;
-using namespace chip::DeviceLayer;
-
-// Network commissioning
-namespace {
-constexpr EndpointId kNetworkCommissioningEndpointMain      = 0;
-constexpr EndpointId kNetworkCommissioningEndpointSecondary = 0xFFFE;
-
-NetworkCommissioning::TizenEthernetDriver sEthernetDriver;
-Clusters::ModeSelect::StaticSupportedModesManager sStaticSupportedModesManager;
-Clusters::NetworkCommissioning::Instance sEthernetNetworkCommissioningInstance(kNetworkCommissioningEndpointMain, &sEthernetDriver);
-} // namespace
-
-void ApplicationInit()
-{
-    // Enable secondary endpoint only when we need it.
-    emberAfEndpointEnableDisable(kNetworkCommissioningEndpointSecondary, false);
-
-    sEthernetNetworkCommissioningInstance.Init();
-    Clusters::ModeSelect::setSupportedModesManager(&sStaticSupportedModesManager);
-}
-
-void ApplicationShutdown(){};
-
-int main(int argc, char * argv[])
-{
-    TizenServiceAppMain app;
-    VerifyOrDie(app.Init(argc, argv) == 0);
-
-    VerifyOrDie(InitBindingHandlers() == CHIP_NO_ERROR);
-
-    return app.RunMainLoop();
-}
diff --git a/examples/all-clusters-minimal-app/tizen/third_party/connectedhomeip b/examples/all-clusters-minimal-app/tizen/third_party/connectedhomeip
deleted file mode 120000
index 11a54ed..0000000
--- a/examples/all-clusters-minimal-app/tizen/third_party/connectedhomeip
+++ /dev/null
@@ -1 +0,0 @@
-../../../../
\ No newline at end of file
diff --git a/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml b/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml
deleted file mode 100644
index cbd365a..0000000
--- a/examples/all-clusters-minimal-app/tizen/tizen-manifest.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="6.0" package="org.tizen.matter.example.allclustersminimal" version="1.0.0">
-    <profile name="mobile" />
-    <service-application appid="org.tizen.matter.example.allclustersminimal" exec="chip-all-clusters-minimal-app" type="capp" multiple="false" taskmanage="false" nodisplay="true">
-        <label>Matter All Clusters Minimal Example</label>
-    </service-application>
-    <privileges>
-        <privilege>http://tizen.org/privilege/bluetooth</privilege>
-        <privilege>http://tizen.org/privilege/internet</privilege>
-        <privilege>http://tizen.org/privilege/network.get</privilege>
-        <privilege>http://tizen.org/privilege/network.set</privilege>
-        <privilege>http://tizen.org/privilege/network.profile</privilege>
-    </privileges>
-    <feature name="http://tizen.org/feature/network.bluetooth">true</feature>
-    <feature name="http://tizen.org/feature/network.bluetooth.le">true</feature>
-    <feature name="http://tizen.org/feature/network.bluetooth.le.gatt.server">true</feature>
-    <feature name="http://tizen.org/feature/network.service_discovery.dnssd">true</feature>
-    <feature name="http://tizen.org/feature/network.wifi">true</feature>
-</manifest>
diff --git a/scripts/build/build/targets.py b/scripts/build/build/targets.py
index 0539af8..42738ad 100755
--- a/scripts/build/build/targets.py
+++ b/scripts/build/build/targets.py
@@ -669,7 +669,6 @@
     # apps
     target.AppendFixedTargets([
         TargetPart('all-clusters', app=TizenApp.ALL_CLUSTERS),
-        TargetPart('all-clusters-minimal', app=TizenApp.ALL_CLUSTERS_MINIMAL),
         TargetPart('chip-tool', app=TizenApp.CHIP_TOOL),
         TargetPart('light', app=TizenApp.LIGHT),
         TargetPart('tests', app=TizenApp.TESTS),
diff --git a/scripts/build/builders/tizen.py b/scripts/build/builders/tizen.py
index b9b9c59..8c79688 100644
--- a/scripts/build/builders/tizen.py
+++ b/scripts/build/builders/tizen.py
@@ -39,11 +39,6 @@
         'examples/all-clusters-app/tizen',
         ('chip-all-clusters-app',
          'chip-all-clusters-app.map'))
-    ALL_CLUSTERS_MINIMAL = App(
-        'chip-all-clusters-minimal-app',
-        'examples/all-clusters-minimal-app/tizen',
-        ('chip-all-clusters-minimal-app',
-         'chip-all-clusters-minimal-app.map'))
     LIGHT = App(
         'chip-lighting-app',
         'examples/lighting-app/tizen',
diff --git a/scripts/build/testdata/all_targets_linux_x64.txt b/scripts/build/testdata/all_targets_linux_x64.txt
index 51d5070..c9a9a40 100644
--- a/scripts/build/testdata/all_targets_linux_x64.txt
+++ b/scripts/build/testdata/all_targets_linux_x64.txt
@@ -21,6 +21,6 @@
 nuttx-x64-light
 qpg-qpg6105-{lock,light,shell,persistent-storage,light-switch,thermostat}[-updateimage][-data-model-disabled][-data-model-enabled]
 stm32-stm32wb5mm-dk-light
-tizen-arm-{all-clusters,all-clusters-minimal,chip-tool,light,tests}[-no-ble][-no-thread][-no-wifi][-asan][-ubsan][-with-ui]
+tizen-arm-{all-clusters,chip-tool,light,tests}[-no-ble][-no-thread][-no-wifi][-asan][-ubsan][-with-ui]
 telink-{tlsr9118bdk40d,tlsr9518adk80d,tlsr9528a,tlsr9528a_retention,tlsr9258a,tlsr9258a_retention}-{air-quality-sensor,all-clusters,all-clusters-minimal,bridge,contact-sensor,light,light-switch,lock,ota-requestor,pump,pump-controller,shell,smoke-co-alarm,temperature-measurement,thermostat,window-covering}[-ota][-dfu][-shell][-rpc][-factory-data][-4mb][-mars][-usb][-data-model-disabled][-data-model-enabled]
 openiotsdk-{shell,lock}[-mbedtls][-psa]
