diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index 068cc2e..6f3e9d2 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -451,7 +451,8 @@
       "../../rtc_base:divide_round",
       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem",
       "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.composition",
-      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.display.singleton",
+      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.scenic",
+      "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp",
       "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
     ]
   }
diff --git a/modules/desktop_capture/screen_capturer_fuchsia.cc b/modules/desktop_capture/screen_capturer_fuchsia.cc
index 1072b93..19c4c73 100644
--- a/modules/desktop_capture/screen_capturer_fuchsia.cc
+++ b/modules/desktop_capture/screen_capturer_fuchsia.cc
@@ -12,7 +12,7 @@
 
 #include <fuchsia/sysmem/cpp/fidl.h>
 #include <fuchsia/ui/composition/cpp/fidl.h>
-#include <fuchsia/ui/display/singleton/cpp/fidl.h>
+#include <fuchsia/ui/scenic/cpp/fidl.h>
 #include <lib/sys/cpp/component_context.h>
 
 #include <algorithm>
@@ -56,7 +56,17 @@
 
 std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
     const DesktopCaptureOptions& options) {
-  return capturer(new ScreenCapturerFuchsia());
+  if (ScreenCapturerFuchsia::CheckRequirements()) {
+    std::unique_ptr<ScreenCapturerFuchsia> capturer(
+        new ScreenCapturerFuchsia());
+    return capturer;
+  }
+  return nullptr;
+}
+
+ScreenCapturerFuchsia::ScreenCapturerFuchsia()
+    : component_context_(sys::ComponentContext::Create()) {
+  RTC_DCHECK(CheckRequirements());
 }
 
 ScreenCapturerFuchsia::~ScreenCapturerFuchsia() {
@@ -72,6 +82,26 @@
   }
 }
 
+// TODO(fxbug.dev/100303): Remove this function when Flatland is the only API.
+bool ScreenCapturerFuchsia::CheckRequirements() {
+  std::unique_ptr<sys::ComponentContext> component_context =
+      sys::ComponentContext::Create();
+  fuchsia::ui::scenic::ScenicSyncPtr scenic;
+  zx_status_t status = component_context->svc()->Connect(scenic.NewRequest());
+  if (status != ZX_OK) {
+    RTC_LOG(LS_ERROR) << "Failed to connect to Scenic: " << status;
+    return false;
+  }
+
+  bool scenic_uses_flatland = false;
+  scenic->UsesFlatland(&scenic_uses_flatland);
+  if (!scenic_uses_flatland) {
+    RTC_LOG(LS_ERROR) << "Screen capture not supported without Flatland.";
+  }
+
+  return scenic_uses_flatland;
+}
+
 void ScreenCapturerFuchsia::Start(Callback* callback) {
   RTC_DCHECK(!callback_);
   RTC_DCHECK(callback);
@@ -196,26 +226,24 @@
 }
 
 void ScreenCapturerFuchsia::SetupBuffers() {
-  fuchsia::ui::display::singleton::InfoSyncPtr display_info;
-  zx_status_t status =
-      component_context_->svc()->Connect(display_info.NewRequest());
+  fuchsia::ui::scenic::ScenicSyncPtr scenic;
+  zx_status_t status = component_context_->svc()->Connect(scenic.NewRequest());
   if (status != ZX_OK) {
     fatal_error_ = true;
-    RTC_LOG(LS_ERROR)
-        << "Failed to connect to fuchsia.ui.display.singleton.Info: " << status;
+    RTC_LOG(LS_ERROR) << "Failed to connect to Scenic: " << status;
     return;
   }
 
-  fuchsia::ui::display::singleton::Metrics metrics;
-  status = display_info->GetMetrics(&metrics);
+  fuchsia::ui::gfx::DisplayInfo display_info;
+  status = scenic->GetDisplayInfo(&display_info);
   if (status != ZX_OK) {
     fatal_error_ = true;
     RTC_LOG(LS_ERROR) << "Failed to connect to get display dimensions: "
                       << status;
     return;
   }
-  width_ = metrics.extent_in_px().width;
-  height_ = metrics.extent_in_px().height;
+  width_ = display_info.width_in_px;
+  height_ = display_info.height_in_px;
 
   status = component_context_->svc()->Connect(sysmem_allocator_.NewRequest());
   if (status != ZX_OK) {
diff --git a/modules/desktop_capture/screen_capturer_fuchsia.h b/modules/desktop_capture/screen_capturer_fuchsia.h
index 6e0f87c..4449309 100644
--- a/modules/desktop_capture/screen_capturer_fuchsia.h
+++ b/modules/desktop_capture/screen_capturer_fuchsia.h
@@ -29,6 +29,8 @@
   ScreenCapturerFuchsia();
   ~ScreenCapturerFuchsia() override;
 
+  static bool CheckRequirements();
+
   // DesktopCapturer interface.
   void Start(Callback* callback) override;
   void CaptureFrame() override;
