“Heart of the TVA” ends with a bang that feels like a whimper. Four episodes in out of a total six, and Loki’s second season has done little to dramatize its stakes or imbue its universe-ending dangers with emotional weight. We are, after all, following an alternate-reality version of a protagonist who died elsewhere in the MCU (back in Avengers: Endgame), in a shared universe where resurrections are as common as laser battles. So the possibility of deaths and apocalypses are hard to get excited or anxious about.
Picking up where things left off last week, Miss Minutes makes good on her promise of revealing a major secret by showing Ravonna Renslayer a video recording of a time before she had her memory wiped. It turns out Renslayer once commanded the army that won Kang (the He Who Remains version) his multi-versal war, and she’s been used by him ever since. While Gugu Mbatha-Raw deftly portrays the weight of this betrayal, it sets in rather quickly for the character, scabbing over into ambition within mere seconds. Miss Minutes and Renslayer, it seems, have a sudden plan to take over the TVA for themselves without the need for a version of Kang, without the episode slowing down for much thought, contemplation, or realization; it’s A to B in an instant.
This can’t help but feel like more dramatic wheel-spinning too, given how it manifests during the rest of the episode. It exists to throw a wrench in the (somehow) still ongoing plot of Ouroboros attempting to fix the Time Loom before things go awry — a problem that first cropped up in the season premiere — but it isn’t allowed to carry much weight on its own. It’s a waste of Mbatha-Raw’s immense talent, in service of stretching out a ticking-time-bomb plot. This central premise, of the malfunctioning Time Loom, is also frustrating on its own. If it’s as urgent as the characters say it is, and it truly poses a gargantuan threat, then different sets of characters who all want to protect the TVA have a common goal that they simply ignore (an issue that also persisted last week). They may have different ideologies — some fascistic and some altruistic — but the unfolding action is all incidental to their respective outlooks rather than an extension of them. Every turn is about who controls the TVA, yes, but it’s never about how they control it, apart from what they express in words. A punch here, a zap there, usually in a hallway. That’s about it, despite the ostensible villains possessing sci-fi weapons that essentially erase both individuals and entire populations from time.
The episode features all this talk of various universes being destroyed, and billions of people being killed, but that’s all it is: talk. None of it is ever portrayed, and the one time a character actually imbues it with any kind of weight — Sylvie, who questions why Mobius is being so casual (a seeming bid to protect himself from having to accept these horrors) — this comes right after Hunter B-15 tries to talk an imprisoned General Dox into working on her side. Mind you, this is the very same General Dox who only two episodes ago bombed a handful of timelines and committed what amounts to several Thanoses’ worth of genocide, but it’s easy for the episode to make B-15’s moral dilemma seem worthwhile when all these lives are just theoretical. Sylvie even points this out, noting that to most other characters, all these people are just lines on a monitor — but, unfortunately, this is the case for the audience too. There’s only so much a show can lampshade its flaws without putting in dramatic legwork.
Sylvie and Loki also argue about preserving the TVA, a fascistic organization (whose helmets are not accidentally designed to resemble Nazi storm troopers). Sylvie is, of course, in the right about letting it burn since it may be beyond reform, but in true Marvel fashion, the show’s mechanics work to prevent this revolutionary perspective from being acted upon (by the end, the TVA being destroyed is out of anyone’s control). Instead, ostensible hero Loki delivers a centrist speech steeped in political cowardice, about how trying to raze rotten systems to the ground is easy, while trying to fix them is hard.
As Loki, Sylvie, Mobius, Victor Timely, Casey, and Ouroboros work together to fix the Time Loom, Renslayer shows up back at the TVA to try to lure Dox and her forces toward her side, though their refusal results in Renslayer killing them all with the fancy shrinking box Loki used in prior episodes. The quickness with which Renslayer becomes a murderous dictator feels like a sudden left turn, and it doesn’t even really jell with the episode’s central conflict. These wrenches thrown in the heroes’ gears always seems to be unfolding in some other room entirely, which Loki & Co. waltz in and out of as Timely is kidnapped and then un-kidnapped as quickly as he was last week so things can continue as normal. Without the Renslayer plot, the episode would be shorter, but much more streamlined, and little of consequence would be lost.
Justin Benson and Aaron Moorhead, who directed the season premiere, do an adequate job of imbuing this rigmarole with momentum. You can catch some of their visual signatures from the moment we return to the TVA, as darkened spaces take on a washed-out, grainy look, and the handheld camera dips and weaves ever so slightly as it follows characters walking and talking. Unfortunately this time, their lo-fi aesthetic fails to ground all the grandiose pomp and circumstance, because it all feels empty. There are a handful of exceptions in the form of comedy beats, like Timely being fascinated by the concept of a hot-cocoa machine, and his and Ouroboros’s mutual admiration of one another, but every conversation seems to lack the urgency of a story in which the walls are supposedly closing in, both in the form of Renslayer’s mutiny and the danger posed by the Time Loom.
In what is quite a surprising twist, Timely ends up dying in the process of trying to save the day — he’s instantly spaghettified as soon he’s hit by temporal radiation — though, unfortunately, the result of his failure doesn’t leave much of an impact, despite the concerned close-up of a teary-eyed Tom Hiddleston, given how quickly the episode moves on. The Time Loom explodes, supposedly destroying the TVA, and perhaps the multiverse itself and all the characters we know. But these are exactly the sort of superhero stakes that result in a shrug and a “hmm” rather than shock and awe. Oh, what’s that? Everyone died again? Okay. They’ll be back next week.
At the very least, this outcome might present us with the opportunity to see what becomes of a TVA-less Loki, but it feels entirely limp in the moment. Death doesn’t hurt in the Marvel Cinematic Universe, because there’s rarely any sense of real loss for the characters, especially those whose ideological and interpersonal disagreements are rendered moot because they all ultimately want the exact same thing, so their fights feel like distractions.
It’s all noise without real meaning. For instance, what does it mean that Loki turns out to have been the one who pruned himself in the season premiere? Nothing, really. It’s a snake eating its tail to no significant end, closing a loop that didn’t need to be closed by solving an un-mysterious mystery, in a way that has no emotional fallout for Loki or for anyone else. Maybe next week’s episode will feature a sense of consequence, but with two-thirds of the season already behind us, it seems like it could be too little, too late.
Low-key Moments
• Ouroboros, upon finding out that he wrote the book that inspired Timely, who in turn inspired him, delivers the line, “It’s like a snake eating its own tail!” without a hint of irony or self-awareness. Ke Huy Quan is a comedic wonder, and likely the only person who could’ve played the role of such a helpful, wide-eyed sweetheart.
• Equally delightful, but for the opposite reason, is the sheer glee that Miss Minutes seems to take in people being ruthlessly murdered. The series could use more cartoonish villainy, because the supposed complexity of its moral conundrums just isn’t hitting.
• Timely has never seen a computer glitch, so when Miss Minutes starts rebooting, he’s under the impression that she’s making fun of his stutter. “Well, mocking just isn’t necessary,” he says. A stealth joke that’s probably the funniest thing in any Marvel show.
• Out-there prediction for next week: Loki and crew get blasted into the dinosaur-infested Savage Land, where Wolverine and the X-Men are also stranded. Surely there’s a reason the Time Loom’s blast doors have that “X” in the center!!
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(4),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(135),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,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),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(406),_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,"406":406,"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","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.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();
// ]]