91³Ô¹ÏÍø

Watch CBS News

How 2026 Philadelphia Flower Show will pay homage to America's 250th birthday

America's oldest and largest flower show is back this weekend. The 2026 Philadelphia Flower Show is paying homage to America's 250th birthday through the theme "."

Philadelphia's flower show started nearly 200 years ago in 1829. Today, it's the nation's oldest and longest-running show, rooted in tradition.

Leslie Caneda and David Brink are part of the team at Robertson's Flowers building this year's exhibit for the show at their headquarters in Wyndmoor. The flower show is all that is on their minds right now.

"We've been in here working tirelessly for weeks," Caneda said, "but if we had more time, we'd take it."

2026-flower-show.jpg
CBS News Philadelphia

Robertson's Flowers president Taylor Ferry is a fifth-generation running the family-owned business. His great-great-grandfather started it all on Germantown Avenue in 1927.

"Pretty quickly, we went to our family history and the company history," Ferry said. "We turn 100 years old next year. We want people to take a trip down memory lane and do that with us through our windows."

Ferry's great-great-grandfather also started the tradition of participating in the flower show more than a century ago.

A medallion, from that first show, is etched "1901."

flower-show.jpg
CBS News Philadelphia

"Trees have been in the show for more than 100 years," Pennsylvania Horticultural Society President Matt Rader said. "The flower show is new every year, so we've been doing it in some way for almost 200 years."

The first show at 7th and Chestnut streets came two years after the creation of PHS in June 1829. Over the years, the event has grown, themes have changed, but tradition remains.

"Part of our national story is people coming together to study, to learn, to do things they care about," Rader said. "It's something really unique to our country, and the creation of PHS is that story, and the creation of the flower show is that story."

It's a fact rooted in the why behind Robertson's drive to participate year after year.

"It's amazing to even feel like a part of it," Caneda said. "This is America. We're innovative, creative and we work together to build and create beautiful things and to be a part of that is huge."

The Philadelphia Flower Show is a fundraiser for PHS. The money raised during the event goes right back into Philadelphia neighborhoods through beautification projects, educational events and more.

"Rooted" starts on Saturday and runs through March 8.

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });