New York’s Way-Too-Cute (But Not Too Sweet) Asian Pastries
Cream-filled croissants, towers of crêpes, and cakes that are as light as air.
ByE. Alex Jung,
a features writer at New York and Vulture
Pastries from Lysée, Lady Wong, and 99.
Photo: Hugo Yu
Pastries from Lysée, Lady Wong, and 99.
Photo: Hugo Yu
When I first came to New York, my mother and I went to Koryodang, a sharply lit French-ish Korean bakery right in the thick of Koreatown on 32nd Street. It was a sleeker, more modern, more New York version of the cafés we would go to in the then-nascent Korean pockets around Atlanta in the ’90s. The pastries often looked like impressions of their European counterparts: a Danish wrapped around a hot dog; anpan, sweet buns filled with red bean; and a personal favorite called mammoth bread, an oblong disc sandwiching a layer of fresh cream with a crust of streusel on top. The cakes registered a similar cognitive dissonance for an Entenmann’s kid: lightweight, barely-there sponges with an airy cream. They were, in the highest compliment, not too sweet.
Like K-pop, Korean bakeries symbolize the ironic instability of authenticity: Patisserie first arrived in Korea by way of Japan by way of Europe, where it then adapted to the national palate before heading back west. Café culture, along with fine dining, has become one part of a growing portfolio of Korean soft power abroad, and the funniest example of this globalized circuit of taste is when Paris Baguette, the corporate Korean megachain, opened its first location in Paris in 2014, much to the chagrin of locals, right down the street from the Louvre.
Koryodang was part of a small but growing wave of Asian bakeries: Taipan, Fay Da, Lady M, HARBS, and corporate megachains like Paris Baguette and Tous les Jours — the latter of which would later take over Koryodang’s space on 32nd Street. Together, they established the vernacular of Asian cakes in New York. Black sesame, mango, and green tea are mainstays, with ube, pandan, aloe, calamansi, and durian expanding the flavor palette. The cakes are often more cream than sponge, which are already gossamery in their constitution. Instead of buttercream frosting, Asian desserts tend toward whipped cream, mousses, and jellies. The cakes are delicate and precise, fancy and fanciful with an aesthetic that is so cute they activate an internal squeal similar to seeing a miniature pony or Totoro: so kawaiiiii.
In the vein of so-cute-you-could-die is Gong Gan, a “K-dessert bar” in Flushing that has enchanted Asian church girls and the influencer crowd with its mossy psychedelic-mushroom forests on top of their black-tea cheesecake. On a Saturday afternoon, I ventured out with a group of friends to its white, cavelike space in Queens. There was a long line and sheer pandemonium. None of the kaleidoscopic fungi cakes were available (and it’s unclear how to get one in the first place), but there was one we could admire sitting on a white pedestal in the middle of the store. We got some of the croissants, which are still TikTok-friendly with fresh cream puffing out like a cloudburst. They tasted like nothing — not sweet, not savory — as if they were generated by dessert AI. We watched a table of women take photos of their pastries with a ring light. They never took a bite while we were there, as if they knew what the point of this endeavor was.
Still, there’s no need to sacrifice taste for beauty. Take Lysée, a Korean café in Flatiron by Eunji Lee who describes her work as “edible art.” (In a seemingly total act of seriousness, a second-floor space labeled “the gallery” is a display of its cakes and pastries.) I met up with my friend Isabel for afternoon tea, where I got an earthy burdock tea and the most photogenic pastry of 2023, a cake where corn mousse has been sculpted into yellow kernels with light brushstrokes of white chocolate tinted green acting as the husk. They have forgone the sponge entirely; instead, a sliver of sablé undergirds what is essentially a mound of cream with the flavor of roasted-corn-silk tea. Its namesake cake, the Lysée, was more satisfying, with layers of a toasted brown-rice mousse, salty praline, and a crunchy pecan and walnut cookie. The cakes were surprisingly challenging, as though the pleasure of sugar were too obvious. Maybe the best was the mille-feuille, a log cabin of puff pastry, vanilla cream, and caramel — sweet and simple.
I also made a point to check in on some members of Asian patisserie’s older wave: The signature mille-crêpe cake with “no less than 20 layers” at Lady M is still a hit; a slight caramel tan hides quiveringly thin crêpes that are visually distinct and yet melt under the pressure of a fork. HARBS in Chelsea might secretly be one of the best places to quietly savor a book alongside a slice of sakura cake and a pot of tea. Still excellent are two of my standby Japanese shops: Burrow in Dumbo and Patisserie Tomoko in Williamsburg. Tomoko is more readily accessible, offering a $28 three-course dessert menu alongside a takeout counter at its horseshoe-shaped bar. The green-tea tiramisu cake is bright and verdant, and the yuzu mousse tastes like a citrus cloud. Alternatively, Burrow is more idiosyncratic and stubborn: Since the pandemic, it’s reduced its schedule to four hours a day (“10 to 2ish”) for four days of the week (no weekends!) in a tremendous act of boundary-setting. It’s impossible to know what it’ll offer on any given day, and yet despite, or perhaps because of its elusiveness, it inspires a keen devotion. Whatever you get will be good — maybe a sweet potato cake with white-chocolate mousse one day or a pear and chestnut cake with translucent squares of pear jelly on another.
I’m also partial to Lady Wong, a patisserie that specializes in Southeast Asian pastries by Malaysian-born husband-and-wife duo Seleste Tan and Mogan Anthony, who lived in Singapore before moving to New York. They’re rightly known for their kuih, rectangular slices of cake in a rainbow of colors and flavors of pandan, coconut, sticky rice, and palm sugar. What they do with pandan — which they import from Thailand and which became a personal obsession of mine ever since I first had it at the Chinatown Ice Cream Factory — makes my blood sugar flutter. The pandan royaltine cake is as if light green were a flavor: a soft celadon-hued mousse with a crisp pistachio feuilletine. But for an even more acute pandan-and-coconut experience, their onde kaya roll cake sends me over the edge.
One of the most exciting afternoons, though, was during a weekend pop-up service at Rhodora with Mina Park, who runs a baking project called 99 that has acquired a passionate following, particularly after she worked with Ha’s Đặc Biệt. (She’ll be doing a longer run soon — a six-month residency starting in July — that she calls a trial run for her “fantasy café.”) A line started to form before the 11 a.m. opening for the strawberry-milk mousse cake, banana-milk purin, mocha-chestnut meringue, and milk-tea profiteroles dotted with tapioca pearls. Her desserts play in the sandbox of Asian American childhood: large sheet cakes made of fresh cream rather than the traditional buttercream; star-shaped mousse cakes with Concord grape jelly and peeled Kyoho grapes to approximate the flavor and feel of Hi-Chew. They’re high on nostalgia, neat as a pin, and just sweet enough.
This post has been corrected to show that the owners of Lady Wong were born in Malaysia, not Singapore.
`;
// 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(4),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(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 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,"4":4,"12":12,"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();
// ]]