{"id":1978,"date":"2017-10-04T15:55:29","date_gmt":"2017-10-04T15:55:29","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=1978"},"modified":"2020-11-24T16:30:19","modified_gmt":"2020-11-24T16:30:19","slug":"wkwebview-for-all-a-new-webview-for-ionic","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic","title":{"rendered":"WKWebView for All: A new webview for Ionic"},"content":{"rendered":"<p>Hi folks! So today I&#8217;m really super excited to share something we&#8217;ve been testing heavily for a long time now. As of now&#8230; <strong>new<\/strong> Ionic apps will run on WKWebView&#8230;BY DEFAULT \ud83c\udf89!<\/p>\n<p>Ok, so let&#8217;s have a brief history lesson on why this is really important and also beneficial to <em>you<\/em> as a developer. It&#8217;s no secret that WKWebView has been out for some time now, but in that time, it&#8217;s had some issues, especially in hybrid app land. Many people have attempted to work around these issues, but it&#8217;s not until recently that we&#8217;ve gotten to a place where WKWebView can be reliably used in people&#8217;s apps, without broken functionality. This means we get incredible performance gains on iOS, reduced memory footprint, scroll events, and so much more by just using the new webview!<\/p>\n<p><!--more--><\/p>\n<h3>Adding WKWebView to your app<\/h3>\n<p>In order to add WKWebView, we need to add the plugin from the Ionic repository.<\/p>\n<pre><code class=\"language-bash\">ionic cordova plugin add cordova-plugin-ionic-webview --save\n<\/code><\/pre>\n<p>If you already had the plugin installed, or were using a different version\/fork, you&#8217;ll need to uninstall what you have first.<\/p>\n<pre><code>ionic cordova plugin rm cordova-plugin-WKWebView-engine\n<\/code><\/pre>\n<p>And that&#8217;s it! Once the plugin install is done, your next native build will include a faster, lighter, and more modern webview!<\/p>\n<h3>Important concerns<\/h3>\n<p>Since this is an entirely different webview than UIWebview, there are a few things to be aware of before making the change.<\/p>\n<h4>Data in localstorage\/IndexDB will not be transferred to the new webview<\/h4>\n<p>This makes sense when you think about how this is essentially a new browser. If your data is stored using the SQLite plugin, by itself or in combination with <code>@ionic\/storage<\/code>, this can be dealt with. Before pushing a new update with the webview, it might be worth taking the time to migrate that data over from web storage, to a native storage solution.<\/p>\n<h4>WKWebView enforces CORS<\/h4>\n<p>UIWebview, or the older webview in iOS, never actually enforced CORS, but WKWebView does and does not provide a way to disable it. To address this, you need to implement CORS correctly and add the following entry:<\/p>\n<pre><code>Origin: http:\/\/localhost:8080\n<\/code><\/pre>\n<p>IF this is not possible (you do not own the API), a workaround can be to use the native <code>HTTP<\/code> plugin, <a href=\"https:\/\/ionicframework.com\/docs\/native\/http\/\">@ionic-native\/http<\/a>.<\/p>\n<h4>Native files not loading correctly<\/h4>\n<p>If you&#8217;re using the Camera plugin, or reading\/writing from the devices file system, you might get a file path that looks something like<\/p>\n<pre><code>file:\/\/\/some\/really\/long\/path.png\n<\/code><\/pre>\n<p>The <code>file:\/\/<\/code> portion of the URL must be removed in order for the resource to load correctly. You can do this manually, but as of <code>ionic-angular@3.2.0<\/code>, we provide a quick function that will handle this automatically.<\/p>\n<pre><code class=\"language-ts\">import { normalizeURL } from &#039;ionic-angular&#039;;\n\nlet path = cordova.file.dataDirectory;\nconsole.log(&#039;Original: &#039; + path);\n\npath = normalizeURL(path);\nconsole.log(&#039;Fixed: &#039; + path);\n<\/code><\/pre>\n<p>Cordova plugins also allow you to reference a file via the <code>cdvfile:\/\/<\/code> protocol. This path is something that gets resolved in native code, so it cannot be used with <code>normalizeURL<\/code>.<\/p>\n<h4>Authentication services need to whitelist localhost<\/h4>\n<p>Since WKWebView uses a server under the hood, it will create a url for your app, <code>localhost:8080<\/code>, instead of serving things through <code>file:\/\/<\/code>. In doing this, authentication providers, like Firebase and Auth0, need to be told to allow this URL when it hits their API.  There should be a section called \u201cAllowed Origins\u201d or \u201cAuthorized Domains\u201d. This will make sure your app can authenticate correctly.<\/p>\n<p>That&#8217;s it! We&#8217;ve put all of the notes here in our <a href=\"https:\/\/ionicframework.com\/docs\/wkwebview\/\">WKWebView docs<\/a>, if you ever need to reference them again. We&#8217;re very excited about shipping WKWebView as default, and we hope to see many of you adopt it into your apps. I&#8217;d also like to thank so many of you for all your feedback, testing, and issue reporting during the early versions and releases of the plugin. Your feedback has only made the plugin even better! Thanks \ud83c\udf7b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi folks! So today I&#8217;m really super excited to share something we&#8217;ve been testing heavily for a long time now. As of now&#8230; new Ionic apps will run on WKWebView&#8230;BY DEFAULT \ud83c\udf89! Ok, so let&#8217;s have a brief history lesson on why this is really important and also beneficial to you as a developer. It&#8217;s [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1982,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"0","publish_post_category":"23","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[121],"tags":[158,28,23,41,27],"class_list":["post-1978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-apple","tag-cordova","tag-framework","tag-ionic-cli","tag-ionic-native"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WKWebView for All: A new webview for Ionic - Ionic Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WKWebView for All: A new webview for Ionic\" \/>\n<meta property=\"og:description\" content=\"Hi folks! So today I&#8217;m really super excited to share something we&#8217;ve been testing heavily for a long time now. As of now&#8230; new Ionic apps will run on WKWebView&#8230;BY DEFAULT \ud83c\udf89! Ok, so let&#8217;s have a brief history lesson on why this is really important and also beneficial to you as a developer. It&#8217;s [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-04T15:55:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-24T16:30:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"945\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mike Hartington\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mhartington\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Hartington\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\"},\"author\":{\"name\":\"Mike Hartington\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\"},\"headline\":\"WKWebView for All: A new webview for Ionic\",\"datePublished\":\"2017-10-04T15:55:29+00:00\",\"dateModified\":\"2020-11-24T16:30:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\"},\"wordCount\":620,\"commentCount\":57,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png\",\"keywords\":[\"Apple\",\"Cordova\",\"Framework\",\"Ionic CLI\",\"Ionic Native\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\",\"url\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\",\"name\":\"WKWebView for All: A new webview for Ionic - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png\",\"datePublished\":\"2017-10-04T15:55:29+00:00\",\"dateModified\":\"2020-11-24T16:30:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png\",\"width\":945,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WKWebView for All: A new webview for Ionic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\",\"name\":\"Mike Hartington\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"caption\":\"Mike Hartington\"},\"description\":\"Director of Developer Relations\",\"sameAs\":[\"https:\/\/twitter.com\/mhartington\",\"https:\/\/x.com\/mhartington\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/mike\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WKWebView for All: A new webview for Ionic - Ionic Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic","og_locale":"en_US","og_type":"article","og_title":"WKWebView for All: A new webview for Ionic","og_description":"Hi folks! So today I&#8217;m really super excited to share something we&#8217;ve been testing heavily for a long time now. As of now&#8230; new Ionic apps will run on WKWebView&#8230;BY DEFAULT \ud83c\udf89! Ok, so let&#8217;s have a brief history lesson on why this is really important and also beneficial to you as a developer. It&#8217;s [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic","og_site_name":"Ionic Blog","article_published_time":"2017-10-04T15:55:29+00:00","article_modified_time":"2020-11-24T16:30:19+00:00","og_image":[{"width":945,"height":250,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","type":"image\/png"}],"author":"Mike Hartington","twitter_card":"summary_large_image","twitter_creator":"@mhartington","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Mike Hartington","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic"},"author":{"name":"Mike Hartington","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b"},"headline":"WKWebView for All: A new webview for Ionic","datePublished":"2017-10-04T15:55:29+00:00","dateModified":"2020-11-24T16:30:19+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic"},"wordCount":620,"commentCount":57,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","keywords":["Apple","Cordova","Framework","Ionic CLI","Ionic Native"],"articleSection":["Engineering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic","url":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic","name":"WKWebView for All: A new webview for Ionic - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","datePublished":"2017-10-04T15:55:29+00:00","dateModified":"2020-11-24T16:30:19+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","width":945,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/wkwebview-for-all-a-new-webview-for-ionic#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"WKWebView for All: A new webview for Ionic"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b","name":"Mike Hartington","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","caption":"Mike Hartington"},"description":"Director of Developer Relations","sameAs":["https:\/\/twitter.com\/mhartington","https:\/\/x.com\/mhartington"],"url":"https:\/\/ionic.io\/blog\/author\/mike"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2017\/09\/webkit-banner.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/1978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=1978"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/1978\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/1982"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=1978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=1978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=1978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}