March 23, 2020
Bang Bang Chicken’s Identity Crisis
Article-Bang-Bang-Chicken-Recipe

Sichuan province perfected a chicken dish. The internet bludgeoned it.

What’s the best way to bang on a cut of chicken once it’s been cooked? Or, why would you bang on chicken after it’s cooked? These are questions you likely won’t explore as a student at most culinary schools, nor encounter in formal dining rooms. But you might hear the sound of a hammer against cooked meat for street food like jin tup, a Northern Thai hammered flank steak that literally translates to “smashed meat.” And if you’re making a quintessential cold chicken appetizer from China’s Sichuan province, this preparation technique has been immortalized in its easy-to-remember name.

Bang bang chicken is named for the handheld wooden club or cudgel that is pounded on cooked—mostly steamed—chicken meat (it’s alternately transliterated to English as “bon bon chicken”). This process, which can last minutes, bruises the thigh and breast meat, transforming it from whole chicken part to a soft sponge—the better to absorb the pungent chile-and-black-vinegar sauce that’s poured over it. It’s this banging step that exposes the fibers in the chicken, making easier work of pulling them into delicate shreds. From there, the shredded chicken is piled high with julienned cucumbers and fresh herbs like scallions and cilantro, then drenched with its sweet, sour, and numbing-hot sauce for a refreshing tangle of a chicken salad.

Most recipes for bang bang chicken—and there are many of them available, in books and online—make no fuss about how the chicken should be banged (or even, sometimes, whether it should be banged at all). They tend to focus more on the irresistible guai wei sauce (literally, “strange flavor” sauce), a Sichuan staple, that bang bang chicken is invariably accompanied by. Made with chile oil, black vinegar, toasted sesame paste, and tingly Sichuan peppercorn, it is certainly a worthy spotlight-stealer. But whether this dish was named by its original cooks or their adoring customers, it’s the noisy pounding step that ultimately provided its name. Which is why the absence of that act in so many recipes is striking—no pun intended.

Bang Bang Chicken

Kei Lum Chan, coauthor of China: The Cookbook, says that bang bang chicken first entered the picture around the turn of the 20th century in the small Sichuan town of Hang Yang Ba, which was known for a tasty local breed of chicken that was used in the dish. Chan, a student of Chinese food lore, says that this unique pounded chicken originated as a thrifty snack among locals before being passed along to Sichuan restaurants locally, eventually becoming a staple all over the world. It started out as a popular street food that vendors sold piece by piece, and customers would plunk a coin on the counter to order up another. “The customer could consume as many pieces as he could afford, which was very practical with the locals, particularly of the lower class,” Chan says.

Fuchsia Dunlop, a prolific cookbook author whose most recent book is The Food of Sichuan, also writes of Hang Yang Ba as the birthplace for the dish in her recipe. She adds that it was originally named for the sound of a wooden cudgel banging down on the top of a cleaver in order to cut through the cooked chicken. Once the dish caught on and began to be featured on the menus of restaurants in the capital city of Chengdu in the 1920s, she writes, the cudgels were used to whack the meat directly. In any case, today, the name “bang bang chicken” is often used interchangeably with “strange flavor chicken” for the same dish.

“Although, in Chinese restaurants in the West, the sauce is often toned down into a mild sesame sauce, so it’s not particularly ‘strange flavored’!” says Dunlop.

All that said, the story of bang bang chicken was fairly straightforward before the internet happened. If you search for “bang bang chicken” online in the United States today, you’ll be served dozens of recipes from food blogs that bear no resemblance to the “strange flavor” chicken of old-time Chengdu. Most bang bang chicken blog posts, like this one, this one, and this one, which are the first results when searching for that term in Google, feature nearly identical recipes, stories, and photos of breaded (!) and deep-fried (!!) boneless chicken chunks drizzled with a chile-tinted mayonnaise (!!!). It’s not until you get to the eighth or ninth search result that you arrive at a recipe that looks like the Sichuan dish, which is pointedly called “Bang Bang Chicken: The Authentic Sichuan Version,” from The Woks of Life, a Chinese food blog run by the Chinese-American Leung family.

“We’re honestly not sure how bang bang chicken evolved the way it did in Chinese takeout restaurants in the West,” says Sarah Leung, a member of the Leung clan, on behalf of her whole family.

All that said, the story of bang bang chicken was fairly straightforward…before the internet happened.

I reached out to the bloggers of the first dozen bang bang chicken recipe posts that came up in my search results, but only Leung got back to me. All of the others had featured the same breaded, fried chicken dish with a mayo dipping sauce. Finally, I came across a clue as to what was going on. In the 15th or so blog post I read, by Spicy Southern Kitchen, I saw this sentence: “This Bang Bang Chicken is similar to Bonefish Grill’s Bang Bang Shrimp which is one of my favorite appetizers ever.” Reading a couple more of these posts, it became evident that they were all doing a “copycat” recipe based on an appetizer from the Florida-based seafood restaurant chain Bonefish Grill, for an appetizer called Bang Bang Shrimp®—and yes, that’s a registered trademark they’ve applied to it.

Subbing in chicken for shrimp, all those bang bang chicken recipes on food blogs are based on this restaurant dish, rather than the cold Sichuan dish. But many of these blogs appear to conflate the two. Take, for example, this explainer in Slender Kitchen: “Bang Bang Chicken is a dish that originally was a typical Chinese street food. Traditionally, it consisted of deep fried chicken pieces served cold with a spicy mayo sauce. It got its name from the bang-bang of the cleaver used by the street vendors to cut the chicken into small pieces.” The blog also features a variation called Bang Bang Cauliflower.

I may be only muddying the waters further when it comes to online recipes for bang bang chicken with this variation, which makes use of warm, just-roasted chicken and its crispy skin instead of steamed chicken to start out. I love the original chicken dish, with its tender, steamed breast meat. But when you roast a chicken breast, you can add the juices that seep from the chicken to your sauce mixture, and also enjoy the crispness of its skin. The crunchy skin adds another dimension to the dish, as does the warmth of the meat when it welcomes the tangy, chile-spiked, vinegar-based sauce.

This time, banging on the chicken is entirely necessary to catch the sauce in pools before it gets swallowed up by its flesh. Plus, it’s just really fun to bang on stuff.

In Know Your Chicken, America’s favorite protein crosses roads and cultures, and often finds itself on a sheet pan. Cathy Erway, author of the upcoming Sheet Pan Chicken from TASTE and Ten Speed Press (September 2020), helps you navigate the world of chicken appreciation from the roost to the roast.

RECIPE: Bang Bang Crispy Chicken Breasts

Cathy Erway

Cathy Erway is the author of the cookbook The Food of Taiwan and the memoir The Art of Eating In. She hosts the podcasts Self Evident, exploring Asian American stories, and Eat Your Words on Heritage Radio Network, and blogs at Not Eating Out in New York.

[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>
[email_signup id="3"]
<div class="email-subscribe exp-subscribe subscribe"> <div class="alert alert-success exp-success ga-etembed-success" style="display:none;"> Great! You've signed up successfully! </div> <div class="alert alert-danger exp-error" style="display:none;"> We are experiencing an error, please try again. </div> <form name="subscribe" id="email-signup" class="email-signup-form" action="https://tastecooking.com/wp-admin/admin-ajax.php" method="POST" target="_top" data-event-assigned="false"> <fieldset class="form-group form-inline email-submit-group"> <label for="email-address" class="sr-only">Email Address</label> <input id="email-newsletter" type="email" placeholder="your@email.com" class="email-newsletter text email form-control" name="email" value=""> <button type="submit" value="Subscribe" name="subscribe" class="btn btn-primary email-submit-btn ga-etembed-success"> <i class="fa fa-envelope"></i> Subscribe </button> </fieldset> <small class="exp-small terms" style=""> By clicking Subscribe, I acknowledge that I have read and agree to the Penguin Random House <a href="http://www.penguinrandomhouse.com/privacy/" target="_blank">Privacy Policy</a> and <a href="http://www.penguinrandomhouse.com/terms/" target="_blank">Terms of Use</a> and agree to receive news and updates from TASTE and Penguin Random House. </small> <fieldset class="field-group checkboxes" style="display:none"> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50501,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook General</strong></span> </label> </div> <div class="checkbox"> <label> <input type="checkbox" name="programs[]" value="505,50502,1" class="exp-checkbox" checked="checked"> <span><strong>Tastebook Promo</strong></span> </label> </div> </fieldset><!-- /.checkboxes --> <input type="hidden" name="data_acq_code" value="TASTE_POPUP_STATIC_ONGOING" /> <input type="hidden" name="data_programs" value="50501|505,50502|505" /> <input type="hidden" name="form_id" value="3" /> <input type="hidden" name="partner" value="" /> <input type="hidden" name="action" value="crown_email_signup_submit" /> <input type="hidden" name="ref_url" value="" /> </form> </div> <script> jQuery(document).ready(function () { var unassigned_forms; setInterval( function() { //Check for unassigned forms var forms = jQuery( '.email-signup-form' ); unassigned_forms = false; forms.each( function( index ) { if ( jQuery( this ).attr( 'data-event-assigned' ) === 'false' ) { unassigned_forms = true; } }); if ( unassigned_forms ) { forms.off( 'submit' ).on( 'submit', function ( e ) { forms.attr( 'data-event-assigned', 'true' ); e.preventDefault(); // Basic email validation var email = jQuery(e.target).find('.email-newsletter').val(), valid_email = false, groupEl = jQuery(e.target).closest('.email-subscribe'); if ( !!email && typeof(email) === "string" ) { var email_array = email.split('@'); if ( email_array.length === 2 ) { if ( email_array[1].split('.').length > 1 ) { valid_email = true; } } } if ( valid_email ) { jQuery('.alert-danger').hide(); // Show loading gif groupEl.find('.email-signup-form').hide(); groupEl.find('.email-submit-loading').show(); // Populate ref_url jQuery(this).find('input[name="ref_url"]').val(window.location.href); // Generate Payload var payload = jQuery(this).serializeArray(); jQuery.ajax({ url: jQuery(this).attr('action'), type: 'POST', data: payload, success: function (data) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display success msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-success').show(); jQuery(e.target).parent().find('#downloadbtn').show(); }, fail: function (err) { // Hide loading spinner groupEl.find('.email-signup-form').show(); groupEl.find('.email-submit-loading').hide(); // Display failure msg var target = jQuery(e.target); jQuery(e.target).hide(); jQuery(e.target).parent().find('.alert-danger').show(); } }); } else { groupEl.find('.alert-danger').html('Please enter a valid email address.').show(); } }); forms.off( 'keypress' ).on( 'keypress', function ( e ) { if ( e.which === 13 ) { e.preventDefault(); jQuery( this ).submit(); } }); } }, 100); }); </script>