diff --git a/modules/pwa_extras/config/install/pwa_extras.settings.yml b/modules/pwa_extras/config/install/pwa_extras.settings.yml
new file mode 100644
index 0000000..11de1e2
--- /dev/null
+++ b/modules/pwa_extras/config/install/pwa_extras.settings.yml
@@ -0,0 +1,22 @@
+apple:
+  touch_icons:
+    touch-icon-default: 0
+  meta_tags:
+    meta-capable: 0
+    meta-status-bar-style: 0
+  color_select: 'default'
+  home_screen_icons:
+    iphone5-splash: 0
+    iphone6-splash: 0
+    iphoneplus-splash: 0
+    iphonex-splash: 0
+    iphonexr-splash: 0
+    iphonexsmax-splash: 0
+    ipad-splash: 0
+    ipadpro1-splash: 0
+    ipadpro2-splash: 0
+    ipadpro3-splash: 0
+dependencies:
+  enforced:
+    module:
+      - pwa_extras
diff --git a/modules/pwa_extras/config/schema/pwa_extras.schema.yml b/modules/pwa_extras/config/schema/pwa_extras.schema.yml
new file mode 100644
index 0000000..c07c098
--- /dev/null
+++ b/modules/pwa_extras/config/schema/pwa_extras.schema.yml
@@ -0,0 +1,28 @@
+pwa_extras.settings:
+  type: config_object
+  mapping:
+    apple:
+      type: mapping
+      label: 'Apple Specific settings'
+      mapping:
+        touch_icons:
+          type: sequence
+          label: 'Touch Icons'
+          sequence:
+            type: string
+            label: 'Touch Icon'
+        meta_tags:
+          type: sequence
+          label: 'Meta Tags'
+          sequence:
+            type: string
+            label: 'Meta tag'
+        color_select:
+          type: string
+          label: 'Status Bar selected color'
+        home_screen_icons:
+          type: sequence
+          label: 'Home screen icons'
+          sequence:
+            type: string
+            label: 'Home screen icon'
diff --git a/modules/pwa_extras/pwa_extras.info.yml b/modules/pwa_extras/pwa_extras.info.yml
new file mode 100644
index 0000000..ff0fb5c
--- /dev/null
+++ b/modules/pwa_extras/pwa_extras.info.yml
@@ -0,0 +1,7 @@
+name: Progressive Web App Extras
+description: Builds on top of Progressive Web App to deliver extra functionality.
+core: 8.x
+type: module
+configure: pwa_extras.settings
+dependancies:
+  - pwa
diff --git a/modules/pwa_extras/pwa_extras.links.menu.yml b/modules/pwa_extras/pwa_extras.links.menu.yml
new file mode 100644
index 0000000..88d59ec
--- /dev/null
+++ b/modules/pwa_extras/pwa_extras.links.menu.yml
@@ -0,0 +1,6 @@
+pwa_extras.settings:
+  title: PWA Extras Settings
+  description: 'Progressive web app Extras configuration'
+  parent: pwa.admin_index
+  route_name: pwa_extras.settings
+  weight: 1
\ No newline at end of file
diff --git a/modules/pwa_extras/pwa_extras.links.task.yml b/modules/pwa_extras/pwa_extras.links.task.yml
new file mode 100644
index 0000000..8220c3e
--- /dev/null
+++ b/modules/pwa_extras/pwa_extras.links.task.yml
@@ -0,0 +1,4 @@
+pwa_extras.settings:
+  route_name: pwa_extras.settings
+  title: 'PWA Extras'
+  base_route: pwa.config
diff --git a/modules/pwa_extras/pwa_extras.module b/modules/pwa_extras/pwa_extras.module
new file mode 100644
index 0000000..597189e
--- /dev/null
+++ b/modules/pwa_extras/pwa_extras.module
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * @file
+ * Contains pwa_extras.module
+ */
+
+/**
+ * Implements hook_page_attachments().
+ */
+function pwa_extras_page_attachments(array &$attachments) {
+  if (!\Drupal::currentUser()->hasPermission('access content')) {
+    return;
+  }
+
+  $config = \Drupal::config('pwa_extras.settings.apple');
+  $status_color = $config->get('color_select');
+  $tag_list = pwa_extras_tag_list($status_color);
+
+  $meta_tags = $config->get('touch_icons') + $config->get('meta_tags') + $config->get('home_screen_icons');
+  if (empty($meta_tags)) return;
+
+  foreach ($meta_tags as $key => $value) {
+    if (!$value) continue;
+
+    $string_tag = $tag_list[$key];
+    $dom = new DOMDocument;
+    $dom->loadHTML($string_tag);
+    $data = $dom->documentElement->firstChild->firstChild;
+    $tag_name = $data->tagName;
+
+    $tag_attributes = [];
+    foreach ($data->attributes as $attribute) {
+      $tag_attributes[$attribute->name] = $attribute->value;
+    }
+
+    if ($tag_name == 'link') {
+      $attachments['#attached']['html_head_link'][] = [$tag_attributes];
+    }
+    else {
+      $tag_data = [
+        '#tag' => $tag_name,
+        '#attributes' => $tag_attributes,
+      ];
+      $attachments['#attached']['html_head'][] = [$tag_data, $tag_attributes['name']];
+    }
+  }
+}
+
+function pwa_extras_tag_list($status_color) {
+  $touch_icons = pwa_extras_apple_touch_icons();
+  $meta_tags = pwa_extras_apple_meta_tags($status_color);
+  $homescreen_icons = pwa_extras_apple_home_screen_icons();
+  return array_merge($touch_icons, $meta_tags, $homescreen_icons);
+}
+
+function pwa_extras_apple_touch_icons() {
+  return [
+    'touch-icon-default' => '<link rel="apple-touch-icon" sizes="192x192" href="/img/icons/app-icon-192.png">',
+  ];
+}
+
+function pwa_extras_apple_meta_tags($status_color = '') {
+  return [
+    'meta-capable' => '<meta name="apple-mobile-web-app-capable" content="yes">',
+    'meta-status-bar-style' => '<meta name="apple-mobile-web-app-status-bar-style" content="' . $status_color . '">',
+  ];
+}
+
+function pwa_extras_apple_home_screen_icons() {
+  return [
+    'iphone5-splash' => '<link href="iphone5_splash.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'iphone6-splash' => '<link href="iphone6_splash.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'iphoneplus-splash' => '<link href="iphoneplus_splash.png" media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" />',
+    'iphonex-splash' => '<link href="iphonex_splash.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" />',
+    'iphonexr-splash' => '<link href="iphonexr_splash.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'iphonexsmax-splash' => '<link href="iphonexsmax_splash.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" />',
+    'ipad-splash' => '<link href="ipad_splash.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'ipadpro1-splash' => '<link href="ipadpro1_splash.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'ipadpro2-splash' => '<link href="ipadpro2_splash.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+    'ipadpro3-splash' => '<link href="ipadpro3_splash.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />',
+  ];
+}
diff --git a/modules/pwa_extras/pwa_extras.routing.yml b/modules/pwa_extras/pwa_extras.routing.yml
new file mode 100644
index 0000000..870fa5d
--- /dev/null
+++ b/modules/pwa_extras/pwa_extras.routing.yml
@@ -0,0 +1,7 @@
+pwa_extras.settings:
+  path: '/admin/config/pwa/pwa_extras'
+  defaults:
+    _form: '\Drupal\pwa_extras\Form\PwaExtrasSettingsForm'
+    _title: 'PWA Extras Configuration'
+  requirements:
+    _permission: 'administer pwa'
diff --git a/modules/pwa_extras/src/Form/PwaExtrasSettingsForm.php b/modules/pwa_extras/src/Form/PwaExtrasSettingsForm.php
new file mode 100644
index 0000000..72a090d
--- /dev/null
+++ b/modules/pwa_extras/src/Form/PwaExtrasSettingsForm.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace Drupal\pwa_extras\Form;
+
+use Drupal\Core\Form\ConfigFormBase;
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * PWA Extras admin settings form.
+ */
+class PwaExtrasSettingsForm extends ConfigFormBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId() {
+    return 'pwa_extras_admin_settings';
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildForm(array $form, FormStateInterface $form_state) {
+    $config = $this->config('pwa_extras.settings.apple');
+
+    $form['apple'] = [
+      '#type' => 'details',
+      '#title' => $this->t('Apple/IOS Specific Settings'),
+      '#open' => TRUE,
+    ];
+
+    $form['apple']['touch_icons'] = [
+      "#type" => 'checkboxes',
+      "#title" => $this->t('Touch Icons'),
+      "#options" => str_replace('<', '&lt;', pwa_extras_apple_touch_icons()),
+      '#default_value' => $config->get('touch_icons'),
+    ];
+
+    $form['apple']['meta_tags'] = [
+      "#type" => 'checkboxes',
+      "#title" => $this->t('Meta Tags'),
+      "#options" => str_replace('<', '&lt;', pwa_extras_apple_meta_tags()),
+      '#default_value' => $config->get('meta_tags'),
+    ];
+
+    $form['apple']['color_select'] = [
+      "#type" => 'select',
+      "#title" => $this->t('Select color for status-bar-style'),
+      '#options' => [
+        'default' => $this->t('Default'),
+        'black' => $this->t('Black'),
+        'black_translucent' => $this->t('Black-translucent'),
+      ],
+      '#states' => [
+        'invisible' => [
+          ':input[value="meta-status-bar-style"]' => ['checked' => FALSE],
+        ],
+      ],
+      '#default_value' => $config->get('color_select'),
+    ];
+
+    $form['apple']['home_screen_icons'] = [
+      "#type" => 'checkboxes',
+      "#title" => $this->t('Add to homescreen icons'),
+      "#options" => str_replace('<', '&lt;', pwa_extras_apple_home_screen_icons()),
+      '#default_value' => $config->get('home_screen_icons'),
+    ];
+
+    return parent::buildForm($form, $form_state);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state) {}
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $config = $this->config('pwa_extras.settings.apple');
+
+    $values = $form_state->getValues();
+    $config->set('touch_icons', $values['touch_icons'])
+      ->set('meta_tags', $values['meta_tags'])
+      ->set('color_select', $values['color_select'])
+      ->set('home_screen_icons', $values['home_screen_icons'])
+      ->save();
+    parent::submitForm($form, $form_state);
+  }
+
+  /**
+   * @return config settings.
+   */
+  protected function getEditableConfigNames() {
+    return ['pwa_extras.settings.apple'];
+  }
+}
