ByAngelica Jade Bastién,
a New York and Vulture critic covering film and pop culture
The latest DC movie is the cinematic equivalent of a snake eating its own tail. This isn’t a film so much as brand management in flailing motion.
Photo: Courtesy of Warner Bros. Picture
This review was originally published in June. We are recirculating it now timed to The Flash’s streaming debut on HBO Max.
The allure of the multiverse is in its wild possibilities. In theory, it gives storytellers infinite space to let their imaginations overgrow with experimentation and curiosity, to let dead ends become backdoors onto new vistas. Every fantasy, every whim, every fancy becomes a direction in which they can spin the narrative. But as Hollywood has grown more enamored with the concept of a multiverse, the limitations of a poorly structured one have become more apparent. In The Flash — directed by Andy Muschietti with a script credited to Christina Hodson — there are only dead ends. A space once infinite is crowded with obvious brand-extension ploys that divert only temporarily from the crushing weight of our present reality and ultimately strand viewers in a story uninterested in anything resembling humanity. Despite its tangled behind-the-scenes history — directors jumping from the project as if it were the Titanic, the escalating legal issues of its star — the film is remarkably banal. It’s a deterioratingrest stop on the road to nowhere.
The Flash was never going to give us a real glimpse of a James Gunn–shepherded DC Extended Universe future, given that the production predated his official appointment as head of DC Studios. Still, I hoped this film would move beyond the sloppy characterization, ugly-as-sin aesthetics, and arch stratagem that defined the franchise’s past. Instead, The Flash gives us more of the same gray slop. Its heroes lack both the outsize foibles that grant such powerful characters humanity and the audacious, colorful approach to the body that gives superhero flicks their electrical charge. In the end, the movie neither reckons with previous mistakes nor heeds the ideas of a new vision. The story remains stunningly beholden to the cruel, bland world Zack Snyder ushered into existence with Man of Steel and capped off with the revamp of Justice League.
The setup of The Flash borrows heavily from Flashpoint, the controversial 2011 crossover arc that completely revamped DC and ushered in the New 52, a reboot so reviled that DC is still shaking it off all these years later. For all its faults, of which there are many, Flashpoint at least took risks: Alliances changed, subsequent story developments had momentum and force. (The comic put Barry in a world where Bruce Wayne is the one who died in that alley — leading his father to take up the mantle of Batman and his mother to lose her mind and become this timeline’s Joker — and Aquaman is an emperor battling Wonder Woman and her Amazons for world supremacy.) But in The Flash, the status quo is fought for and maintained. It centers on the man behind the moniker, the awkward Barry Allen (played by Ezra Miller, the nonbinary actor who was on their way to movie stardom when they were caught on video attacking a fan and then accused of leading a cult and grooming a young follower), who often uses humor to distract from his pain. Barry is disgruntled, overworked, and underappreciated, the janitor for the Justice League left to clean up after Batman’s (Ben Affleck) mess. Early on, that means saving a slew of babies and nurses from a Gotham hospital that collapses in the most successful action sequence of the film. Director Muschietti aims for delight as Barry slows time to a crawl and rescues a plethora of newborns from various escalating forms of violence: scalpels, open flames, broken glass. He’s otherwise lonely, with no real connections. Until the murder of Barry’s mother (Maribel Verdú) — assumed to beat the hands of Barry’s imprisoned father (Ron Livingston) — becomes headline news again, and he tries and fails to flirt with a reporter named Iris West (an underused Kiersey Clemons), who’s tasked with peering into his tragic life.
Unfortunately, The Flash doesn’t tease out the complications of Barry’s loss so much as use them as a springboard for uninspired multiverse plotting. When he realizes he has the ability to run fast enough to travel back in time, Barry decides to stop his mother from being murdered and therefore save his father from being imprisoned. (This feat hangs upon the perfectly timed purchase of a can of crushed tomatoes, if you need an example of how prosaic the film can get.) Yet despite being a highly intelligent forensic scientist and a superhero capable of preventing apocalypse, Barry is a complete idiot in crucial moments — dumb enough to not fully comprehend the ripple effects of his decision. He ultimately saves his mother, but he’s punched out of the Speed Force by a shadowy figure, marooning him a few years in the past with an obnoxious, not-yet-super 18-year-old version of himself. It gets worse: It just happens to be the moment Zod (Michael Shannon) arrives on Earth, but in this timeline there are no metahumans (a DC term for those with genetic mutations that grant them great abilities), leaving the world without a Superman or a Justice League to protect it.
Now, this doesn’t quite track. Not every Justice League member was a metahuman; Wonder Woman is a demigoddess, after all. Adaptation inconsistenciescould be waved away if the emotional terrain and aesthetics of the film had a strong enough point of view, but what follows proves otherwise. Barry and his highly obnoxious alternative self realize the gravity of their situation and seek help. They track down Bruce Wayne, in this universe played by Michael Keaton, picking up the cape for the first time since working with Tim Burton on the gothic fantasias Batman and Batman Returns. He’s reluctant at first but eventually leans into his old role and agrees to help track down Superman, though he and the Barrys in the end settle for Clark Kent’s cousin Kara (Sasha Calle) instead. There are hints of other futures, other curiosities, but Snyder’s lingering visual gruel (which in the case of The Flash takes on a turgid yellow sheen meant to evoke speed force) envelops them all. It makes for a remarkably claustrophobic film in which the zany possibilities of a multiverse are traded in for the worst kind of nostalgia, hinging upon low-grade sentimentality rather than imagination. Even the horrid CGI turns supposedly human flesh into plastic, selling us a facsimile of something we’ve already bought. Why would Warner Bros. evoke such a universe-spanning event as Flashpoint and then fail to change anything fundamentally and, worse, present its own cinematic universe as so narrow?
Let’s get this out of the way: Ezra Miller is perfectly fine in the role. They are not charming nor yearning enough to make the character’s haphazard decision-making resonant, but they fill the part with enough energy to avert a complete disaster. Even so, Miller seems uncomfortable with such bombastic excess. More successful is Keaton, who lends gravitas and gruff humor to the role of elder Bruce. But the acting ranges from mildly amusing to completely checked out. Calle’s Supergirl is a pale imitation of Clark Kent, a result of a script that never endowed her with a personality to begin with. (If you were hoping this film would give a damn about its female characters, you’ll be sorely disappointed.) Watching the cohort is like witnessing a child play with action figures: There’s no grace or interiority, only the grinding machinations of battles without clear purpose.
But the actors’ collective inability to generate excitement is not the fundamental problem. Like so many superhero films before it, The Flash doesn’t know how to trade on its nostalgia. Consider Keaton’s Batman, who, aside from his physical appearance, bears little resemblance to the one from Burton’s universe. What helped make Burton’s Bruce so compelling was the baroque wonderland created for Batman and Batman Returns, which The Flash replaces with a sterile, safe, successful Gotham that could be any major city in this country. In this environment, we never learn enough about Bruce’s life — the villains he battled, the losses he endured beyond the death of his parents. “The scars we have make us who we are,” he intones with wisdom. But where are the scars? Barry’s are never fully explored either, only revealed with a mawkish sense of manipulation and treated as windows into other, even flatter tragedies. When the corpse of a beloved, long-dead actor is revived for a brief, wordless appearance, the audience in my theater erupted — a damning example of how little we’ve come to expect. Any possibility for pleasure is further undone by the rushed visual effects, what happens when corporations treat art as an exercise in commerce, willing to work VFX houses into early graves to pump out images defined by inelegance.To create something new, to reach for artistry instead of assured responses at the box office, is far too great a risk.
In another world, The Flash could have been a cohesive, zippy thrill ride that remixed enough of what we’ve seen of the DCEU to feel fresh. But The Flash and its lead end where they began. There are no grand changes or revelations. There are very few cameos, and none with the juice to stand out from Batman, to whom the story remains hopelessly obligated. And it ends on a throwaway cameo joke, a decision that only highlights how inconsequential everything to that point has been. Will we ever find out the truth about Barry’s mother’s death? The film shows a remarkable lack of interest in solving its own crucial mystery because the filmmakers aren’t interested in the world of grief that opens up in a person. It’s all a gaudy retread: Sell audiences the pain and joy they’ve already experienced, ignore the present, dim the future. The Flash is the cinematic equivalent of a snake eating its own tail. This isn’t a film so much as brand management in flailing motion. It’s debilitation. It’s the closing down of all the possibilities a multiverse is meant to represent.
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();
// ]]