diff --git a/config/install/twig_components.settings.yml b/config/install/twig_components.settings.yml
new file mode 100644
index 0000000..e842c48
--- /dev/null
+++ b/config/install/twig_components.settings.yml
@@ -0,0 +1 @@
+use_drupal_environment: false
diff --git a/config/schema/twig_components.schema.yml b/config/schema/twig_components.schema.yml
new file mode 100644
index 0000000..d7646af
--- /dev/null
+++ b/config/schema/twig_components.schema.yml
@@ -0,0 +1,6 @@
+twig_components.settings:
+  type: config_object
+  label: Settings
+  mapping:
+    use_drupal_environment:
+      type: boolean
diff --git a/src/EventSubscriber/TwigComponentsEventSubscriber.php b/src/EventSubscriber/TwigComponentsEventSubscriber.php
index 680f55a..8b3c8e8 100644
--- a/src/EventSubscriber/TwigComponentsEventSubscriber.php
+++ b/src/EventSubscriber/TwigComponentsEventSubscriber.php
@@ -65,11 +65,24 @@ class TwigComponentsEventSubscriber implements EventSubscriberInterface {
       $paths[] = ltrim(dirname($template_path), '/');
       $libraries[$definition['tag']] = $instance->getLibraryName();
     }
-    // We create a new environment because core's includes many custom
-    // extensions that Twig.js does not have.
-    $loader = new \Twig_Loader_Filesystem($paths, DRUPAL_ROOT);
-    $environment = new \Twig_Environment($loader);
-    $environment->setCache($this->drupalEnvironment->getCache(FALSE));
+    // Create a Twig environment.
+    $use_drupal_twig = \Drupal::config('twig_components.settings')->get('use_drupal_environment');
+    if ($use_drupal_twig) {
+      // Get Drupal's Twig environment, and add the component template paths.
+      $environment = $this->drupalEnvironment;
+      /** @var \Twig\Loader\FilesystemLoader $loader */
+      $loader = \Drupal::service('twig.loader.filesystem');
+      foreach ($paths as $path) {
+        $loader->addPath($path);
+      }
+    }
+    else {
+      // We create a new environment because core's includes many custom
+      // extensions that Twig.js does not have.
+      $loader = new \Twig_Loader_Filesystem($paths, DRUPAL_ROOT);
+      $environment = new \Twig_Environment($loader);
+      $environment->setCache($this->drupalEnvironment->getCache(FALSE));
+    }
     // Server side render components and determine what libraries to add.
     $renderer = new Renderer($tag_templates, $environment);
     $content = $response->getContent();
diff --git a/src/Form/TwigComponentsAdminForm.php b/src/Form/TwigComponentsAdminForm.php
new file mode 100644
index 0000000..5e4f7f8
--- /dev/null
+++ b/src/Form/TwigComponentsAdminForm.php
@@ -0,0 +1,54 @@
+<?php
+
+namespace Drupal\twig_components\Form;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Settings form.
+ */
+class TwigComponentsAdminForm extends ConfigFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'twig_components_admin';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function getEditableConfigNames() {
+    return [
+      'twig_components.settings',
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $config = $this->config('twig_components.settings');
+    $form['use_drupal_environment'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Use the Drupal Twig environment for SSR'),
+      '#description' => t('If enabled, Drupal\'s Twig environment will be used for rendering components server-side (including any added extensions), rather than a default Twig environment. NB any extensions used in component templates must be added to the twig.js environment also - see <a href="@link">@link</a>.', [
+        '@link' => 'https://github.com/twigjs/twig.js/wiki/Extending-twig.js',
+      ]),
+      '#default_value' => $config->get('use_drupal_environment'),
+    );
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $values = $form_state->getValues();
+    $this->config('twig_components.settings')
+      ->set('use_drupal_environment', $values['use_drupal_environment'])
+      ->save();
+  }
+}
diff --git a/twig_components.links.menu.yml b/twig_components.links.menu.yml
new file mode 100644
index 0000000..00bc4b8
--- /dev/null
+++ b/twig_components.links.menu.yml
@@ -0,0 +1,5 @@
+twig_components.admin_form:
+  route_name: twig_components.admin_form
+  title: Twig Components
+  description: 'Configure settings for Twig Components.'
+  parent: system.admin_config_system
diff --git a/twig_components.routing.yml b/twig_components.routing.yml
new file mode 100644
index 0000000..a39c122
--- /dev/null
+++ b/twig_components.routing.yml
@@ -0,0 +1,7 @@
+twig_components.admin_form:
+  path: /admin/config/system/twig-components
+  defaults:
+    _title: Twig Components
+    _form: '\Drupal\twig_components\Form\TwigComponentsAdminForm'
+  requirements:
+    _permission: 'administer site configuration'
