The first shows of her tour make it clear: We are living in the Beyoncéverse.
ByHunter Harris,
a freelance writer who covers film, music, and TV
Photo: William Keo/Magnum
Photo: William Keo/Magnum
Photo: William Keo/Magnum
There is a certain hierarchy between Wednesday, night one of Beyoncé’s Renaissance world tour, and Thursday, night two of Beyoncé’s Renaissance world tour. I heard it first on the Delta flight from JFK to Stockholm as an almost entirely Black — and almost entirely Beyoncé-bound — boarding group took our seats. One man asked another what night he was seeing the show. “Thursday!” the guy answered. Night two, or, as far as his seatmate was concerned, night last. I swear I could hear the reply sizzle as it hit skin: “Ohhhh, well it will still be fun!”
For two nights this week, Stockholm became the capital of Black Planet, the epicenter of all internet activity, when the Renaissance tour — Beyoncé’s first solo tour in seven years and two(-ish) albums — took over the city. After a viral TikTok tipped off fans that floor seats abroad were selling for one-tenth the cost of tickets in New York or Los Angeles (with enviably close seats that cost $2,000 in the U.S. going for less than $200 in Stockholm) those fans booked entire Eurotrips around Beyoncé. They got on the plane wearing compression socks for Beyoncé. A film programmer from Los Angeles told me her hotel had a sign in the elevator specifically for the Hive. She remembered it saying “Welcome to Beyoncé.” Every Black person she’d met so far in Stockholm has traveled here for the show — except for one couple from Seattle who just came because it’s spring.
Stockholm is a pleasant but quaint city to start a global tour in. Is that the polite way to say even locals seemed to find it random? During a walk around the city Tuesday afternoon, I could count other Black people I passed on one hand — and one was a poster promoting the Shondaland show Queen Charlotte. “There’s been some mixed reception,” Charles Ray Hamilton, a TV writer living in Los Angeles, told me. “Going through customs, they ask why you’re here. I said I’m here for the Beyoncé concert. The customs agent rolled her eyes and said, ‘Ugh, why did I even ask?’ She turned to the other agent and started speaking in Swedish.” Not to say that every Stockholmer was anti-Renaissance: In stores and at restaurants, every local seemed to know someone who wouldn’t miss it. When I walked around Gamla Stan, Stockholm’s old town, a few hours ahead of the show, I saw a man in official tour merch recognizable from fans’ posts. Two 20-somethings had white glitter cowboy hats hanging down their backs.
At the stadium close to sunset, half the crowd came to dance in on-theme sequins, glitter, and chrome, and the other half came to dance in whatever was comfortable. A pregnant woman from Denver, in a shimmery silver disc shift dress, asked me to take a video of her, her sister, and her best friend fanning their merch fans emblazoned with the number ten — a reference to the lyrics for “Heated” (Ten ten ten across the board). Three other fans were confused about what a merch T-shirt proclaiming “NO SKIPS” meant. “No skips? What does it mean? Should I know what it means?” one said. “I don’t care what it means. I just want it,” insisted another.
Photo: William Keo/Magnum
The fans I spoke to said they had no expectations for the show. Maybe this was because of the lack of visuals from an artist who has released not one visual album but three. That afternoon, I’d convinced myself that the lack of music videos was intentional. That it wasn’t the result of a stalled corporate partnership. Maybe it was just the result of Beyoncé’s well-documented perfectionism. (Perhaps there were too-white candles, as she’d said once while giving notes during a rehearsal.) I had taken shots of her Kool-Aid. I had given in to the spin: It was actually better that there weren’t any music videos. It was radical that there weren’t any. In a hotel lobby close to the stadium, I asked a news-producer-artist-nomad in his 30s what he expected from the show without videos to memorize and mimic. “There is no conception,” he said. “The Bible says eyes have not seen, ears have not heard.” We both cackled.
When the show started, it didn’t start with a bang — it started with a ballad. Clouds, peachy and lavender in their golden-hour glow, glided across a screen that spanned the stage. There was Beyoncé, in a custom Alexander McQueen catsuit, a mic stand, and a deep cut. “I love you I love you I love you,” she began, singing “Dangerously in Love 2.” It’s a track that always sounded slight on its album. Only when it was released from its mix in live shows could it become a big gutsy ballad. In Stockholm, to an audience bracing themselves for Lights! Fire! Glitter! Flash! the song’s pleading landed with an emotional wallop. Three more ballads followed: “Flaws and All,” “1+1” (with covers of Etta James’s “I’d Rather Go Blind” and Rose Royce’s “I’m Going Down” mixed in) and “I Care.” You will eat your greens at Beyoncé’s table. She sang the songs in a fit, in a fever, in vocal runs that circled and surrounded.
Photo: William Keo/Magnum
Then we got subterranean with glitter and grime. First came the Renaissance thesis statement, opener “I’m That Girl.” The album sprawls and spins: “Cozy” doesn’t lead into “Alien Superstar” as much as it drips. Onstage, she met the moment in bursts: the Renaissance songs are mostlyplayed in dazzling triptychs with old material to bridge the gaps. “I’m That Girl,” “Cozy,” and “Alien Superstar” were cut off by “Lift Off,” a forgettable track from Watch the Throne on which she did backing vocals. “Cuff It,” “Energy,” and “Break My Soul” followed with the last turning into “Formation.” We decamped to some classic tentpoles and newer unperformed music until the album’s final three-song run became the show’s kicker. The ballad openers were starting to look like dealer’s choice. Those songs wouldn’t fit in the tour’s IV drip of desire and adrenaline.
Renaissance comes from the gut, from a thumping, humping, throbbing core that wants to love and fuck and twirl and thrill. In the three-hour show, Beyoncé plugged us in to her motherboard. She is cyborg Beyoncé, who needs a power source and is the power source. We watched her ride a chrome tank down a platform to the second stage. We watched as she was drilled and posed and coiffed by mechanical arms. Onscreen, we zoomed through fiber-optic cables and in and out of her cyborg scaffolding. For Renaissance’s lovey-dovey songs, she emerged from a clamshell. For earlier anthemic hits, she was bouncing and grinding atop the pit.
Photo: Andrew White
She’s 41 now and beginning her seventh world tour, so the show finds savvy ways to let her rest. The chrome tank was a chair. The mechanical arms almost functioned as a tripod. She growled the call and response on “Heated” instead of dancing to it. For “Church Girl” and some songs from 4, she was the stationary centerpiece amid a dozen dancers. But who cares? Her most memorable set pieces have been a walk and a chair. “When they invented walking they never dreamed it could ever look that good,” Seth Meyers tweeted during her 2013 Super Bowl Halftime Show — a line I think about every time she simply strides across a stage.
Beyoncé has played with robot imagery before — in 2008 for I Am … Sasha Fierce. But that is perhaps the era fans are least enthusiastic to return to. The bifurcation of that album, divided between ballads and anthems, between Beyoncé the woman and Sasha Fierce the militaristic pop superhero, feels like old tech. Maybe Beyoncé herself feels the same way: Only two I Am songs makes the cut, and rejoice that it’s not “Single Ladies,” except for a few seconds during an interlude. “Diva” feels fresh again with the spicy horns from “Countdown” mixed beneath and the added delight of Lil Uzi Vert’s “I Just Wanna Rock” dance. (The high was deflated when she followed with “Run the World,” that didactic, unimaginative first draft of a 2011 feminist-empowerment anthem, but the crowd still roared its approval.) “Black Parade,” a random Lion King–era loosie whose pandemic-summer release never let it be the moment, gets a raucous celebration sandwiched between “Run the World” and the “Savage” remix verse, which made that chrome-mirror tank bounce — a fun nod to both Beyoncé and Megan Thee Stallion’s Houston roots. “Move” announces itself as the most underrated Renaissance track, playing all the way up to every seat in the rafters.
When Beyoncé played Coachella in 2018 and made the accompanying Homecoming concert documentary, she was navigating a history of a Black experience — HBCU homecomings — and of her own career. That set list was syllabus and index in one. But Renaissance is not a guided tour in the same way. It’s a multiverse. There is so much Beyoncé music now, so many permutations of her single vision. Sometimes, the show zoomed past it all too quickly: A few videos from her 2013 self-titled album flashed onscreen with the most screen time given to “Flawless.” Blink and you’d miss a medley that includes “Rocket” and “Dance for You.” Another interlude blended “End of Time” with her Jay-Z Carters collab “Heard About Us.” I heard two chords of “Freakum Dress” and maybe four more of “Blow,” although no set list I’ve seen shared online has tracked these hidden mixes. The “hiiiiiigher” runs in “Family Feud” were layered under the opening organ of “Lovehappy,” soundtracking an interlude.
Photo: William Keo/Magnum
Some Beyoncé movements that she included in this show have become her standards: One way or another, she will find a way to speed up the throbbing end of “Partition.” “Love on Top” and a cover of the Jackson 5’s “I Want You Back” have been a package deal since the first On the Run tour. As early as the Beyoncé Experience tour, a ballet barre has risen from the ground as something sexy to dance off and around. The ballads from 2011’s 4, which she has often called her favorite album — including during this show — were overrepresented to balance out Renaissance’s dance-heavy scope. But I noted the near-total absence of Lemonade. She’d chosen “Formation” and a bit of “Freedom” from that album but nothing else. It makes sense: There is no guilt or wrath in this show — only direct orders. (“Eat it, eat it, eat it eat it eat it!”) Her “Telephone” verse, on that Lady Gaga collab, would’ve slotted nicely here. Ditto “Countdown” and “End of Time.” That said, after years of lobbying — if you’re in line, stay in line — we got “Halo” and “Single Ladies” off the set list, so let me be quiet.
Renaissance was influenced by ballroom and reveres it. When Les Twins — the pair of French dancers who have been her frequent flanks over the years — tried out a death drop onstage, it felt like cosplay, especially when ballroom star Honey Balenciaga was right there to slay a costume-change dance break a few moments later. The staging was enormous and ambitious: the tank, the glitter horses, the mechanical arms swinging fans and frames. The first act pushed out a set piece including a huge glitter horse and her band arranged on glittering stage risers — only to roll it back in a moment later. Others were better deployed: Bey reported from a “KNTY4NEWS” broadcast desk in a deluxe queen-bee suit by Thierry Mugler with yellow and black body armor and an antenna-topped headpiece that was crown and command center all in one. This was just one of the extravagantly fashion costumes overseen by stylist Shiona Turini (a former contributing editor for the Cut). She sent the star out ina David Koma dress that I can only describe as looking like the future, a shimmering, sexy, handsy Loewe catsuit, a pearl-adorned black bodysuit for “Church Girl.”
Onstage in David Koma.
Photo: Parkwood
Like its star, the Renaissance tour shows its work. A final set list appears in the tour book annotated with Beyoncé’s handwriting. The scaffolding wasn’t peeking out, it’s on display, and a dozen lighting rigs fluttered up and down, bobbing like piano keys. The interludes teased the still-unreleased music videos, Brooklyn block parties, grainy vintage ballroom footage. The pre-“Formation” interlude addressed the lack of music videos with text onscreen: “You’ve called for the queen. But a queen moves at her own pace, bitch. She decides when she wants to give you a fucking taste. So get your fork and your spoon if you got one.”
Beyoncé will always do the most, but sometimes the show double-checks its boxes: The small act of swaggily wearing sunglasses as Beyoncé while singing “Church Girl” is more rousing than, say, UV lights changing the color of a cloak. After the show, I discussed it with a friend who was in the VIP pit on opening night. It’s hard, I told him, because Beychella was the greatest performance to ever happen anywhere — hyperbole, maybe, but who else has such a total command of their own catalogue. Renaissance is nothing more and nothing less than another excellent Beyoncé concert. The show zags against the major pop tours this year: Taylor Swift is on a (literal) tour through her neatly defined Eras. Madonna is launching her own retrospective Celebration tour. But Beyoncé already did all that with Beychella. In this show, the logic of her latest album, its lush mixing and interpolating, is applied to her whole catalogue. The closest it gets to recreating a video set are the five mic stands that rise for her performance of “Love on Top.” Otherwise, Beyoncé isn’t living in her past but sampling it, making old songs sound new.
At the end of the show, Beyoncé crossed the arena atop Reneigh — her fans’ name for her disco-ball horse — to perform the Donna Summer–sampling “Summer Renaissance.” As the pyrotechnics flashed and glitter shot up from the stage like a geyser, she crossed back alone, draped in a cape. She was Glinda the Groove Witch, dropping good vibes below.
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();
// ]]