diff --git a/app/term/app.cc b/app/term/app.cc
index 46eae33..3acec69 100644
--- a/app/term/app.cc
+++ b/app/term/app.cc
@@ -22,12 +22,13 @@
 }  // namespace
 
 App::App(TermParams params)
-    : params_(std::move(params)), context_(sys::ComponentContext::Create()) {
-  context_->outgoing()->AddPublicService<fuchsia::ui::app::ViewProvider>(
+    : params_(std::move(params)),
+      context_(component::StartupContext::CreateFromStartupInfo()) {
+  context_->outgoing().AddPublicService<fuchsia::ui::app::ViewProvider>(
       [this](fidl::InterfaceRequest<fuchsia::ui::app::ViewProvider> request) {
         bindings_.AddBinding(this, std::move(request));
       });
-  context_->outgoing()->AddPublicService<fuchsia::term::Term>(
+  context_->outgoing().AddPublicService<fuchsia::term::Term>(
       [this](fidl::InterfaceRequest<fuchsia::term::Term> request) {
         term_bindings_.AddBinding(this, std::move(request));
       });
@@ -37,15 +38,16 @@
     zx::eventpair view_token,
     fidl::InterfaceRequest<fuchsia::sys::ServiceProvider> incoming_services,
     fidl::InterfaceHandle<fuchsia::sys::ServiceProvider> outgoing_services) {
-  auto scenic = context_->svc()->Connect<fuchsia::ui::scenic::Scenic>();
-  scenic::ViewContextTransitional view_context = {
+  auto scenic =
+      context_->ConnectToEnvironmentService<fuchsia::ui::scenic::Scenic>();
+  scenic::ViewContext view_context = {
       .enable_ime = true,
       .session_and_listener_request =
           scenic::CreateScenicSessionPtrAndListenerRequest(scenic.get()),
       .view_token = scenic::ToViewToken(std::move(view_token)),
       .incoming_services = std::move(incoming_services),
       .outgoing_services = std::move(outgoing_services),
-      .component_context = context_.get(),
+      .startup_context = context_.get(),
   };
 
   controllers_.push_back(std::make_unique<ViewController>(
diff --git a/app/term/app.h b/app/term/app.h
index 6c4ecb7..05b89d6 100644
--- a/app/term/app.h
+++ b/app/term/app.h
@@ -40,7 +40,7 @@
   App& operator=(const App&) = delete;
 
   TermParams params_;
-  std::unique_ptr<sys::ComponentContext> context_;
+  std::unique_ptr<component::StartupContext> context_;
   fidl::BindingSet<fuchsia::ui::app::ViewProvider> bindings_;
   fidl::BindingSet<fuchsia::term::Term> term_bindings_;
   fidl::BindingSet<fuchsia::term::Pty, std::unique_ptr<PtyClient>>
diff --git a/app/term/view_controller.cc b/app/term/view_controller.cc
index c40430b..426e928 100644
--- a/app/term/view_controller.cc
+++ b/app/term/view_controller.cc
@@ -6,11 +6,11 @@
 
 #include <fuchsia/fonts/cpp/fidl.h>
 #include <lib/async/default.h>
-#include <lib/ui/input/cpp/formatting.h>
 #include <lib/zx/clock.h>
 #include <unistd.h>
 #include <zircon/status.h>
 
+#include "lib/ui/input/cpp/formatting.h"
 #include "src/lib/fxl/logging.h"
 #include "src/lib/fxl/strings/string_printf.h"
 #include "third_party/skia/include/core/SkFont.h"
@@ -28,14 +28,15 @@
 
 }  // namespace
 
-ViewController::ViewController(scenic::ViewContextTransitional view_context,
+ViewController::ViewController(scenic::ViewContext view_context,
                                const TermParams& term_params,
                                DisconnectCallback disconnect_handler)
     : SkiaView(std::move(view_context), "Term"),
       disconnect_(std::move(disconnect_handler)),
       model_(TermModel::Size(24, 80), this),
       font_loader_(
-          component_context()->svc()->Connect<fuchsia::fonts::Provider>()),
+          startup_context()
+              ->ConnectToEnvironmentService<fuchsia::fonts::Provider>()),
       params_(term_params) {
   SetReleaseHandler([this](zx_status_t status) { disconnect_(this); });
 
diff --git a/app/term/view_controller.h b/app/term/view_controller.h
index 193b5d4..60c33a9 100644
--- a/app/term/view_controller.h
+++ b/app/term/view_controller.h
@@ -24,7 +24,7 @@
  public:
   using DisconnectCallback = fit::function<void(ViewController*)>;
 
-  ViewController(scenic::ViewContextTransitional view_context,
+  ViewController(scenic::ViewContext view_context,
                  const TermParams& term_params,
                  DisconnectCallback disconnect_handler);
   ~ViewController() override = default;
diff --git a/bin/ui/skottie_viewer/main.cc b/bin/ui/skottie_viewer/main.cc
index 98ad624..391686e 100644
--- a/bin/ui/skottie_viewer/main.cc
+++ b/bin/ui/skottie_viewer/main.cc
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 #include <lib/async-loop/cpp/loop.h>
-#include <lib/ui/base_view/cpp/view_provider_component_transitional.h>
 #include <trace-provider/provider.h>
 
 #include "src/lib/fxl/command_line.h"
 #include "src/lib/fxl/log_settings_command_line.h"
+#include "lib/ui/base_view/cpp/view_provider_component.h"
 #include "topaz/bin/ui/skottie_viewer/view.h"
 
 int main(int argc, const char** argv) {
@@ -18,8 +18,8 @@
   async::Loop loop(&kAsyncLoopConfigAttachToThread);
   trace::TraceProviderWithFdio trace_provider(loop.dispatcher());
 
-  scenic::ViewProviderComponentTransitional component(
-      [](scenic::ViewContextTransitional view_context) {
+  scenic::ViewProviderComponent component(
+      [](scenic::ViewContext view_context) {
         return std::make_unique<skottie::View>(std::move(view_context));
       },
       &loop);
diff --git a/bin/ui/skottie_viewer/view.cc b/bin/ui/skottie_viewer/view.cc
index 5f2b612..487cad5 100644
--- a/bin/ui/skottie_viewer/view.cc
+++ b/bin/ui/skottie_viewer/view.cc
@@ -4,8 +4,7 @@
 
 #include "topaz/bin/ui/skottie_viewer/view.h"
 
-#include <lib/fsl/vmo/vector.h>
-
+#include "lib/fsl/vmo/vector.h"
 #include "src/lib/fxl/logging.h"
 #include "third_party/skia/include/core/SkColor.h"
 
@@ -13,7 +12,7 @@
 
 constexpr float kSecondsPerNanosecond = .000'000'001f;
 
-View::View(scenic::ViewContextTransitional view_context)
+View::View(scenic::ViewContext view_context)
     : SkiaView(std::move(view_context), "Skottie View"), player_binding_(this) {
   outgoing_services().AddService(loader_bindings_.GetHandler(this));
 }
diff --git a/bin/ui/skottie_viewer/view.h b/bin/ui/skottie_viewer/view.h
index 427df2c..5f11bba 100644
--- a/bin/ui/skottie_viewer/view.h
+++ b/bin/ui/skottie_viewer/view.h
@@ -8,10 +8,10 @@
 #include <fuchsia/images/cpp/fidl.h>
 #include <fuchsia/mem/cpp/fidl.h>
 #include <fuchsia/skia/skottie/cpp/fidl.h>
-#include <lib/fidl/cpp/binding_set.h>
-#include <lib/sys/cpp/component_context.h>
 
 #include "examples/ui/lib/skia_view.h"
+#include "lib/component/cpp/startup_context.h"
+#include "lib/fidl/cpp/binding_set.h"
 #include "src/lib/fxl/macros.h"
 //#if defined(SK_ENABLE_SKOTTIE)
 #include "third_party/skia/modules/skottie/include/Skottie.h"
@@ -23,7 +23,7 @@
                    public fuchsia::skia::skottie::Loader,
                    public fuchsia::skia::skottie::Player {
  public:
-  View(scenic::ViewContextTransitional view_context);
+  View(scenic::ViewContext view_context);
   ~View() override = default;
 
   // |scenic::BaseView|
diff --git a/examples/ui/intl_client_demo/intl_client_demo_view.cc b/examples/ui/intl_client_demo/intl_client_demo_view.cc
index 5a29300..27ff677 100644
--- a/examples/ui/intl_client_demo/intl_client_demo_view.cc
+++ b/examples/ui/intl_client_demo/intl_client_demo_view.cc
@@ -25,15 +25,15 @@
 
 }  // namespace
 
-IntlClientDemoView::IntlClientDemoView(
-    scenic::ViewContextTransitional view_context)
+IntlClientDemoView::IntlClientDemoView(scenic::ViewContext view_context)
     : SkiaView(std::move(view_context), "ViewConfig Demo"),
       font_loader_(
-          component_context()->svc()->Connect<fuchsia::fonts::Provider>()),
+          startup_context()
+              ->ConnectToEnvironmentService<fuchsia::fonts::Provider>()),
       intl_property_provider_client_(
-          component_context()
-              ->svc()
-              ->Connect<fuchsia::intl::PropertyProvider>()) {
+          startup_context()
+              ->ConnectToEnvironmentService<
+                  fuchsia::intl::PropertyProvider>()) {
   // Asynchronously load the font we need in order to render text.
   fuchsia::fonts::TypefaceRequest font_request{};
   font_request.set_query(std::move(fuchsia::fonts::TypefaceQuery{}.set_family(
diff --git a/examples/ui/intl_client_demo/intl_client_demo_view.h b/examples/ui/intl_client_demo/intl_client_demo_view.h
index 13eae1d..0dc442d 100644
--- a/examples/ui/intl_client_demo/intl_client_demo_view.h
+++ b/examples/ui/intl_client_demo/intl_client_demo_view.h
@@ -20,7 +20,7 @@
 // Uses Skia to display its current locale ID as text in the middle of the view.
 class IntlClientDemoView : public scenic::SkiaView {
  public:
-  IntlClientDemoView(scenic::ViewContextTransitional view_context);
+  IntlClientDemoView(scenic::ViewContext view_context);
 
  private:
   void FetchIntlProfile();
diff --git a/examples/ui/intl_client_demo/main.cc b/examples/ui/intl_client_demo/main.cc
index 9068f5c..64dd573 100644
--- a/examples/ui/intl_client_demo/main.cc
+++ b/examples/ui/intl_client_demo/main.cc
@@ -3,10 +3,10 @@
 // found in the LICENSE file.
 
 #include <lib/async-loop/cpp/loop.h>
-#include <lib/trace-provider/provider.h>
-#include <lib/ui/base_view/cpp/view_provider_component_transitional.h>
+#include <trace-provider/provider.h>
 
 #include "intl_client_demo_view.h"
+#include "lib/ui/base_view/cpp/view_provider_component.h"
 #include "src/lib/fxl/command_line.h"
 #include "src/lib/fxl/log_settings_command_line.h"
 
@@ -20,8 +20,8 @@
   }
 
   FXL_LOG(INFO) << "Creating ViewProviderComponent";
-  scenic::ViewProviderComponentTransitional component(
-      [](scenic::ViewContextTransitional view_context) {
+  scenic::ViewProviderComponent component(
+      [](scenic::ViewContext view_context) {
         FXL_LOG(INFO) << "Calling ViewFactory";
         auto view = std::make_unique<examples::IntlClientDemoView>(
             std::move(view_context));
diff --git a/examples/ui/jank/jank_view.cc b/examples/ui/jank/jank_view.cc
index 30a1577..36170cf 100644
--- a/examples/ui/jank/jank_view.cc
+++ b/examples/ui/jank/jank_view.cc
@@ -8,6 +8,7 @@
 
 #include <string>
 
+#include "lib/component/cpp/connect.h"
 #include "src/lib/fxl/logging.h"
 #include "src/lib/fxl/macros.h"
 #include "src/lib/fxl/time/time_delta.h"
@@ -27,7 +28,7 @@
     {"Crash!", Action::kCrash},
 };
 
-JankView::JankView(scenic::ViewContextTransitional view_context,
+JankView::JankView(scenic::ViewContext view_context,
                    fuchsia::fonts::ProviderPtr font_provider)
     : SkiaView(std::move(view_context), "Jank"),
       font_loader_(std::move(font_provider)) {
diff --git a/examples/ui/jank/jank_view.h b/examples/ui/jank/jank_view.h
index 3a66ae0..312455a 100644
--- a/examples/ui/jank/jank_view.h
+++ b/examples/ui/jank/jank_view.h
@@ -8,11 +8,11 @@
 #include <fuchsia/fonts/cpp/fidl.h>
 #include <fuchsia/images/cpp/fidl.h>
 #include <fuchsia/ui/input/cpp/fidl.h>
+#include <src/lib/fxl/macros.h>
+#include <src/lib/fxl/time/time_point.h>
 
 #include "examples/ui/lib/skia_font_loader.h"
 #include "examples/ui/lib/skia_view.h"
-#include "src/lib/fxl/macros.h"
-#include "src/lib/fxl/time/time_point.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "third_party/skia/include/core/SkFont.h"
@@ -23,7 +23,7 @@
 
 class JankView : public scenic::SkiaView {
  public:
-  JankView(scenic::ViewContextTransitional view_context,
+  JankView(scenic::ViewContext view_context,
            fuchsia::fonts::ProviderPtr font_provider);
   ~JankView() override = default;
 
diff --git a/examples/ui/jank/main.cc b/examples/ui/jank/main.cc
index 9c8b993..8f2f744 100644
--- a/examples/ui/jank/main.cc
+++ b/examples/ui/jank/main.cc
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 #include <lib/async-loop/cpp/loop.h>
-#include <lib/trace-provider/provider.h>
-#include <lib/ui/base_view/cpp/view_provider_component_transitional.h>
+#include <trace-provider/provider.h>
 
 #include "src/lib/fxl/command_line.h"
 #include "src/lib/fxl/log_settings_command_line.h"
+#include "lib/ui/base_view/cpp/view_provider_component.h"
 #include "topaz/examples/ui/jank/jank_view.h"
 
 int main(int argc, const char** argv) {
@@ -18,10 +18,11 @@
   if (!fxl::SetLogSettingsFromCommandLine(command_line))
     return 1;
 
-  scenic::ViewProviderComponentTransitional component(
-      [](scenic::ViewContextTransitional view_context) {
-        auto font_provider = view_context.component_context->svc()
-                                 ->Connect<fuchsia::fonts::Provider>();
+  scenic::ViewProviderComponent component(
+      [](scenic::ViewContext view_context) {
+        auto font_provider =
+            view_context.startup_context
+                ->ConnectToEnvironmentService<fuchsia::fonts::Provider>();
         return std::make_unique<examples::JankView>(std::move(view_context),
                                                     std::move(font_provider));
       },
diff --git a/examples/ui/lib/skia_view.cc b/examples/ui/lib/skia_view.cc
index 17eaa39..380ab5e 100644
--- a/examples/ui/lib/skia_view.cc
+++ b/examples/ui/lib/skia_view.cc
@@ -6,10 +6,8 @@
 
 namespace scenic {
 
-SkiaView::SkiaView(scenic::ViewContextTransitional view_context,
-                   const std::string& label)
-    : BaseViewTransitional(std::move(view_context), label),
-      canvas_cycler_(session()) {
+SkiaView::SkiaView(scenic::ViewContext view_context, const std::string& label)
+    : BaseView(std::move(view_context), label), canvas_cycler_(session()) {
   root_node().AddChild(canvas_cycler_);
 }
 
diff --git a/examples/ui/lib/skia_view.h b/examples/ui/lib/skia_view.h
index 9d649f0..f36d710 100644
--- a/examples/ui/lib/skia_view.h
+++ b/examples/ui/lib/skia_view.h
@@ -5,20 +5,18 @@
 #ifndef TOPAZ_EXAMPLES_UI_LIB_SKIA_VIEW_H_
 #define TOPAZ_EXAMPLES_UI_LIB_SKIA_VIEW_H_
 
-#include <lib/ui/base_view/cpp/base_view_transitional.h>
-
 #include "examples/ui/lib/host_canvas_cycler.h"
 #include "src/lib/fxl/logging.h"
 #include "src/lib/fxl/macros.h"
+#include "lib/ui/base_view/cpp/base_view.h"
 
 namespace scenic {
 
 // Abstract base class for views which use Skia software rendering to a
 // single full-size surface.
-class SkiaView : public scenic::BaseViewTransitional {
+class SkiaView : public scenic::BaseView {
  public:
-  SkiaView(scenic::ViewContextTransitional view_context,
-           const std::string& label);
+  SkiaView(scenic::ViewContext view_context, const std::string& label);
   ~SkiaView() override = default;
 
   // Acquires a canvas for rendering.
diff --git a/examples/ui/noodles/main.cc b/examples/ui/noodles/main.cc
index 7cbd5b0..8cbbb39 100644
--- a/examples/ui/noodles/main.cc
+++ b/examples/ui/noodles/main.cc
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 #include <lib/async-loop/cpp/loop.h>
-#include <lib/trace-provider/provider.h>
-#include <lib/ui/base_view/cpp/view_provider_component_transitional.h>
+#include <trace-provider/provider.h>
 
 #include "src/lib/fxl/command_line.h"
 #include "src/lib/fxl/log_settings_command_line.h"
+#include "lib/ui/base_view/cpp/view_provider_component.h"
 #include "topaz/examples/ui/noodles/noodles_view.h"
 
 int main(int argc, const char** argv) {
@@ -18,8 +18,8 @@
   if (!fxl::SetLogSettingsFromCommandLine(command_line))
     return 1;
 
-  scenic::ViewProviderComponentTransitional component(
-      [](scenic::ViewContextTransitional view_context) {
+  scenic::ViewProviderComponent component(
+      [](scenic::ViewContext view_context) {
         return std::make_unique<examples::NoodlesView>(std::move(view_context));
       },
       &loop);
diff --git a/examples/ui/noodles/noodles_view.cc b/examples/ui/noodles/noodles_view.cc
index 70c4d0f..d5c8e97 100644
--- a/examples/ui/noodles/noodles_view.cc
+++ b/examples/ui/noodles/noodles_view.cc
@@ -37,7 +37,7 @@
 }
 }  // namespace
 
-NoodlesView::NoodlesView(scenic::ViewContextTransitional view_context)
+NoodlesView::NoodlesView(scenic::ViewContext view_context)
     : SkiaView(std::move(view_context), "Noodles") {}
 
 void NoodlesView::OnSceneInvalidated(
diff --git a/examples/ui/noodles/noodles_view.h b/examples/ui/noodles/noodles_view.h
index 2e556b8..b804c25 100644
--- a/examples/ui/noodles/noodles_view.h
+++ b/examples/ui/noodles/noodles_view.h
@@ -6,7 +6,6 @@
 #define TOPAZ_EXAMPLES_UI_NOODLES_NOODLES_VIEW_H_
 
 #include <fuchsia/images/cpp/fidl.h>
-
 #include "examples/ui/lib/skia_view.h"
 #include "src/lib/fxl/macros.h"
 
@@ -19,7 +18,7 @@
 
 class NoodlesView : public scenic::SkiaView {
  public:
-  NoodlesView(scenic::ViewContextTransitional view_context);
+  NoodlesView(scenic::ViewContext view_context);
   ~NoodlesView() override = default;
 
  private:
diff --git a/examples/ui/paint/main.cc b/examples/ui/paint/main.cc
index a276678..a2f86ab 100644
--- a/examples/ui/paint/main.cc
+++ b/examples/ui/paint/main.cc
@@ -3,11 +3,11 @@
 // found in the LICENSE file.
 
 #include <lib/async-loop/cpp/loop.h>
-#include <lib/trace-provider/provider.h>
-#include <lib/ui/base_view/cpp/view_provider_component_transitional.h>
+#include <trace-provider/provider.h>
 
 #include "src/lib/fxl/command_line.h"
 #include "src/lib/fxl/log_settings_command_line.h"
+#include "lib/ui/base_view/cpp/view_provider_component.h"
 #include "topaz/examples/ui/paint/paint_view.h"
 
 int main(int argc, const char** argv) {
@@ -18,8 +18,8 @@
   if (!fxl::SetLogSettingsFromCommandLine(command_line))
     return 1;
 
-  scenic::ViewProviderComponentTransitional component(
-      [](scenic::ViewContextTransitional view_context) {
+  scenic::ViewProviderComponent component(
+      [](scenic::ViewContext view_context) {
         return std::make_unique<examples::PaintView>(std::move(view_context));
       },
       &loop);
diff --git a/examples/ui/paint/paint_view.cc b/examples/ui/paint/paint_view.cc
index d763de1..8f261b5 100644
--- a/examples/ui/paint/paint_view.cc
+++ b/examples/ui/paint/paint_view.cc
@@ -6,6 +6,7 @@
 
 #include <hid/usages.h>
 
+#include "lib/component/cpp/connect.h"
 #include "src/lib/fxl/logging.h"
 #include "src/lib/fxl/macros.h"
 #include "third_party/skia/include/core/SkColor.h"
@@ -13,7 +14,7 @@
 
 namespace examples {
 
-PaintView::PaintView(scenic::ViewContextTransitional view_context)
+PaintView::PaintView(scenic::ViewContext view_context)
     : SkiaView(std::move(view_context), "Paint") {}
 
 void PaintView::OnSceneInvalidated(
diff --git a/examples/ui/paint/paint_view.h b/examples/ui/paint/paint_view.h
index 0bccaee..7513cd3 100644
--- a/examples/ui/paint/paint_view.h
+++ b/examples/ui/paint/paint_view.h
@@ -7,20 +7,19 @@
 
 #include <fuchsia/images/cpp/fidl.h>
 #include <fuchsia/ui/input/cpp/fidl.h>
-
 #include <map>
 #include <vector>
-
-#include "examples/ui/lib/skia_view.h"
 #include "src/lib/fxl/macros.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "third_party/skia/include/core/SkPath.h"
 
+#include "examples/ui/lib/skia_view.h"
+
 namespace examples {
 
 class PaintView : public scenic::SkiaView {
  public:
-  PaintView(scenic::ViewContextTransitional view_context);
+  PaintView(scenic::ViewContext view_context);
   ~PaintView() override = default;
 
  private:
