The British artist blew up anonymously on TikTok. Now, her Y2K dance-pop influences the masses.
ByCat Zhang,
a culture writer at the Cut, covering books, film, TV, and music.music. Cat was previously an editor at Pitchfork, and in 2022, she received the ASME Next Award for Journalists Under 30.
Balenciaga, Printed Stay Up Foot Leggings, Layered Top, Layered Mini Dress, and Essex Boots, at balenciaga.com.Photo: Renell Medrano
Balenciaga, Printed Stay Up Foot Leggings, Layered Top, Layered Mini Dress, and Essex Boots, at balenciaga.com.Photo: Renell Medrano
The 1 train has been hijacked. A heroic passenger in Guess jeans and UGGs pats down the steel walls of her subway car, determined to break into the conductor’s cabin and activate the emergency brakes before the train careers off the tracks. She fiddles with dials, rummages through under-seat compartments, and wriggles her right hand into a mysterious hole that conceals a lever inside a metal labyrinth. Her whale tail plays peekaboo as she inspects things and then straightens up again. Though the clock is ticking, the woman appears unstressed. She moves with the glazed, indifferent look of a teenager playing Candy Crush under the table at a mandatory family function.
This woman is PinkPantheress, a quasi-anonymous British artist whose government name is nonetheless stamped at the top of her Wikipedia page. She’s a TikTok sensation who introduced normie Americans to the U.K. underground with mini, powder-dusted takes on garage and drum and bass during the pandemic. Since then, she has become a vanguard figure in popular music. She ushered in a wave of breakbeat-pop and collaborated with the likes of Lil Uzi Vert and Troye Sivan. At 23, she is unwillingly upheld as the epitome of her age demographic. To skeptics, she and her two-minute songs portend a youth attention collapse. “People think of me as some sort of Gen-Z final boss,” she says, rolling her eyes. “Like ‘Oh my God, she’s trying to ruin the minds of the kids.’”
PinkPantheress happens to be an escape-room fanatic and, somewhat contradictorily, a scaredy-cat. “I have a fear of generally everything,” she’ll confess. And yet, at her request, we have trapped ourselves in a painstaking replica of an unpredictable subway car, pretending to race against death. “I’m too scared to be in an actual scary scenario,” she explains. “I like stuff that simulates scary stuff.” She averages about two escape rooms a month, usually with her childhood best friend. PinkPantheress arrived today in an impenetrable black S.U.V., but even under sheltered conditions, she was too anxious to sleep because of premonitions of the car crashing: “If I’m awake, I can do something to avoid dying.”
None of this anxiety manifests in-game, where she hums along, methodical if impatient. “Girl, milk?” she mutters, scrunching her face into a stank expression as she examines a prop bottle. “They didn’t need to do all that.” When she feels the puzzle has gotten ridiculous, she has no qualms about paging our operator for help. Her face has a Pixar character’s malleability and a stan’s sauciness: She pouts, purses her lips, and scratches the side of her mouth with long French tips, as if she’s concealing a deliciously shady secret. With five minutes to spare, we stroll out of the escape room to hearty congratulations.
Like her choice of weekend entertainment, PinkPantheress’s songs are high-pressure fantasies with tragic endings written into the script. They can be deceptively light because of her Tinker Bell voice and the rococo production, but they ring with fatal visions. “Guess I’ll see you in another life,” she chirps in the opener to her debut album, Heaven Knows; two tracks later, she sings, “I just had a dream I was dead / And I only cared because I was taken from you.” Her music draws its melancholy from her school days, when she was technically popular because she tried very hard but, in her words, “wasn’t a spring chicken,” she says over lunch at Soho House. She didn’t have a therapist, nor was she inclined to share feelings with her parents or best friend: “I’m not an open book without being prompted.” So, a dyed-in-the-wool emo kid, she channels her woe into the music, where she plays a crestfallen heroine poisoned by romance.
JUDY TURNER Jumpsuit and Shrug, at judy-turner.com.Photo: Renell Medrano
NOIR KEI NINOMIYA Dress, Top, and Vest, at shop.doverstreetmarket.com/usPhoto: Renell Medrano
PinkPantheress launched her career in late 2020 while studying film editing at University of the Arts London. As a teenager raised by a Kenyan mother and an English father in Kent, she had fronted a rock group that covered My Chemical Romance and taught herself GarageBand. Outside class, she would tinker with her own top-line melodies over sped-up samples of ’90s and aughts U.K. dance classics. Witnessing Lil Nas X and Doja Cat skyrocket from internet curios to blockbuster stars inspired her to try for viral fame. She shared slapdash TikToks with her face obscured by giant text — “Day 2 of posting my song until someone notices” — defying the app’s demands for ring lights and exaggerated expressions. Within a few days, her videos had garnered hundreds of thousands of views. Within five months, she had signed to the label Parlophone. Then came a debut mixtape, to hell with it, the BBC Sound of 2022 Award, and a BRIT nomination.
Her ascendancy opened new avenues for unknown bedroom artists. Before, rigidly choreographed dancing videos, set to abrasive trap songs with obvious beats, drove TikTok. PinkPantheress facilitated the arrival of a softer, sweet palette on the app, corresponding with a proliferation of relaxed lifestyle content by and for young girls: your day-in-the-lifes or get-ready-with-mes, etc. Initially, she kept her life shrouded in mystery, emulating early The Weeknd and Frank Ocean. No one knew anything about her besides her moniker, a nod to the Steve Martin movie. Then a selfie appeared online. And another one. (Fans were shocked to learn she’s Black.) She still maintains a relatively low-profile in a visually-driven music industry dictated by parasocial fandoms. But certain things remain out of her control — the Daily Mail “outed” her true identity in 2022.
She has mostly abandoned TikTok, intent on privacy and proving herself to be more than a social-media phenomenon. Meanwhile, her offline accomplishments have quickly piled up. “Boy’s a Liar Pt. 2,” a bleeping Jersey-club confection with Ice Spice, became a Billboard smash and 2023’s song of the summer. She appeared on the Barbie soundtrack. She released her debut album — twice as long as to hell with it — with high-profile guests and a more expansive sound.
Left: STELLA MCCARTNEY Tank Top, at stellamccartney.com. Right: MCQUEEN BY SEÁN MCGIRR Top and Skirt, at alexandermcqueen.com. Vintage PACO RABANNE Shoes from Albright Fashion Library. Renell Medrano.
Left: STELLA MCCARTNEY Tank Top, at stellamccartney.com. Right: MCQUEEN BY SEÁN MCGIRR Top and Skirt, at alexandermcqueen.com. Vintage PACO RABANNE Sh... Left: STELLA MCCARTNEY Tank Top, at stellamccartney.com. Right: MCQUEEN BY SEÁN MCGIRR Top and Skirt, at alexandermcqueen.com. Vintage PACO RABANNE Shoes from Albright Fashion Library. Renell Medrano.
But her live performances remain endearingly anticlimactic. Onstage, she often seems like a random mallgoer who’s been yanked from the Auntie Anne’s line onto the stage, bantering and pacing in dowdy-chic Y2K clothing; she clutches a little purse, as if she’ll need to dash off to make it home for curfew. There is no choreography, background dancers, or pyrotechnics. “I can’t perform like a pop artist. I can’t sing like a pop artist. I don’t have the style or the media training to be a pop artist,” she says. Sheis a manifestation of theordinary-girl-turned-pop-star fantasy, her anti-theatrics possessing their own nostalgic charm. Seated across from me, she steps into the archetype, adjusting her long, fringed wig in her iPhone’s front-facing camera.
Despite her best attempts against it, PinkPantheress is still narrativized as a child of the algorithm, her song lengths a particular point of contention. In May, a soundbite from her ABC News interview—“A song doesn’t need to be longer than 2 minutes 30, in my opinion. We don’t need to repeat a verse, we don’t need to have a bridge”—caused a stir, leading even Dionne Warwick to weigh in. “I was talking about how my album doesn’t need bridges, but it was obviously taken out of context,” PinkPantheress grumbles. She had tried to write a few for Heaven Knows, but even the consulting producers in the room agreed they didn’t feel necessary. Recently, similar controversy struck after a clip of PinkPantheress revealing that she doesn’t listen to full albums made the rounds, fueling the indignant view of her as some kind of philistine, a sign of the inexorable triumph of convenience over old-school artistry. “What got to me was people trying to suggest that I was lazy or something,” she says, in between bites of her grain bowl. “I was like, I produced the whole thing. I wrote the whole thing. You’re gonna call me lazy?”
All of the brouhaha over her personal taste has made PinkPantheress wary of the limelight. n her eyes, talking to mainstream media is a losing game for a black British woman from the U.K.; she inevitably says too much, and her words are stripped of context. Her target audience isn’t the masses but people who get it, and she considers herself closest to dance music innovators like Kelela and Kaytranada. “Whenever I cross mainstream, it begs more questions than anything else. It’ll be people asking, why did you do this? Why did you do this?” she says. For that reason, she nearly declined to open Olivia Rodrigo’s Guts world tour — and lasted only six dates. On August 1, after our interview, she announced she would be canceling all her live performances through 2024 “in order to focus on my physical health and overall well-being.” Like other young female stars with fervent online followings, including fellow Rodrigo opener Chappell Roan, she’s reeling in the midst of a dizzying ascent over which she feels she has no control.
More than public recognition or accolades, PinkPantheress wants cultural currency. “I don’t think I have a particular hotspot in the Grammy-charting world, but I think along with some of my favorite other artists of today, I have a nice spot within culturally important discussions,” she says. For her next phase, she’s tunneling further into dance music, attempting to revive the funky sound of two turn-of-the-millennium U.K. producers whom she won’t name: “No one’s going to steal the sauce.” She adds, “I get excited most about introducing new genres to people.” She has also been auditioning producers for what she playfully calls the “PinkPantheress sweatshop,” which will open the floor to young, previously untested talent.
Lyrically, she might widen her lens beyond love, speaking to subjects like where she comes from. “I don’t want to cosplay as an American,” she emphasizes. British clubs are so different — disgusting, with underage children smoking and lads dicking around in Puma jumpers, like something straight out of a Skins episode. Still, she has a fairy-tale attitude toward romance; she loves being in relationships, though she is not dating right now. “I’m very traditional,” she assures me. “I really like the idea of just being in a nice house. Or not even a nice house, a cottage — with a husband and kids.”
Photo: Renell Medrano
MAISON MARGIELA Distressed Denim Shorts, at maisonmargiela.com. PRADA Boots, at Prada.comPhoto: Renell Medrano
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()}});
}, {"3":3,"6":6,"17":17,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(17),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(3),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 i=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||i.classList.remove("open")})}function gtmSendReport(e,n,t){let i={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(i.eventLabel=n.href),gtm.reportNow(i)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const i=t.split("?"),o=new URLSearchParams(i[1]);for(let e of n.entries())o.set(e[0],e[1]);t=`${i[0]}?${o.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()||auth.isMobileAppRequest())&&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;
}, {"3":3,"4":4,"17":17,"124":124,"135":135}];
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(106),_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()})}}]);
}, {"106":106,"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","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();
// ]]