Somebody please get these kids some nametags.
Photo: HBO
Occasionally, it is necessary to convene a conversation among Vulture writers to discuss an important and timely issue in culture. This time, Vulture critics Jen Chaney, Roxana Hadadi, and Kathryn VanArendonk have gathered to discuss House of the Dragon’s almost frantic rush to get to … something? Halfway through this conversation, we will leap ahead seven years.
Kathryn VanArendonk: As we approach the end of House of the Dragon’s first season, it’s grown easier to see the show’s defining features. It feels remarkably like Game of Thrones, which is obvious but still worth noting. This is not a show that wanted to strike out on its own. It’s built to slot nicely into the exact grooves that Game of Throneshas already worn into everyone’s brains: dragons, incest, costumes, settings, mythology, opening credits music, barely visible night scenes — check, check, check. But there are still things about House of the Dragon that do feel distinctive, things that set it apart from the original show. The geography is more constrained, and it’s less focused on several characters scattered across a big map. There’s less sexual violence, sort of. There are many more blonde wigs.
The strangest — and perhaps most perplexing — thing about this first season, though, is that House of the Dragon looooooves a time jump. After beginning with Alicent and Rhaenyra as teenage best friends, House of the Dragon has leapt willy-nilly across yearsof character development. By my count, this show has now covered nearly two decades, even though we’re only eight episodes in. That’s a rate Ken Burns would consider a little too snappy for a documentary about the entire history of baseball. For a fictional show where we’re attempting to understand the inner lives of a small group of main characters, it is a wild choice.
Roxana, you have a better sense of the source material than I do. Do you think there is any obvious reason why the show might’ve made this choice? And more broadly, for all of us: Are the time jumps working? What are we losing when we jump so quickly through a story?
Roxana Hadadi: I think an “obvious reason” is hard to pinpoint, because the series is adapting only a portion of George R.R. Martin’s in-world history book Fire & Blood: 300 Years Before a Game of Thrones. The series begins about halfway through the book with the chapter “Heirs of the Dragon: A Question of Succession” and, if we’re do some reverse math here, about 130 years into Martin’s history. (Recall that House of the Dragon, per the text that kicked off the series, is set 172 years before Jaime Lannister earns his “Kingslayer” nickname for killing the Mad King Aerys Targaryen; 300 minus 172 is … yada yada yada.) The chapters House of the Dragon is adapting are pretty barebones in terms of character development — we meet the royal family, we get an understanding of their aims and their motivations on a broad scale and then we hustle forward into a war over the Iron Throne.
So House of the Dragon is certainly traveling at a slower pace than the book, devoting more screen time to, among other things, the growing schism between Corlys and Rhaenys and how Rhaenyra and Daemon finally admitted their attraction to each other. But at the same time, it also seems so sped-up compared with what we’re used to on television. Does this series have the highest new-children-to-new-episode ratio? There’s this odd effect for people who have read the book, in which we’re seeing things take longer to play out but also not getting the level of character depth that we got in, say, the first season of Game of Thrones.
Jen: I have not read any of the source material, so I came into House of the Dragon semi-blind to how the narrative would unfold. I knew there would be time jumps, given the double casting of Rhaenyra and Alicent, but what I was not prepared for was the six-year time jump between episodes seven and eight. Unlike the title card Roxana mentioned from the beginning of the series, there was nothing spelling out how much time had passed. It eventually becomes clear through dialogue and context clues, and on the one hand, I appreciate that HotD isn’t dumbing things down for the audience, but on the other, it’s a really abrupt shift that feels all the more abrupt once you realize how much time has passed. Rhaenyra keeps saying it’s been a long time since she’s been to King’s Landing, but it doesn’t feel like a long time because, girl, you were just there a couple weeks ago! I think that’s a part of a broader problem for House of the Dragon:It tells us about the characters’ feelings and, by extension, what we should be feeling, rather than capturing the feelings organically.
Also, yes, extremely high kid-per-episode ratio. Why must there be two Aegons? How am I supposed to keep Alicent’s failsons straight when they age this fast?
Kathryn: Even when the show manages to make clear that we’ve just moved through a huge period of time — by introducing the older versions of Alicent and Rhaenyra, for instance — there’s a ton of catching up to do! Everyone should wear name tags, which I know would be tricky to manage with Game of Thrones–stylefashions, but surely they could’ve introduced a trend where people wear shirts with their names embroidered onto them? Just to help us out! Because I’ve also had a very tough time keeping track of all the children and how much time has passed. It’s nice that HotD doesn’t do a lot of hand-holding, I agree, and yet every time the show jumps forward, it has to become a little bit of a pilot again. Everyone has to walk around delivering absurd expositional dialogue like “Ah yes, it’s been ten years since we last met! How is your lovely wife, whose name and genealogical background I will now explain, even though presumably you’d know all of that already!”
It’s been very frustrating in part because I love time jumps in TV shows! In some of my favorite series, a midseason time jump is a bold gesture of confidence about where the show is going and exactly who these characters have become. I’m thinking of Halt and Catch Fire, which was a master at this, but also Battlestar Galactica and, more recently, For All Mankind. I resent that House of the Dragon has made me rethink my pro-time jump stance!
Roxana: From a purely aesthetic standpoint, it is kind of amusing to me that in the 20 or so years that have passed over these eight episodes, some people have seemingly not aged at all, only experienced slightly different hairdos (Criston Cole, Otto Hightower, Rhaenys Targaryen); others have been recast because of the time jumps (Alicent and Rhaenyra, all those damn kids); and one has endured a terrible illness and died tragically, looking like a shadow of his former self (RIP, King Paddy). The time jumps have a Wait, what? effect when the series doesn’t age everyone the same way. And sure, maybe adults don’t look that drastically different from year to year, but it’s too easy to forget that there’s been so many years of festering resentment between Rhaenyra and Alicent, between Daemon and Vaemond, between all these different characters when we don’t see the wear of that frustration on faces we consistently recognize and know from episode to episode. It demands an additional layer of attention from the viewer on top of the elaborate world-building that comes with high fantasy. There’s inconsistent payoff, though, because so many character interactions are either never depicted or never suggested.
I think some of this variability is because of how the series is written, but some of it has also been caused by the removal of certain scenes alluded to by the cast and crew. What was the first conversation Rhaenyra and Alicent had after the latter’s engagement to the former’s father? How did Viserys feel about his brother and his daughter announcing their marriage, after he had been so scandalized by the possibility of Rhaenyra losing her virginity to Daemon? The time jumps force House of the Dragon to shape itself around these big moments — weddings and assassinations and wars — but sometimes this feels like character maneuvering instead of storytelling. And so many of these performances are so good that I want more of them! What if Milly Alcock and Emily Carey had a whole season to show us teen Rhaenyra and teen Alicent instead of half of one? What if there were more time to draw out the disappointments of Rhaenyra and Laenor’s marriage or the (seeming) happiness of Daemon’s and Laena’s?
I understand that there is a war coming, but I don’t think the inevitable gore and grotesquerie of that would have suffered from a little more time with these players over the years. Especially now that Martin has said he wants four seasons of this show, we could have spent some more time on character development before we get to nonstop carnage and dragon-dancing, right? Am I wrong on this?
Jen: Roxana, you are not wrong and I agree wholeheartedly. The aging on this show is mad inconsistent. (Rhys Ifans is like a reverse Wooderson from Dazed and Confused: Everyone else gets older, he stays the same age.) While your suggestion of making this a full season of teen Rhaenyra and Alicent is something I would not have agreed with after the first two episodes — I found House of the Dragon too slow, too expositional, and redundant with Game of Thrones at first — but absolutely do now because those characters and their concerns were really growing on me … and then the time jump happened.
There are two issues with the pacing of this show: There’s the larger one we’re discussing now, as far as how many years are being covered and the overall arc, and then there’s the tempo of the episodes themselves. I have appreciated the urgency of the past couple of episodes, though the plot acceleration it took to get to them flattens our sense of how time has passed. An epic saga should feel epic, and it’s challenging to achieve that when you skip over chunks of years. House of the Dragon has trouble balancing the macro arc of time and the micro episodic passing of time — when it feels right on one side, it feels wrong on the other.
Kathryn: I had a teacher in high school who loved to show movie adaptations of whatever we were reading for class. She’d pop in a VHS of the Kevin Kline Hamlet (yes, it was a VHS. No, I will not be taking questions at this time) and then fast-forward through the whole thing until she found a big soliloquy. One of the characters would talk to for a minute or two and then she’d start fast-forwarding again until she hit the next part she wanted.
That was a VHS-technology problem, admittedly, but it was also wild to watch Hamlet and A Room With a View get condensed down to The Big Event Parts. Blah-blah scene setting, skip through some minor connective tissue about what happened after all the big speeches, and you’re left with a highlight reel. On the plus side: only the highlights! But at the same time, as you both have been pointing out, you miss all the parts that make it feel like a story rather than a box-checking exercise.
House of the Dragon is not quite that bad, but it does feel like a product of the same underlying mentality. It also shares something with another scourge of TV storytelling right now: the mixed-up timeline, where series insist on jumping back and forth between past and present. Again, it’s not quite as egregious as some of the worst time-hopping offenders, and yet it’s hard not to wonder what you’re missing in all those supposedly unimportant gap periods. Little bits of reporting from behind the scenes of this show suggest that there were many deleted scenes, and even though I’m sure they were often small moments — like a little shot where Daemon hugs his two daughters — they feel like emotional clues to who these people are, clues we no longer get to see.
What I’m not sure about is how much this affects the show going forward. I wonder whether my total confusion about which child belongs to which parent is really going to matter? I also can’t tell if maybe, having rushed headlong through enormous chunks of these characters’ lives, we’re now approaching the part of the story where we can stop fast-forwarding the VHS?
Jen: I hope we’ve reached the stop-fast-forwarding point, and my guess is that we have. As far as how I watch the show going forward, I am very much trying to take a “Don’t sweat the small stuff” approach. In other words, just let it wash over me and rely on recaps to answer any lingering questions, although I reserve the right to continue to be mad about the inconsistent aging. Roxana, as our literary expert here, does the guess about the time jumping being over sound right to you?
Roxana: I can co-sign all this with the Faith of the Seven’s Crone on my side because, based on Fire & Blood, this should be where the story stops to really breathe — and bleed. If we’re following the text here (which the series mostly has!), the penultimate and finale episodes should kick off a period of time that drags out but can’t exactly jump forward. But, I’m sorry to say, we may meet some more kids. Get your name tags ready!
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(3),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(136),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"3":3,"12":12,"124":124,"136":136}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(408),Fingerprint2=require(407),DS=require(406),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(408),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"408":408,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]