91³Ô¹ÏÍø

Watch CBS News

McDonald's Snack Wrap is returning to U.S. menus. Here's what to know.

McDonald's Snack Wrap, a gone-but-not-forgotten customer favorite, is returning to the fast-food chain's restaurants in the U.S. after a nine-year hiatus.

The popular sandwich will reappear on menus starting July 10, according to an announcement by the company on Tuesday in which Joe Erlinger, president of McDonald's USA,  simply, "It's back."

Consisting of a white-flour tortilla filled with chicken, shredded lettuce and cheese, the Snack Wrap was introduced nearly two decades ago. However, the item was removed from McDonald's menus in 2016 because it was too complicated for its kitchens to prepare. Customers have been calling for the Snack Wrap's return ever since.

In announcing the Snack Wrap's return, the company included a link to a webpage called snackwrapfiles.com, which it describes as a "content hub for the most anticipated menu item of the decade." Featuring Snack Wrap wallpaper as its background, the promotional webpage includes various large folders users can click into. A folder entitled "Fandom," for example, houses screenshots of social media posts from Snack Wrap fans expressing their love for the food and asking when it would be returned to McDonald's menus.

In one email, entitled "Snack Wraps for this Pregnant Lady," a McDonald's customer named Carli writes "my biggest craving is something I can't have. I am due July 14th, 2025. Will snack wraps be back before then? Please just give me a hint."

"I've waited years and I'm getting mildly impatient" wrote another fan called "loyal snack wrap lover." 

Another, more proactive display of loyalty included a Change.org petition to bring back the Snack Wrap. The petition garnered nearly 19,000 signatures. Bringing back the wrap was a "years-long process," Erlinger told The Associated Press.

In its revived form, the Snack Wrap will feature fried chicken and come in two flavors: Ranch and Spicy. This is a departure from the original version, which included a choice of grilled or fried chicken and sauce options like honey mustard and sweet chili. The simplified recipe is to ensure faster service, according to the company. The company has not revealed how much the Snack Wrap will cost, only that prices will vary depending on location.

McDonald's also posted on the Snack Wrap's on its X account, thanking ardent fans for resurrecting the long-lost menu item. Breaking the fourth wall, the social media manager behind the McDonald's account  followers directly, reminding them that "social media managers don't control the menu," but rather its the fans who are to thank for the Snack Wrap's revival. Stated the post, "you created a movement. a movement so powerful that you finally won." 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });