diff --git a/BUILD.gn b/BUILD.gn
index bc43ef76c2848..a05810690041d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -459,12 +459,12 @@ group("gn_all") {
     if (is_chromeos_ash) {
       deps += [
         "//ash:ash_unittests",
-        "//ash/components:ash_components_unittests",
         "//ash/keyboard/ui:keyboard_unittests",
         "//ash/webui:ash_webui_unittests",
         "//chrome/browser/ash/child_accounts/time_limit_consistency_test:usage_time_limit_unittests",
         "//chrome/browser/metrics/perf:profile_provider_unittest",
         "//chromeos/ash/components/proximity_auth:proximity_auth_unittests",
+        "//chromeos/ash/experiences:ash_components_unittests",
         "//chromeos/components:chromeos_components_unittests",
         "//components/exo/wayland:wayland_client_compatibility_tests",
         "//components/session_manager/core",
diff --git a/ash/README.md b/ash/README.md
index 7160b3d403e22..e6419f02891c4 100644
--- a/ash/README.md
+++ b/ash/README.md
@@ -10,7 +10,6 @@ Ash sits below chrome in the dependency graph (i.e. it cannot depend on code
 in //chrome). For historical reasons, ash has multiple dependency levels:
 
 *   General //ash code is on top (//ash/system, //ash/wm, etc.)
-*   //ash/components sit below //ash, see [README](/ash/components/README.md)
 *   //ash/constants sit near the bottom of the dependency graph, see
     [README](/ash/constants/README.md)
 
diff --git a/ash/components/OWNERS b/ash/components/OWNERS
deleted file mode 100644
index ac65600a0465f..0000000000000
--- a/ash/components/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# Code is migrating here from //chromeos/components, so share owners.
-# See go/lacros-directory-migration
-file://chromeos/components/OWNERS
diff --git a/ash/components/README.md b/ash/components/README.md
deleted file mode 100644
index f0a9d9db24fe7..0000000000000
--- a/ash/components/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-DEPRECATED. If you're about adding new component for ash-chrome only,
-consider using //chromeos/ash/components.
-
-# About //ash/components
-
-This directory contains components that are used by //ash system UI and window
-manager code. It sits "below" //ash in the dependency graph. For C++ code,
-think of //ash/components like top-level //components, but for code that is
-only used on ChromeOS, and only for system UI / window manager support.
-
-Much of this code used to live in //chromeos/components. The
-[Lacros project](/docs/lacros.md) is extracting browser functionality into a
-separate binary. As part of this migration, code used only by the ash-chrome
-system UI binary moved into "ash" directories. See the
-[Chrome OS source directory migration](https://docs.google.com/document/d/1g-98HpzA8XcoGBWUv1gQNr4rbnD5yfvbtYZyPDDbkaE/edit)
-design doc for details.
diff --git a/ash/webui/README.md b/ash/webui/README.md
index 5602afce9ec7d..988debee947ab 100644
--- a/ash/webui/README.md
+++ b/ash/webui/README.md
@@ -1,12 +1,14 @@
 # //ash/webui
 
+DEPRECATED: please consider to use //chromeos/ash/experiences/..., instead.
+
 //ash/webui contains code that is Chrome OS-specific WebUI for system web
 apps and has dependencies on //content.
 
 General purpose window manager or system UI code should not have content
 dependencies, and should not live in this directory. Prefer a different
 top-level ash directory, like //ash/system, //ash/wm, or add
-//ash/your_feature. Low-level components go in //ash/components/your_feature.
+//ash/your_feature. Low-level components go in //chromeos/ash/components/your_feature.
 
 Each subdirectory should be its own separate "module", and have its own
 BUILD.gn file. See this directory's [BUILD.gn file][1] for tips on adding
diff --git a/buildtools/checkdeps/README.md b/buildtools/checkdeps/README.md
index 48f4c1ce08570..65fbcfdebafb9 100644
--- a/buildtools/checkdeps/README.md
+++ b/buildtools/checkdeps/README.md
@@ -75,8 +75,9 @@ specific_include_rules = {
 
 You can optionally ignore the rules inherited from parent directories, similar
 to "set noparent" in OWNERS files. For example, adding `noparent = True` in
-//ash/components/DEPS will cause rules from //ash/DEPS to be ignored, thereby
-forcing each //ash/component/foo to explicitly declare foo's dependencies.
+//chromeos/ash/components/DEPS will cause rules from //chromeos/ash/DEPS
+to be ignored, thereby forcing each //ash/component/foo to explicitly declare
+foo's dependencies.
 
 ```
 noparent = True
diff --git a/buildtools/checkdeps/builddeps.py b/buildtools/checkdeps/builddeps.py
index 0cf709a31ce79..e2d5e72f29ae0 100755
--- a/buildtools/checkdeps/builddeps.py
+++ b/buildtools/checkdeps/builddeps.py
@@ -34,9 +34,9 @@ SPECIFIC_INCLUDE_RULES_VAR_NAME = 'specific_include_rules'
 SKIP_SUBDIRS_VAR_NAME = 'skip_child_includes'
 
 # Optionally discard rules from parent directories, similar to "noparent" in
-# OWNERS files. For example, if //ash/components has "noparent = True" then
-# it will not inherit rules from //ash/DEPS, forcing each //ash/component/foo
-# to declare all its dependencies.
+# OWNERS files. For example, if //chromeos/ash/experiences has "noparent = True"
+# then it will not inherit rules from //chromeos/ash/DEPS, forcing each
+# //chromeos/ash/experiences/foo to declare all its dependencies.
 NOPARENT_VAR_NAME = 'noparent'
 
 
diff --git a/ash/components/BUILD.gn b/chromeos/ash/experiences/BUILD.gn
similarity index 84%
rename from ash/components/BUILD.gn
rename to chromeos/ash/experiences/BUILD.gn
index 8f8faa23ea0c8..23d39432f7b03 100644
--- a/ash/components/BUILD.gn
+++ b/chromeos/ash/experiences/BUILD.gn
@@ -2,14 +2,15 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//build/config/chromeos/ui_mode.gni")
 import("//build/config/ui.gni")
 import("//testing/test.gni")
 
-assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //ash")
+assert(is_chromeos, "Non-ChromeOS builds cannot depend on //chromeos/ash")
 
 # To add a unit test to this target, make a "unit_test" source_set in your
 # component and add a reference here.
+# Note: For historical reasons, the name "ash_components_unittests" is kept,
+# rather than "chromeos_experiences_unittests".
 test("ash_components_unittests") {
   use_xvfb = use_xvfb_in_this_config
 
diff --git a/ash/components/test/DEPS b/chromeos/ash/experiences/test/DEPS
similarity index 100%
rename from ash/components/test/DEPS
rename to chromeos/ash/experiences/test/DEPS
diff --git a/ash/components/test/run_all_unittests.cc b/chromeos/ash/experiences/test/run_all_unittests.cc
similarity index 100%
rename from ash/components/test/run_all_unittests.cc
rename to chromeos/ash/experiences/test/run_all_unittests.cc
diff --git a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Builder/targets/chromium.memory.json b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Builder/targets/chromium.memory.json
index a26bdee87b8c8..8083118ecd546 100644
--- a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Builder/targets/chromium.memory.json	
+++ b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Builder/targets/chromium.memory.json	
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/targets/chromium.memory.json b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/targets/chromium.memory.json
index a26bdee87b8c8..8083118ecd546 100644
--- a/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/targets/chromium.memory.json	
+++ b/infra/config/generated/builders/ci/Linux Chromium OS ASan LSan Tests (1)/targets/chromium.memory.json	
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Builder/targets/chromium.memory.json b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Builder/targets/chromium.memory.json
index c25d70cbaf053..a2122e9531da9 100644
--- a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Builder/targets/chromium.memory.json	
+++ b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Builder/targets/chromium.memory.json	
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/targets/chromium.memory.json b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/targets/chromium.memory.json
index c25d70cbaf053..a2122e9531da9 100644
--- a/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/targets/chromium.memory.json	
+++ b/infra/config/generated/builders/ci/Linux ChromiumOS MSan Tests/targets/chromium.memory.json	
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/ci/linux-chromeos-code-coverage/targets/chromium.coverage.json b/infra/config/generated/builders/ci/linux-chromeos-code-coverage/targets/chromium.coverage.json
index ca20bca8455e5..74c7bf1aefed2 100644
--- a/infra/config/generated/builders/ci/linux-chromeos-code-coverage/targets/chromium.coverage.json
+++ b/infra/config/generated/builders/ci/linux-chromeos-code-coverage/targets/chromium.coverage.json
@@ -83,7 +83,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "isolate_profile_data": true,
diff --git a/infra/config/generated/builders/ci/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json b/infra/config/generated/builders/ci/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
index 3ba6062f44d31..e385c23c31bd2 100644
--- a/infra/config/generated/builders/ci/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
+++ b/infra/config/generated/builders/ci/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
@@ -80,7 +80,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/infra/config/generated/builders/ci/linux-chromeos-dbg/targets/chromium.chromiumos.json b/infra/config/generated/builders/ci/linux-chromeos-dbg/targets/chromium.chromiumos.json
index 7c65bfbfee2d7..4714e89cd497f 100644
--- a/infra/config/generated/builders/ci/linux-chromeos-dbg/targets/chromium.chromiumos.json
+++ b/infra/config/generated/builders/ci/linux-chromeos-dbg/targets/chromium.chromiumos.json
@@ -75,7 +75,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/infra/config/generated/builders/ci/linux-chromeos-rel/targets/chromium.chromiumos.json b/infra/config/generated/builders/ci/linux-chromeos-rel/targets/chromium.chromiumos.json
index 8bf2350d10970..d9dd130352b1e 100644
--- a/infra/config/generated/builders/ci/linux-chromeos-rel/targets/chromium.chromiumos.json
+++ b/infra/config/generated/builders/ci/linux-chromeos-rel/targets/chromium.chromiumos.json
@@ -84,7 +84,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/try/linux-chromeos-code-coverage/targets/chromium.coverage.json b/infra/config/generated/builders/try/linux-chromeos-code-coverage/targets/chromium.coverage.json
index ca20bca8455e5..74c7bf1aefed2 100644
--- a/infra/config/generated/builders/try/linux-chromeos-code-coverage/targets/chromium.coverage.json
+++ b/infra/config/generated/builders/try/linux-chromeos-code-coverage/targets/chromium.coverage.json
@@ -83,7 +83,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "isolate_profile_data": true,
diff --git a/infra/config/generated/builders/try/linux-chromeos-compile-dbg/targets/chromium.chromiumos.json b/infra/config/generated/builders/try/linux-chromeos-compile-dbg/targets/chromium.chromiumos.json
index 7c65bfbfee2d7..4714e89cd497f 100644
--- a/infra/config/generated/builders/try/linux-chromeos-compile-dbg/targets/chromium.chromiumos.json
+++ b/infra/config/generated/builders/try/linux-chromeos-compile-dbg/targets/chromium.chromiumos.json
@@ -75,7 +75,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/infra/config/generated/builders/try/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json b/infra/config/generated/builders/try/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
index 3ba6062f44d31..e385c23c31bd2 100644
--- a/infra/config/generated/builders/try/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
+++ b/infra/config/generated/builders/try/linux-chromeos-dbg-oslogin/targets/chromium.fyi.json
@@ -80,7 +80,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/infra/config/generated/builders/try/linux-chromeos-dbg/targets/chromium.chromiumos.json b/infra/config/generated/builders/try/linux-chromeos-dbg/targets/chromium.chromiumos.json
index 7c65bfbfee2d7..4714e89cd497f 100644
--- a/infra/config/generated/builders/try/linux-chromeos-dbg/targets/chromium.chromiumos.json
+++ b/infra/config/generated/builders/try/linux-chromeos-dbg/targets/chromium.chromiumos.json
@@ -75,7 +75,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/infra/config/generated/builders/try/linux-chromeos-rel/targets/chromium.chromiumos.json b/infra/config/generated/builders/try/linux-chromeos-rel/targets/chromium.chromiumos.json
index 8bf2350d10970..d9dd130352b1e 100644
--- a/infra/config/generated/builders/try/linux-chromeos-rel/targets/chromium.chromiumos.json
+++ b/infra/config/generated/builders/try/linux-chromeos-rel/targets/chromium.chromiumos.json
@@ -84,7 +84,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/try/linux_chromium_chromeos_asan_rel_ng/targets/chromium.memory.json b/infra/config/generated/builders/try/linux_chromium_chromeos_asan_rel_ng/targets/chromium.memory.json
index a26bdee87b8c8..8083118ecd546 100644
--- a/infra/config/generated/builders/try/linux_chromium_chromeos_asan_rel_ng/targets/chromium.memory.json
+++ b/infra/config/generated/builders/try/linux_chromium_chromeos_asan_rel_ng/targets/chromium.memory.json
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/builders/try/linux_chromium_chromeos_msan_rel_ng/targets/chromium.memory.json b/infra/config/generated/builders/try/linux_chromium_chromeos_msan_rel_ng/targets/chromium.memory.json
index c25d70cbaf053..a2122e9531da9 100644
--- a/infra/config/generated/builders/try/linux_chromium_chromeos_msan_rel_ng/targets/chromium.memory.json
+++ b/infra/config/generated/builders/try/linux_chromium_chromeos_msan_rel_ng/targets/chromium.memory.json
@@ -90,7 +90,7 @@
           "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "args": [
diff --git a/infra/config/generated/testing/gn_isolate_map.pyl b/infra/config/generated/testing/gn_isolate_map.pyl
index 9e0648dfd135f..5cc8849af35c6 100644
--- a/infra/config/generated/testing/gn_isolate_map.pyl
+++ b/infra/config/generated/testing/gn_isolate_map.pyl
@@ -125,7 +125,7 @@
     "type": "windowed_test_launcher",
   },
   "ash_components_unittests": {
-    "label": "//ash/components:ash_components_unittests",
+    "label": "//chromeos/ash/experiences:ash_components_unittests",
     "type": "windowed_test_launcher",
   },
   "ash_pixeltests": {
diff --git a/infra/config/targets/binaries.star b/infra/config/targets/binaries.star
index b3fa6a5cedf31..6f7e42e38af23 100644
--- a/infra/config/targets/binaries.star
+++ b/infra/config/targets/binaries.star
@@ -159,7 +159,7 @@ targets.binaries.windowed_test_launcher(
 
 targets.binaries.windowed_test_launcher(
     name = "ash_components_unittests",
-    label = "//ash/components:ash_components_unittests",
+    label = "//chromeos/ash/experiences:ash_components_unittests",
 )
 
 targets.binaries.windowed_test_launcher(
diff --git a/testing/buildbot/chrome.json b/testing/buildbot/chrome.json
index 6326c4c9de864..4fb59e8a5f2e8 100644
--- a/testing/buildbot/chrome.json
+++ b/testing/buildbot/chrome.json
@@ -2362,7 +2362,7 @@
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {
diff --git a/testing/buildbot/chromeos.preuprev.json b/testing/buildbot/chromeos.preuprev.json
index 18bd7ca274373..ea606f80b5e1a 100644
--- a/testing/buildbot/chromeos.preuprev.json
+++ b/testing/buildbot/chromeos.preuprev.json
@@ -261,7 +261,7 @@
           "service_account": "chrome-tester@chops-service-accounts.iam.gserviceaccount.com"
         },
         "test": "ash_components_unittests",
-        "test_id_prefix": "ninja://ash/components:ash_components_unittests/"
+        "test_id_prefix": "ninja://chromeos/ash/experiences:ash_components_unittests/"
       },
       {
         "merge": {