What We Know About the Disappearance of Peng Shuai
ByBindu Bansinath,
a writer for the Cut who covers news, culture, and relationships.Her work has also appeared in the New York Times, the New York Times Magazine, The Paris Review, and Electric Literature. She was previously an assistant editor at Harper's.
Photo: FRED DUFOUR/AFP via Getty Images
On the courts, 35-year-old Chinese tennis star Peng Shuai is a tour de force. She’s a three-time Olympian who has won 25 tour titles over the course of her career, and her trailblazing success has helped to propel women’s tennis to new heights in China. Then, last November, she disappeared.
The circumstances of Peng’s disappearance are disconcerting: On November 2, Peng accused Zhang Gaoli, China’s former vice-premier under Xi Jinping, of sexual assault in a post on Weibo, a Chinese social-media platform. The post was taken down minutes after it went up and subsequently removed from the Weibo search engine. Not only was Pengscrubbed from the internet; she went missing in real life, too: After posting the allegation, which is the first public Me Too accusation against a high-ranking Communist Party official in China, Peng wasn’t seen in public for two weeks, sparking concern for her safety. In response to an international outcry, the Chinese government has made concerted (but unconvincing) efforts to prove that Peng is okay — claiming that she’s just “resting at home.”
But many still aren’t buying it. Here, what to know about Peng’sdisappearance:
Peng accused Gaoli of coercing her into sex at his home.
On November 2, in a post written as a direct address to Gaoli, Peng wrote that in 2018, Gaoli, who is 75, invited her to play tennis with him and his wife. She said that the three of them went to Gaoli’s home afterward and that Gaoli coerced her into having sex with him. “I did not consent that first afternoon. I cried the whole time … After dinner, when I was still reluctant, you said that you hated me,” she wrote. In the post, she also recounted having had consensual sex with Gaoli ten years earlier, when he was the party chief of Tianjin, and addressed the fact that she had no physical evidence of the assault: “You were always afraid I would make recordings and keep them as evidence. In fact I have no evidence or proof other than my own word,” Pengwrote. “But even if it’s just me, like an egg hitting a rock, or a moth to the flame, courting self-destruction, I’ll tell the truth about you.” Peng also wrote that the trauma left her feeling “like a walking corpse.”
Peng’s accusations were quickly wiped from the web.
In China’s heavily monitored, censorship-heavy cyberspace, the post was taken down in half an hour, and searches for “tennis,” “Peng Shuai,” and “Zhang Gaoli” were temporarily blocked. Private accounts that sent screenshots of the post were suspended. Meanwhile, Penghadn’t been heard from since posting the accusation. Around the world, while support for Peng continued to grow, many began to worry for her safety. A number of tennis stars, including Naomi Osaka, Serena Williams, Billie Jean King, and Rafael Nadal, denounced censorship and expressed their concerns for Peng. In advance of the 2022 Winter Olympics in Beijing, the Biden administration and the United Nations demanded proof of her well-being. Steve Simon, head of the Women’s Tennis Association, told CNN that he was prepared to pull its business in China in response to what had happened. “This is bigger than the business,” Simon said. “Women need to be respected and not censored.”
The Chinese government has tried to argue that Peng is fine, but its evidence looks suspicious to many.
On November 17, the CGTN — an official news-media organization under the control of the Chinese Communist Party’s publicity department — tweeted out a photo of a purported message from Peng Shuai to Simon, though it did not manage to reassure many.
“Hello everyone this is Peng Shuai,” read the message, which was written in English. It went on to recant Peng’s allegations of sexual assault as “not true” and also denied her disappearance. “I’m not missing, nor am I unsafe. I’ve just been resting at home and everything is fine. Thank you again for caring about me.” In a statement posted to the WTA website, Simon called for independent verification of Peng’s whereabouts and safety. He said the suspicious email only raised his concerns about Peng, adding that he had tried to reach her through numerous forms of communication “to no avail.”
Then a number of suspicious photos and videos of Peng emerged. On November 19, a Chinese state-television employee posted photos of Pengon Twitter, alleging that her friend shared the photos from her WeChat moments. The photos are captioned “Happy Weekend” and picture Peng playing with a gray cat and holding up a panda figurine in a selfie, though it’s not clear when they were taken. Chinese state television also tweeted a video of Peng eating with her coach at a Beijing restaurant. In the video, the coach asks Peng: “It’s November 21 tomorrow, right?” The date is repeated three more times in the video, though Peng never speaks. Another state official tweeted a video of Peng purportedly attending a Beijing tennis final.
Teng Biao, a civil-rights lawyer from China, told the New York Timesthat the videos “can only prove that Peng Shuai is alive, but nothing else. They cannot prove that Peng Shuai is free.”
The International Olympic Committee has come under scrutiny for its response.
In light of Peng’s disappearance, there have been mounting calls to the International Olympic Committee to move the Winter Olympics out of Beijing. In December, the Biden administration announced a “diplomatic boycott” of the Beijing Olympics, citing “genocide and crimes against humanity,” referring to Chinese abuses of Uighur Muslims in the Xinjiang region. Under the terms of the boycott, no American officials will attend the games, though U.S. athletes are still able to compete. New Zealand, Australia, and the U.K. all followed suit.
Meanwhile, several organizations — including Human Rights Watch, the Sports & Rights Alliance, the Army of Survivors, and the World Players Association — have called on the IOC to use its sway to ensure Peng’s safety, but the IOC has so far done little. On November 21, the IOC claimed to have had a call with Peng, and though no transcripts or footage were released, IOC chairman Dick Pound insisted Peng appeared “fine,” a claim that was met with more suspicion and outrage. On December 2, the IOC announced it had a second video call with Peng, claiming it was using a “human and person-centered approach” and “quiet diplomacy” to address the situation. The IOC again claimed Pengappeared “safe and well.” Meanwhile, Peter Dahlin, director of the human-rights NGO Safeguard Defenders, has said IOC’s calls with Peng are “obviously staged” and put her safety “at greater risk.” In an open letter to the IOC on the organization’s website, Dahlin said Peng’s appearance on these video calls is a practice “eerily similar to a recurrent CCP tactic of stage-managed TV appearances, where victims are paraded and forced to perform by the police, often in an effort to counter international criticism.”
On December 3, the Women’s Tennis Association announced its decision to suspend all tournaments in China and Hong Kong. Simon released another statement saying the situation with Peng was “unacceptable.”
“If powerful people can suppress the voices of women and sweep allegations of sexual assault under the rug,” Simon wrote, “then the basis on which the WTA was founded — equality for women — would suffer an immense setback. I will not and cannot let that happen to the WTA and its players.”
In a suspicious interview, Peng recanted her sexual-assault allegation.
On December 19, Lianhe Zaobao, a Chinese-language Singaporean newspaper, published a video interview with Peng in what appeared to be the latest attempt by Chinese officials to assuage global concern for her safety. In the video, a journalist claims to have run into Peng on the sidelines of a Shanghai skiing event and proceeds to ask her a series of pointed questions about her allegations, prompting her to again retract her accusation of sexual assault.
“First and foremost, I must emphasize I have never said or wrote about anyone sexually assaulting me,” Peng told the journalist — a strange assertion, considering that the initial Weibo post detailed an alleged sexual assault at length. “I know there are many misunderstandings,” she added. Addressing her rehearsed public appearances and correspondences, Peng further claimed that she wrote the email to Simon denying the assault and that the CGTN merely translated it. She denied that she’s been under house arrest, claiming that she’s “free to go” as she pleases. Peng said she’s not traveling or competing because of the pandemic but will continue attending games.
Peng also denied being monitored. “Why would anyone monitor me?” she said. “I have always been free.” Yet for many human-rights officials and experts, the video, and Shaui’s reversal of her allegations, only sparked further suspicions.
The IOC president met with Peng at the Beijing Olympics.
On Monday, the IOC announced that Peng Shuai met with the organization’s president Thomas Bach over dinner at the Olympic Club on Saturday. Ahead of the meeting last week, Bach told a pre-Games news conference that he would meet with Peng in an effort to address concerns over her status and safety. “We know from her explanations … that she is living in Beijing, that she can move freely, spending time with family and friends,” Bach said at the conference. “Now we will be able to do the next step in a personal meeting to convince us in person of her well-being and state of mind.” Bach also said that the IOC would support Peng if she wanted her allegations investigated. “It’s her life. It’s her allegations,” Bach said. “We will know more about her physical integrity and mental state when we meet her in person.”
But a statement posted to the IOC’s website on Monday after the dinner didn’t address any concerns about Peng’s well-being. While the statement noted her attendance at various Olympic events, there was no mention of Peng’s sexual-assault allegations, the possibility of investigation, or her freedom of speech. A spokesperson for the IOC refused to say whether the committee believed Peng’s allegations, or whether they thought the Chinese government was influencing Peng’s public statements.
“I don’t think it’s up for us to be able to judge, and it’s not for you to judge, either, in one way or another, her position,” the spokesperson said.
In another interview, Peng again recanted her sexual-assault allegation and announced plans to retire from tennis.
In an interview published Monday with the French sports daily L’Equipe, Peng again recanted her claims of sexual assault. According to the paper, the interview was arranged by China’s Olympic committee on Sunday, questions were required to be submitted in advance, and Shuai’s answers were then translated by a Chinese Olympic committee official. In the interview, Peng said that she plans to retire from tennis and denied she made any sexual-assault allegations in the first place. “I never said that anyone made me submit to a sexual assault,” she said, before adding that her Weibo post “resulted in an enormous misunderstanding from the outside world.” Peng said she wished the meaning of her post would “no longer be skewed,” and that she was the one to scrub her original post from Weibo “because I wanted to.”
Even the L’Equipe journalists who conducted the interview aren’t convinced Peng was speaking freely — in fact, one of the French daily’s reporters has said the whole thing was “propaganda.” On Monday, Marc Ventouillac, one of the two L’Equipe journalists who interviewed Peng, told the Associated Press that it was “impossible to say” whether Peng was speaking of her own free will during their interview and that it didn’t “give proof that there is no problem” with her. Ventouillac believes Peng’s participation was part of the Chinese Olympic Committee’s orchestrated efforts to assure everyone that Peng is fine (when she very well may not be) and to deflect media attention from the issue of her safety. By doing “an interview with a big European newspaper,” Ventouillac said, “they can show: ‘Okay, there’s no problem with Peng Shuai. See?’’
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();
// ]]