Amber Heard claims an extremely famous man abused her for years. Why do so many people hate her for it?
ByClaire Lampen,
an editor and writerwho previously spent six years on staff at the Cut: five covering gender, politics, and culture as a writer, and her last year as news editor.
Amber Heard and Johnny Depp are back in court in Fairfax County, Virginia.
Photo: ELIZABETH FRANTZ/POOL/AFP via Getty Images
Amber Heard and Johnny Depp are back in court in Fairfax County, Virginia.
Photo: ELIZABETH FRANTZ/POOL/AFP via Getty Images
Amber Heard and Johnny Depp are back in court in Fairfax County, Virginia.
Photo: ELIZABETH FRANTZ/POOL/AFP via Getty Images
Last week, Amber Heard took the stand in her ongoing defamation trial. Testifying about her marriage to Johnny Depp, she detailed years of alleged abuse in graphic detail. “He said, ‘I’ll fucking kill you,’” Heard recalled of one fight, which she says ended with Depp pinning her down on a countertop and penetrating her repeatedly with a liquor bottle. As Heard sobbed on the stand, the mood in the courtroom darkened. Even Depp looked grim as he lifted his eyes from his notepad to watch her.
His fans were unmoved. “Drama queen,” “Crocodile tears let’s goooo,” viewers on one popular YouTube court stream commented in a live chat. “She loves to talk about herself doesn’t she,” “WOW She’s one piece of work,” “WE DONT CARE,” “what an actress.” Shortly after court adjourned for the day, a clip of Heard wiping her nose with a tissue started circulating on social media; Depp stans speculated she was probably doing a covert bump of coke in front of the jury.
Over the past four weeks, Heard and Depp have presented a harrowing picture of their brief yet turbulent marriage. Testimony on both sides has been painful and exacting: Heard’s attorneys hammered Depp for hours on his substance use, while his witnesses made dubious claims about Heard’s supposed “histrionic personality disorder.” Her team has displayed photos of her bruised face, busted lip, and clumps of her hair on the floor of the couple’s wrecked bedroom. Depp has admitted to painting threatening messages on their walls in his own blood, while text messages show him apologizing for “spraying rage” at her in a blackout as well as saying he hoped Heard’s “rotting corpse was decomposing in the fucking trunk of a Honda Civic.”
No matter how damning the evidence may look in court, social media tells a different story: Instagram and TikTok are full of memes casting Depp as the victim and Heard as the abuser, intent on making a money grab that will tank her ex’s career. Nearly five years after exposés on Harvey Weinstein’s serial predation laid bare the ways powerful men leverage their influence to cover up misconduct, Depp v. Heard feels like a jarring regression. Here is a woman recounting, in agonizing detail, how an extremely famous man allegedly abused her. Why, in 2022, do so many people seem to hate her for it?
The case centers on Heard’s 2018 Washington Post op-ed, in which she identified herself as “a public figure representing domestic abuse” but never mentioned Depp by name. At the time, Depp was waging a legal battle with the U.K. Sun for calling him a “wife beater,” a lawsuit he would go on to lose. Nonetheless, Depp hit Heard with a $50 million defamation suit, arguing that her “demonstrably false” claims “brought new damage” to his sinking reputation and career. After a judge denied Heard’s request to dismiss the op-ed case, she countersued for $100 million.
Their new trial opened last month, and every minute has been televised. Each morning when court convenes, hundreds of thousands of viewers cue up livestreams running on the Law&Crime Network and Court TV YouTube channels. Throngs of Depp’s supporters gather outside the Fairfax County Courthouse, and when proceedings wrap, they rush his car and cram gifts through the open window. His celebrity creates an aura of palpable excitement: “Captain Jack Sparrow in the courtroom today,” one CourtTV presenter effused during Depp’s testimony. “Who doesn’t love Captain Jack Sparrow?”Popcorn emoji spring up in the chat bars affixed to the YouTube streams, which reliably devolve into unmitigated vitriol. “Millions of women would kill to have Johnny.” “She’s just a goldigging Me Too activist who saw an opportunity to further her career and destroy a hollywood icon at the same time.”
Anti-Heard sentiment quickly spread beyond the comments section, spawning a whole taxonomy of memes valorizing Depp. Photos of him in the witness box are inscribed with his inspirational quotes (“Johnny Depp once said, People cry not because they are weak but because they have been strong for far too long. Everyone has a breaking point.”) My Instagram “Explore” page is suddenly sprinkled with photos of Depp in his prime: much younger versions of the actor kissing Winona Ryder and Kate Moss or holding a toddler-age Lily-Rose Depp in sepia. When Heard’s face pops up, it’s alongside captions like, “You can see the moment she remembers she was supposed to be sad.” After Depp alleged that Heard defecated in their bed when he left her, “Amber Turd” and “#MePoo” trended on Twitter for days. (According to Depp, she blamed the incident on the couples’ dogs.)
For her part, Heard never claimed to have behaved perfectly in their relationship. In recordings played in court, she appears to occasionally taunt and belittle Depp: “Tell the world, Johnny,” she told him in 2016. “Tell them, ‘I, Johnny Depp, a man, a victim, too, of domestic violence.’” On the stand, Heard admitted to screaming at Depp, to calling him “ugly names” and hitting him. Depp’s fans point to her 2009 arrest, which followed an argument she had with ex-girlfriend Tasya van Ree, to suggest Heard has a history of brutalizing her partners; van Ree, meanwhile, has already stated that police “misrepresented” the incident to “wrongfully” accuse Heard. (One person the court hasn’t heard from: Ellen Barkin, who said in a deposition that Depp once threw a wine bottle at her when the pair briefly dated. In his U.K. trial, Depp said Barkin was motivated by a “grudge” because he didn’t return her feelings.)
Witnesses for Depp have described Heard as demanding and volatile, and a marriage counselor who worked with the couple testified that they engaged in “mutual abuse.” That isn’t a term domestic-violence experts like to use because it ignores the unequal power and bullying inherent in intimate-partner violence. “Self-defense” is more accurate, and in her testimony, Heard outlined a cycle in which Depp’s jealousies, inflamed by alleged lapses in his sobriety, sparked explosive arguments. She said he tried to dissuade her from taking acting jobs, assuring her, “You don’t have to work, kid; I’ll take care of you,” and criticized her for considering roles that required sex scenes and kissing. Eventually, she said he even got wardrobe approval. In Heard’s telling, Depp’s substance dependence split him into two people: a caring and generous partner when he was sober and a violent, irrational “monster” when he was not. “I would try to stand up for myself,” she told the court. “By December 2014, I would push back.” When Depp fans accuse Heard of exploiting the actor’s wealth and status, they implicitly acknowledge a power imbalance. Both are actors, but one of them is more accomplished, more lauded, more influential. One of them has been nominated for three Academy Awards. One of them is a household name, while the other is most famous in the context of this legal battle.
Depp’s fans also have a disturbing ability to take the evidence Heard presents and flip it against her. A video of a drunken rampage — footage in which Depp smashes glasses and empties a bottle of wine — becomes proof of Heard’s capacity for manipulation. They question her motives: Why was she recording him in the first place? Then there are the text messages Depp sent his friend the actor Paul Bettany in 2013, musing about drowning Heard and setting her body on fire. In the Court TV live chat, one observer granted that the texts did look bad, but: “She did marry him still.” If victim-blaming is frowned upon these days, you wouldn’t know it from looking at the way people talk about Heard online. Even the makeup company Milani Cosmetics got in on the action, posting a TikTok debunking a claim made in opening statements that Heard relied on concealer kits like theirs to cover her bruises. “The thing is,” Ireland Baldwin wrote on Instagram, “I know women who are exactly like this. They are manipulative and cold and they use their very womanhood to play victim and turn the world against the man because we live in a society where it’s cool to say men are all the worst and blah blah fuckity blah.”
False allegations of domestic violence are exceedingly rare. Taking this trial as an example, you can see why: The legal process dredges up relentless grief, and it certainly isn’t weighted toward survivors. If you fight back, you are often framed as complicit in the abuse. Yet the idea that women make up damning stories to entrap innocent men refuses to die. Attorneys for Weinstein cast his accusers as liars motivated by fame and money. Bill Cosby has repeatedly claimed the same. Woody Allen has characterized his daughter’s molestation allegations as a bid by his vengeful ex to destroy his career. In the past few years, it finally seemed as though the public was beginning to believe the victims. But by all appearances, Depp continues to enjoy the benefit of the doubt even as he reads back the texts in which he referred to Heard as a “slippery whore.”
Depp’s central complaint in this case holds that Heard’s op-ed left his reputation in tatters, a claim at odds with the swarms of fans rallying around him in court and online. While his career has been on a downward spiral for a while now, Heard’s attorneys have pointed out that the bad press — accusing Depp of getting drunk on set and highlighting a string of expensive box-office flops for which he earned a huge salary — began years before Heard filed for divorce. Depp denies having addictions to drugs and alcohol, and still his hard-partying reputation precedes him. He apparently has a temper. He has been accused of punching a crew member on a film set unprovoked. He has become aggressively litigious. For certain industry executives, Depp’s U.K. libel suit put the final nail in the professional coffin he built himself.
On my Instagram “Explore” page, nostalgia for a particular version of this man — unreasonably hot, widely respected as one of the most talented actors in Hollywood — appears to have eclipsed reality. Yet the fervor of his fans confirms at least some of what Heard is saying: Depp is so famous, so beloved, he could get away with almost anything. “No one told him” about his alleged substance abuse and behavior issues, Heard said on the stand. “This man lost control of his bowels, and I would clean up after him … Then he’d walk around thinking he didn’t have a problem.” At his Virginia trial, attorneys spend hours picking apart his vicious texts, vindictive emails, and grueling testimony. Then he gets up, opens the courthouse doors, and the crowd still goes wild.
In her op-ed, Heard wrote that, after divorcing Depp, she “felt the full force of our culture’s wrath for women who speak out.” As this trial makes clear, she wasn’t lying about that. Even after so many women have come forward with accounts of abuse in recent years, the Heard trial is a sobering reminder that a victim’s credibility is still a fragile thing. It doesn’t matter what you say when no one is willing to hear it. I think about survivors following the trial from home: If this is the response a person can expect from airing their claims in court, why speak up at all?
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(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();
// ]]