Doctor weighs in on outdoor exercise amid wildfire smoke
Updated: 11:32 PM EDT Jul 15, 2026
Editorial Standards ⓘ
Doctor weighs in on outdoor exercise amid wildfire smoke
Updated: 11:32 PM EDT Jul 15, 2026
Editorial Standards ⓘ
A yellow haze blanketed the skies in parts of the Granite State Wednesday. The New Hampshire Dept. of Environmental Services issued an Orange Alert for Thursday, meaning the air quality is expected to be unhealthy for sensitive groups.Dr. Shweta Gupta, a pulmonologist and critical care medicine physician at Elliot Hospital in Manchester, said sensitive groups include children, older adults, anyone with underlying conditions like asthma, and people exerting themselves outside.”When the air quality is unhealthy during these wildfires, generally the ambient particulate matter and toxic gases, there amount in the atmosphere is very high,” Dr. Gupta said.”If you’re doing physical activity outside and you’re exposed to those high levels of pollution from the wildfires, you may notice that it’s harder to do the normal exercise that you would be able to do if the environment was absolutely fine,” she added.Shortness of breath, dehydration, muscle fatigue and exhaustion are all symptoms you could experience if you’re exercising outdoors.>> Download the free WMUR app to get updates on the go <<News 9 spoke to Lindsey Schumacher, a three-sport athlete in Concord who also has Asthma. She said she takes extra precautions when the air quality turns poor.”Typically, I don’t take my inhaler unless I’m out here doing active stuff or like I’m really exhausted. So, I’ll probably wake up and take it before I go exercise instead of taking it during,” Schumacher said.McCullough Laliberte and Courtney Jacques looked at the air quality Wednesday before making their running plans.”We debated it this morning but came out at 3pm to see if it was still smoggy, and it wasn’t in Manchester. So, we decided to run,” Jacques said.McCullough and Courtney both added they’d switch their exercise routines to indoors on Thursday.But Dr. Gupta said the best piece of advice: don’t exercise outside at all.”We don’t recommend doing physical activity unless absolutely necessary,” said Dr. Gupta.”So, if somebody is really planning to exercise, we would recommend them exercising indoors as much as possible,” she said.Dr. Gupta recommends wearing a mask like an N-95 if you absolutely have to be outside. She also recommends only spending short periods of time outside early in the morning and making sure you stay hydrated.
CONCORD, N.H. —
A yellow haze blanketed the skies in parts of the Granite State Wednesday. The New Hampshire Dept. of Environmental Services issued an Orange Alert for Thursday, meaning the air quality is expected to be unhealthy for sensitive groups
Dr. Shweta Gupta, a pulmonologist and critical care medicine physician at Elliot Hospital in Manchester, said sensitive groups include children, older adults, anyone with underlying conditions like asthma, and people exerting themselves outside
“When the air quality is unhealthy during these wildfires, generally the ambient particulate matter and toxic gases, there amount in the atmosphere is very high,” Dr. Gupta said
“If you’re doing physical activity outside and you’re exposed to those high levels of pollution from the wildfires, you may notice that it’s harder to do the normal exercise that you would be able to do if the environment was absolutely fine,” she added
Shortness of breath, dehydration, muscle fatigue and exhaustion are all symptoms you could experience if you’re exercising outdoors
>>Download the free WMUR app to get updates on the go<<
News 9 spoke to Lindsey Schumacher, a three-sport athlete in Concord who also has Asthma. She said she takes extra precautions when the air quality turns poor
“Typically, I don’t take my inhaler unless I’m out here doing active stuff or like I’m really exhausted. So, I’ll probably wake up and take it before I go exercise instead of taking it during,” Schumacher said
McCullough Laliberte and Courtney Jacques looked at the air quality Wednesday before making their running plans
“We debated it this morning but came out at 3pm to see if it was still smoggy, and it wasn’t in Manchester. So, we decided to run,” Jacques said
McCullough and Courtney both added they’d switch their exercise routines to indoors on Thursday
But Dr. Gupta said the best piece of advice: don’t exercise outside at all
“We don’t recommend doing physical activity unless absolutely necessary,” said Dr. Gupta
“So, if somebody is really planning to exercise, we would recommend them exercising indoors as much as possible,” she said
Dr. Gupta recommends wearing a mask like an N-95 if you absolutely have to be outside
She also recommends only spending short periods of time outside early in the morning and making sure you stay hydrated
Weather Information
‘
+ ‘
‘;
var gptLayer = window.gptLayer;
if (gptLayer && typeof gptLayer.insertAds === ‘function’) {
var slotsBefore = gptLayer.adSlots ? gptLayer.adSlots.length : 0;
gptLayer.insertAds();
if ((gptLayer.adSlots ? gptLayer.adSlots.length : 0) > slotsBefore) {
if (typeof gptLayer.callAdSlots === ‘function’) {
gptLayer.callAdSlots(‘imm’);
}
}
}
}
}
function closeRadarOverlay(containerId) {
var overlay = document.getElementById(containerId + ‘-radar-overlay’);
if (!overlay) return;
overlay.classList.remove(‘is-open’);
overlay.setAttribute(‘aria-hidden’, ‘true’);
document.body.classList.remove(‘weather-radar-overlay-active’);
var adSlot = overlay.querySelector(‘.weather-radar-overlay__ad-slot’);
if (adSlot) {
adSlot.innerHTML = ”;
}
}
function trackRadarOverlayInteraction(containerId) {
var now = Date.now();
var key = ‘radar_overlay_last_interaction_’ + containerId;
if (!window[key] || now – window[key] > 10000) {
window[key] = now;
dispatchWeatherGA4Event(‘radar_overlayinteraction’, ‘interaction’, containerId);
}
}
function isMobileOrTabletViewport(breakpoint = 980) {
const w = window.innerWidth || document.documentElement.clientWidth || 0;
return w < breakpoint;
}
function removeUnusedWeatherModule() {
const desktopClass = ‘sidelist-weather’;
const mobileClass = ‘mobile-weather’;
if (isMobileOrTabletViewport()) {
console.log(‘[WEATHER-BOX] Mobile/tablet viewport detected, removing desktop weather module if it exists’);
const desktopModule = document.querySelector(‘.’ + desktopClass);
if (desktopModule) {
console.log(‘[WEATHER-BOX] Removing desktop weather module’);
desktopModule.remove();
}
} else {
console.log(‘[WEATHER-BOX] Desktop viewport detected, removing mobile weather module if it exists’);
const mobileModule = document.querySelector(‘.’ + mobileClass);
if (mobileModule) {
console.log(‘[WEATHER-BOX] Removing mobile weather module’);
mobileModule.remove();
}
}
}
document.addEventListener(‘DOMContentLoaded’, function() {
removeUnusedWeatherModule();
function generateForecastItem(data) {
var ariaLabel = data.timeLabel + ‘, ‘ + data.primaryTemp + ‘ degrees, ‘ +
data.secondaryInfo + ‘ percent chance of precipitation’;
return `
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=’ + Date.now();
}
}
function initializeWeatherBox(container) {
var containerId = container.getAttribute(‘data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);
container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
var location = { zip: window.DEFAULT_ZIPCODE };
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className = ‘weather-watch-header has-alerts’;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, ‘/alerts’);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, ‘/alerts’);”);
}
} else {
weatherWatchHeader.className = ‘weather-watch-header’;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className = ‘weather-grid–current-icon weather-current-icon icon icon-weather-‘ + weatherData.current.icon_name;
}
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
updateWeatherBackground(weatherData.current.icon_name);
}
}
function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage = ‘url(‘ + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html = ”;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
for (var i = 0; i < maxHours; i++) {
var hour = weatherData.hourly[i];
html += generateForecastItem({
timeLabel: hour.hour_display,
iconName: hour.icon_name,
primaryTemp: hour.temp_f,
secondaryInfo: hour.precip_chance + ‘%’
});
}
hourlyContainer.innerHTML = html;
}
}
if (weatherData.daily) {
var dailyContainer = container.querySelector(‘.weather-daily-forecast’);
if (dailyContainer) {
var html = ”;
var maxDays = Math.min(visibleItems, weatherData.daily.length);
for (var i = 0; i < maxDays; i++) {
var day = weatherData.daily[i];
var dayName = getShortDayName(day.day);
html += generateForecastItem({
timeLabel: dayName,
iconName: day.icon_name,
primaryTemp: day.high_f,
secondaryInfo: day.precip_chance + ‘%’
});
}
dailyContainer.innerHTML = html;
}
}
}
function getShortDayName(dayName) {
switch (dayName) {
case ‘Today’:
return ‘Today’;
case ‘Tomorrow’:
return ‘Tmrw’;
case ‘Sunday’:
return ‘Sun’;
case ‘Monday’:
return ‘Mon’;
case ‘Tuesday’:
return ‘Tue’;
case ‘Wednesday’:
return ‘Wed’;
case ‘Thursday’:
return ‘Thu’;
case ‘Friday’:
return ‘Fri’;
case ‘Saturday’:
return ‘Sat’;
default:
return dayName;
}
}
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
var isActive = tab.classList.contains(‘open’);
tab.setAttribute(‘tabindex’, ‘0’); // Both tabs focusable for VoiceOver
tab.setAttribute(‘role’, ‘tab’);
tab.setAttribute(‘aria-selected’, isActive);
tab.addEventListener(‘keydown’, function(e) {
var tabs = Array.from(container.querySelectorAll(‘[data-tab-id]’));
var currentIndex = tabs.indexOf(this);
switch(e.key) {
case ‘ArrowLeft’:
e.preventDefault();
var prevIndex = currentIndex > 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex < tabs.length – 1 ? currentIndex + 1 : 0;
tabs[nextIndex].focus();
break;
case ‘Enter’:
case ‘ ‘:
e.preventDefault();
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
break;
}
});
tab.onclick = function() {
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
return false;
};
});
loadWeatherData();
window.addEventListener(‘pageshow’, function(event) {
if (event.persisted) {
// Fix for weather radar iframe appearing gray after browser back/forward navigation
// When user navigates back, the page loads from browser cache but the iframe
// content doesn’t restore properly, showing a gray screen instead of the radar map
// This forces a fresh reload of the iframe by adding a timestamp parameter
setTimeout(function() {
refreshWeatherIframe(containerId);
}, 300);
}
});
}
document.querySelectorAll(‘.weather-sidebar’).forEach(function(weatherBox) {
initializeWeatherBox(weatherBox);
});
});
![]()

Make WMUR a preferred source on Google


