ByOlivia Craighead,
a news writer for the Cut who covers pop culture and celebrity.Previously, she wrote about pop culture and entertainment at Gawker.
Photo: Jesse Grant/Getty Images
In September, Diddy was arrested in Manhattan after being indicted on sex-trafficking and racketeering charges. But before the music mogul was facing multiple lawsuits accusing him of sexual abuse, he was known for throwing some of the most extravagant parties in the entertainment industry.
Throughout the early 2000s, Diddy’s annual White Party was the hottest ticket in the Hamptons. Now, with disturbing details emerging about his alleged dayslong “Freak Offs” — prosecutors claim he would provide copious amounts of drugs to female attendees and male sex workers and make them perform sex acts while he watched and masturbated — people are questioning what actually went down at Diddy’s other parties. In a resurfaced clip from his 2002 interview with Conan O’Brien, Diddy laid out his tip for a good party: “A lot of ladies drink water at parties, so if you don’t have what they need, they’re going to leave. Got to keep them there. You need locks on the doors … It’s a little kinky.”
Here, what we know about Diddy’s parties over the years.
Who went to Diddy’s parties?
A better question would be, Who didn’t go to a Diddy party? Name someone who was famous in the early aughts and there’s a photo of them partying with Diddy. Leonardo DiCaprio, Sarah Jessica Parker, Martha Stewart, Jamie Foxx, Russell Simmons, Jennifer Lopez, Jay-Z, Vera Wang, Russell Brand, Chevy Chase, Kim Kardashian, Paris Hilton, LL Cool J, Aretha Franklin, Reverend Al Sharpton, and even Regis Philbin have all been photographed at a Diddy party over the years.
There were non-celebrities on the guest list, too, plenty of whom were just wealthy white Hamptonites coming into contact with hip-hop culture for the first time. Johnny Nuñez, a ’90s party photographer, recently reminisced to The Hollywood Reporter that “socialites who had only ever listened to Z100 … were turning up to Bonecrusher and DMX” at Diddy’s bashes. “Puffy introduced Black music to the white elite.”
Paris Hilton, Kim Kardashian, Diddy, and Scott Storch in 2006.
Photo: Jon Furniss
Aretha Franklin and Diddy in 2004.
Photo: Dimitrios Kambouris
Russell Simmons, LL Cool J, Reverend Al Sharpton, and Diddy in 2004.
Photo: Dimitrios Kambouris/WireImage for Bragman Nyman Cafa
What happened at Diddy’s parties?
From 1998 to 2009, Diddy threw an annual White Party, which was noteworthy not just for its strict white-only dress code but for bringing together the old-money (read: white) denizens of East Hampton and the new generation of hip-hop stars. In a 1999 interview with Entertainment Tonight, Diddy said that his parties were about “breaking down racial barriers, breaking down generation barriers.” His example at the time was that the billionaire businessman Ron Perelman could be seen talking to Jay-Z at one of his parties (this was before Jay-Z had become a business tycoon). In 2001, the Independent quoted Diddy saying, “Have I read The Great Gatsby? I am the Great Gatsby!”
Diddy parties certainly had a flair for the dramatic. At his 2004 White Party, which doubled as a kickoff event for his get-out-the-vote organization Citizen Change, Diddy arrived via helicopter straight from the curtain call of A Raisin in the Sun on Broadway. In his arms was an original copy of the Declaration of Independence, on loan from the prolific television producer Norman Lear.
Diddy with an original copy of the Declaration of Independence in 2004.
Photo: Johnny Nunez/WireImage
The parties would start in the daytime and go long into the night. In the early hours, it appears there was more of a family-friendly vibe: There are photos of Diddy and his then-partner, Kim Porter, holding their twin babies at a White Party in 2007. At the same party, Diddy posed with his young sons. At a certain point, it would transition to an adults-only affair. In a video obtained by the Daily Mail, Diddy stands on a balcony to address the crowd at one of his White Parties. “We fed you all. We gave you drinks. Now it’s time to enjoy life,” he said before addressing the children at the event. “Kids have an hour left [because] this thing turns into something that when you get older, this is something y’all gonna want to come to … So let’s just start to get our groove on. Put the kids away. It’s all good.”
Kim Porter and Diddy, with their twin daughters, Jessie James and D’Lila Combs, in 2007.
Photo: Mat Szwajkos/Getty Images
Diddy with his sons (L-R) Christian, Quincy, and Justin in 2007.
Photo: Bryan Bedder/2007 Getty Images
Over the years, people have alluded to what sort of things happened at Diddy’s parties. In addition to a lot of famous people in attendance, it seems as though there were usually also naked people and drugs. Photos published by the Daily Mail show Diddy pouring Champagne onto topless women. In another photo, two topless women straddle a man in the pool while pouring Champagne into his mouth. Other photos show partygoers like Lopez lounging on what appears to be a large bed. At another 2004 party, this one in Miami, Diddy was photographed eating a chocolate-covered strawberry off a naked woman being used as a serving tray. According to the Daily Mail, which published the photos, several A-listers were in attendance at this party, including Diana Ross, Will Smith, Bruce Willis, and Owen Wilson.
In a June YouTube video, content creator Tom Swoope told a story about attending one of Diddy’s White Parties in the early aughts. He claimed that the party was “tiered off” and that there was the “general admission” area and more private VIP areas as you made your way through the house. In the video, he claimed that there were lots of drugs (namely ecstasy and cocaine) and people engaging in sexual activity.
The New York Post interviewed a drug dealer who claimed to have sold Diddy cocaine at his Hamptons home during a party. The dealer said that Diddy opened the door wearing nothing but a robe and led him back to a bedroom — again, it seems like most of the illicit activity happened away from any main area. “Weird shit was starting to happen. Celebrity guys fucking each other. There were back bedrooms, and it was like the inner sanctum,” he explained to the Post. The dealer also claimed there were sex workers at the party and that many attendees were using ketamine and GHB.
In the TMZ documentary The Downfall of Diddy: The Indictment, former publicity director for Bad Boy Entertainment LaJoyce Brookshire was asked if she ever felt that Diddy’s parties could take a turn for the nefarious.
“My spidey senses were always on high alert. And I know that there’s no safety after a certain hour when you’ve got drinks flowing and people behind your back doing drugs in bathrooms, and two or three people walking out of a bathroom together … so could there potentially be? Absolutely. Did I see it? No. I never stayed at the party late enough to see.”
What have people said about Diddy parties?
People did not usually go on the record about Diddy’s parties, but over the years we’ve gotten a few quotes about what they were like. In his 2019 episode of Hot Ones, Ashton Kutcher — who co-hosted the White Party in 2009 to raise awareness for a malaria-fighting charity — was asked if he had any Diddy-party stories he could share. “I’ve got a lot I can’t tell,” he told host Sean Evans before putting on a show of going through his mental rolodex. “Can’t tell that one, either. I’m actually cycling through them.”
Ashton Kutcher, Demi Moore, and Diddy in 2009.
Photo: Michael Tran/FilmMagic
In July, 50 Cent told The Hollywood Reporterthat he had avoided Diddy’s social circle. “I’ve been very vocal about not going to Puffy parties and doing shit like that,” he said. “I’ve been staying out of that shit for years. It’s just an uncomfortable energy connected to it.” 50 Cent’s production company is currently working on a documentary about all the accusations being made against Diddy. In a statement attached to the doc’s announcement, the rapper shared, “This is a story with significant human impact. It is a complex narrative spanning decades, not just the headlines or clips seen so far.”
Khloé Kardashian talked about partying with Diddy in a 2014 episode of Keeping Up With the Kardashians. The reality star said that Justin Bieber (then 20) and French Montana were also there and that “half the people there were butt naked.”
Usher, a protégé of Diddy’s, lived with the mogul in New York for a year in 1994, when he was 13 and Diddy was 24. In a 2004 Rolling Stoneinterview, Usher said, “Puff introduced me to a totally different set of shit — sex, specifically … There was always girls around. You’d open a door and see somebody doing it, or several people in a room having an orgy. You never knew what was going to happen.” However, he changed his tune in a 2016 interview with Howard Stern, when he denied that Diddy’s home was “filled with chicks and orgy-ing,” as Stern had said, but did admit that it was a “curious” environment. When asked by Stern if he would let his own children have a similar experience, Usher said emphatically, “Hell no.”
In October, after his arrest, Rob Shuter, a former representative of Diddy’s, spoke with The Hollywood Reporter about Diddy’s White Parties, which Shuter claims he “never spent a dollar on.” (He says they were sponsored.)
During a recent appearance on the No Jumper podcast, Nick Cannon spoke about his experiences working at Diddy’s parties as a DJ. “I leave early,” Cannon said, explaining that as soon as his job was over, he would leave. When Freak Offs were mentioned, he quickly noted that he had never seen anything like that at a Diddy party.
Are the parties connected to Diddy’s alleged “Freak Offs”?
It seems that while there might have been sexual activity at Diddy’s parties, the Freak Offs that are mentioned in both his federal indictment and the complaint filed against him by his ex-girlfriend Casandra “Cassie” Ventura were their own, separate thing.
In the indictment, prosecutors describe Freak Offs as “elaborate and produced sex performances that Combs arranged, directed, masturbated during, and often electronically recorded.” Ventura’s complaint explained that Freak Offs usually took place in luxury hotels, not Diddy’s home. They allegedly could last for days at a time, and participants would require IV fluids afterward owing to physical exertion and drug use.
When asked by the Daily Mailabout DiCaprio’s attendance at Diddy’s parties, a source close to the actor stressed that the parties were not Freak Offs. “[DiCaprio] attended a few of [Diddy’s] parties back in the early 2000s — but literally everyone did … They were not Freak Offs,” the source explained. “They were big house parties.”
In a new report, the New York Postclaims to have reviewed footage of at least three orgies thrown by Combs, all of which appear to have taken place hours after major events like the Super Bowl or the VMAs. In instances reviewed by the Post, it appears that Diddy would throw an aboveboard party featuring loads of celebrity guests before eventually moving things to a private residence with just the orgy participants. The Post did not imply that any celebrities besides Diddy were involved with these sex parties.
As for Diddy, he has repeatedly denied the allegations against him and pleaded not guilty to charges of sex trafficking and racketeering. His trial date has been set for May 2025. We have reached out to representatives for Diddy and will update this post when we hear back.
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();
// ]]