91³Ô¹ÏÍø

Watch CBS News

Concern grows over whether Hollywood's film and TV industry can survive in California

Los Angeles — For years, Phil Mangano made a good living as a film and television editor in Los Angeles.

"It was just job after job after job," Mangano told CBS News. "…Very consistent work."

But after Hollywood writers and actors went on monthslong strikes in 2023, production ground to a halt. 

California lost roughly 40,000 film and tv jobs that year alone, according to the U.S. Bureau of Labor Statistics.

"When that finally settled, we were like, OK, great, things will come back," Mangano said. "And there has been no significant increase in job opportunities."

Since its peak in 2021, television production in the greater Los Angeles area has decreased by 58%, according to the nonprofit group FilmLA, which handles film permitting for the city and county of Los Angeles. The number of shoot days for television fell from 18,560 in 2021 to 7,716 in 2024.

And in the first quarter of 2025, on-location production in L.A. by 22.4% from the same period last year, per numbers from FilmLA.

"Right now, it's a triage situation. The patient is dying and you need to bring it back to life," Matthew Belloni, who covers show business for Puck News and hosts the popular podcast "The Town," told CBS News.

Belloni says Hollywood productions, and hence the jobs, have gone to other U.S. states and other countries who are willing to offer generous tax incentives.

"Some European countries that are offering up to 40% back on these productions," Belloni said. "And that's incredibly influential."

California Gov. Gavin Newsom wants to stop the bleeding by more than doubling the state's annual film and TV tax credits from $330 million to $750 million.

"Film and film making, pre and post-production, it's on life support," Newsom told reporters earlier this month. "L.A. County and L.A. city are struggling."

But is the proposal too little too late?

"The sad reality is that California has sat on this issue for 30 years," Belloni said.

Belloni is unsure if California can provide enough tax credits to offset the high cost of working in the state.

"Other jurisdictions have done their own aggressive cuts to that bureaucracy," Belloni said. "Is California willing to do that? Don't know."

In the meantime, Mangano and thousands of others in Hollywood are looking for whatever work they can find.

"I applied for a job at Costco a couple months ago," said Mangano, who adds that he cannot hold out "much longer."

"I have a little savings left," he adds. "We're hoping that'll float us for a few more months. And then we have to start making some hard decisions…Whether or not we can keep the house."

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });