The Best Classic Jeans, According to Fashion Experts
ByMorgan Evans,
Cut Shop market editor and style and culture writer.
Photo-Illustration: by The Cut; Photos: Morgan Evans and Retailers
Classic jeans are a clothing essential that everyone has (or should have) in their wardrobe. What are classic jeans, exactly? You know, that pair of everyday denim that you can easily slip into no matter what your plans are. They’re often a versatile blue wash and a straight or simple cut that can be styled with just about anything. But as easy as classic denim is to wear, it’s not always easy to find. The fit can be tricky, especially for someone like myself who has a more pear-shaped frame: We’re talking smaller waist and bigger hips. Personally, I dread jean shopping, and I know I’m not the only one. I can range between a size 26 to 28 depending on the brand of jeans, cut, and fit. And while I love my curves, it can be incredibly difficult to find a good pair of jeans that fits both my waist and my hips. I’m either dealing with a waist that is too big and gapes, or a waist that is too small and legs that constrict my thighs and hips. Needless to say, it’s a struggle. So when I do find a pair of jeans that fits all my assets, it’s a cause for a serious celebration.
While I’ve had a lot of bad luck with denim over the years, believe it or not, good jeans do exist — and we’ve gathered some of our favorites here. In the last few weeks in search of the best classic jeans, I’ve tried piles of denim from top brands and received recommendations from industry experts. From cropped to straight to wide leg, here are nine pairs of classic jeans that are comfortable, versatile, and actually fit a variety of body types.
If you’re an avid Reformation shopper, then you’re probably familiar with the brand’s denim, including the popular Val jeans. The ’90s-style straight leg jeans are made of a slouchy nonstretch denim that looks as cool and effortless as it does comfortable. I fit comfortably into a size 27 with the natural waistline hitting right above the belly button and a loose (but not too loose) fit on my thighs. As I mentioned earlier, it’s hard for me to find jeans that fit both my waist and my hips, so what I love most about these jeans is the perfect hip-to-waist ratio. Another big bonus? There’s no pressure or pull when sitting down; they don’t constrict your movement, which isn’t always the case with super-straight-cut denim. So say goodbye to those “standing” jeans that are often a pain to sit in. The Val jeans are also incredibly soft, which I think contributes to the relaxed shape. Another great little detail is the raw, frayed edge of the jean, which gives them a slightly more casual look, but they’re still easy enough to dress up with a sleek pump or chic mule.
I’ll admit, when I first thought of Rag & Bone jeans I wasn’t really sure what to expect. Not every ready-to-wear brand has mastered the art of denim. (Sorry). But it wasn’t long before these became one of my favorite pairs of jeans. A chic take on the straight wide-leg style, this is some of the most lightweight and comfortable denim I’ve tried in the last few years. I was never someone who owned wide-leg denim until these, and now I’m a convert. The ecru color is also unbeatable. Unlike bright white jeans, which are hard to wear year-round (you feel like you can wear them in the summer or on a tropical vacay), this color is extremely transitional between seasons. The creamy neutral tone goes with everything and is a great option for breaking up your standard blue and black denim roster. They’re also so easy to style and look great with everything, from a tube top and heeled sandals to a crew-neck sweater with leather boots or sneakers. In terms of sizing, these jeans do run big, so size down if you’re between sizes. I took a size 27 and still have a little room in the waist area, which honestly makes for a more relaxed fit, but I could have easily done a 26 if I wanted. Another fun fact: These are my favorite travel jeans. I personally hate wearing jeans on planes and when I travel, but I recently wore these on a long-haul flight and almost every day for a full-week trip, and I never got sick of them or the fit.
For girls with curves, the struggle to find good classic jeans is real. Most are too slim, have no stretch, and just aren’t catered to women who have hips. But thank God for brands like Madewell that have engineered dynamic denims like the Curvy Straight Jeans. The best-selling ’90s-inspired jeans are a straight-leg design made to fit curvier body types with a focus on the hips and thighs. The innovative jeans give the allure of an easy, relaxed fit while effortlessly holding you in with the brand’s “Magic Pockets” design. Placed in the front and a higher rise in the back, the pockets give a curve-enhancing lift that makes your butt look phenomenal. In fact, that was one of the first things I noticed when I tried them on. In addition to the fit, the jeans are so lightweight, you feel like you really have nothing on. And while the old-school, front-crease Rondell Wash jeans have a bit of a ridged texture on the outside, the inside of the jeans is very soft and comfy — true day-to-lounge jeans! (We’re talking literal lying-on-the-sofa-level comfort.) The Cut’s shopping writer Chinea Rodriguez also agrees that these Madewell jeans are damn near perfect. “It’s rare that I find a pair of jeans that fits well but also doesn’t drag on the floor or have that weird gap at the waist, but these are perfect,” she says. “They’re not too loose throughout the legs or too tight at the waist, so they’re easy to wear every day and have just the right amount of stretch so that you can comfortably sit.”
If you’re all about high-waisted denim, then these are the jeans for you. Like both the Reformation and Madewell 90s-inspired jeans, the Pinch Waist design are AGOLDE’s take on the popular vintage style denim. The straight-leg jeans are sturdy and have little to no stretch, but are designed for a super close fit at the waist and need to be snug on the hip. But don’t worry, the faded wash denim will give over time, and will eventually perfectly molded to your figure so you feel like you’re stepping into your second skin. And while I’m normally not a fan of button-up denim (especially when you’re in a hurry, a button fly can just take too long), these buttons actually enhance the high-rise waist and really hold you in. The Cut’s deputy style editor Joanna Nikas calls the AGOLDE denim “the best fitting jeans [shes’s] ever had. “That is not an exaggeration. The best. I only had to slightly tailor the waist (but a belt worked just fine) and the ever so slight boot cut is great with loafers or even low sneakers.”
DL1961 is favorite denim brand among Cut editors. Its denim is truly soft to the touch and actually comfortable. We’re a fan of these Romie straight jeans. The versatile mid-rise jeans feature a vintage-inspired wash that is reminiscent of your favorite pair of thrifted jeans. And then there’s the unbeatable fit, which Cut fashion market editor Emma Oleck says “hits in all the right places. The mid-rise falls right below the belly button on me, which makes me feel supported, and they are also bloat-friendly. The fit around the hips is flattering, and the straight leg follows the natural silhouette of the body to outline your shape while avoiding any ‘skin gripping.’” Oleck also suggests focusing on accentuating the waist when styling.
When you ask people what their favorite jeans are, the answer is most likely Levi’s Originals. And like most people, you’ve probably owned a pair at some point of your life because it doesn’t really get more classic than Levi’s. That’s why we love these 501 ’90s jeans, a modern take on the brand’s classic Original Fit denim. Levi’s Original jeans are the brand’s signature style, which over time became the essential blueprint for classic jeans that never go out of style. These ’90s-inspired Levi’s differ from the original denim as they are more lightweight compared to the thicker, utilitarian functionality of the brand’s Original Fit jeans. But in true Levi’s fashion, these ’90s jeans are super-easy to wear, comfortable, durable, and can withstand pretty much anything — exactly how Levi Strauss intended. The jeans are a true relaxed, slouchy style that come in three different blue washes and have more of a boxy silhouette. They’re ideal if you’re going for that ultracasual, old-school look. Plus you can truly wear them over and over and they’ll pretty much last you a lifetime. If you happen to be someone looking for more colorful jean options, you can try the Original Fit denim, which comes in a plethora of colors, from an acid-wash khaki to a light lavender.
If you’re not familiar with A Day’s March, it’s time to get familiar. The Sweden-based brand, which just made its grand debut in New York City with a Soho shop, creates garments with a true reflection of Swedish style: minimalist and practical, but also elegant. And its that same stylish simplicity the brand translates into its denim pieces, like these Tabia Trousers. I am normally not one to gravitate toward dark-wash denim. I’ll either wear lighter jeans or just straight black. But I was intrigued by these after browsing through the brand’s other denim pieces and discovering the incredibly soft texture — it almost doesn’t feel like denim. Once I put them on, I fell in love not only with the feel but also the cut of the jeans. Even with flats, the wide-leg jeans were flattering (which is sometimes harder to achieve for people five-foot-five and under, like myself), and I was surprised by the overall fit. The design of the denim is high-waisted with an ultracomfortable zipper fly that feels almost like you’re wearing jeggings (remember those)? And in a total surprise, I tried on a size 26, 27, and 28 in the jeans, all to find that the 26 was the pair that fit me best. The jeans do have a bit of stretch and are said to stretch more over time, but choosing a size mostly came down to the waist fit and length of the crotch. So I’d certainly recommend doing a trial run for these because the size may just come down to personal preference in how you want the jeans to look and feel.
When one thinks of classic jeans, one is probably not thinking “cropped.” But a fun cropped denim is a wardrobe must, especially in the hotter months when longer, thicker jeans are just too much. We know finding the right cropped cut can be tough, but lo and behold, the Ayla jeans. The trendy wide-leg jeans, which have a slight barrel shape, are pretty, effortless, and super-lightweight. And like a few other jeans on the list, these also don’t feel like denim, which is honestly the goal sometimes. I’ve been a long-time fan of Citizens of Humanity and have had several different styles of its jeans over the years, but the thing I love most about these cropped jeans is how easy they are to move in with a loose enough fit. In fact, I could probably wear a size smaller because the 27 I tried still had some room in the waist, but the fit on the hips is so ideal — they’re easy and breathable, and I love how the “ballon” shape isn’t extreme. “A subtler take on the voluminous balloon jean; nothing says #IYKYK like mastering this trend,” says Revolve Clothing’s chief merchandising officer and fashion director, Divya Mathur, who calls the jeans “polished enough for the office but still cool enough for a night out.” And I concur.
If you’ve been on the hunt for a great pair of slouchy-soft jeans, look no further than these mid-rise jeans from the Gap. The baggy denim style are ultrasoft and made of a special cotton-and-Tencel blend for a completely lightweight and airy feel. Don’t let the supersoft texture fool you; these are also incredibly durable. And while we love the light indigo wash here, the straight-leg jeans come in an assortment of hues, including a darker indigo, classic black, and even a coffee-colored brown—a festive fall shade.
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,"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(1),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;
}, {"1":1,"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(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","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();
// ]]