Russia launches new barrage on Kyiv region – authorities

This photograph shows smoke rising during Russian missile strikes on the Ukrainian capital of Kyiv on July 6, 2026 (AFP photo)
This photograph shows smoke rising during Russian missile strikes on the Ukrainian capital of Kyiv on July 6, 2026 (AFP photo)

KYIV, Ukraine — Russia attacked Kyiv's capital region with ballistic missiles on Monday, authorities said after the foes traded overnight strikes.

The attack was the second on Kyiv and its surroundings in less than a week and came as both sides increased long-range attacks, underlining the growing reach of the conflict more than four years after Russia invaded.

An AFP journalist in Kyiv heard more than 10 explosions during a ballistic missile alert early Monday. Around 30 minutes later, AFP journalists saw several flashes in the sky as another series of blasts rang out.

Kyiv Mayor Vitali Klitschko stated that air defences were in operation and urged people to remain in shelters.

Ukraine has increasingly targeted energy facilities inside Russia and, in particular, Moscow-controlled territory in recent weeks in an effort to weaken the Kremlin's war effort.

In Crimea, governor Mikhail Razvozhayev said a Ukrainian strike near Sevastopol had temporarily cut electricity supplies.

"Following an enemy attack on energy infrastructure near Sevastopol, our city was temporarily left without electricity," Razvozhayev wrote on Telegram.

Moscow's Mayor Sergei Sobyanin said on state-backed Max that several waves of drones bound for the Russian capital were shot down by Russian air defences.

Fighting in key stronghold

Ukrainian President Volodymyr Zelensky said Sunday that troops were continuing to fight for the strategic eastern town of Kostyantynivka, a gateway to key Ukrainian positions in the Donetsk region.

Moscow had said Friday it had taken the outpost but Kyiv dismissed the announcement as a "lie", saying that it is defending the town.

Zelensky also warned Russia was preparing new large-scale attacks ahead of this week's NATO summit in Turkey, where he is expected to hold talks with US President Donald Trump on the war.

US diplomatic attempts to end the war have stalled and Trump's talks will seek to revive that effort.

Both Putin and Zelensky spoke by phone with Trump on Saturday in calls to mark the 250th anniversary of US independence.

.col-lg-12.second .opinion-widget{border-top:1px solid #D0D0D0;} #widget_1623 .opinions-title {font-size:32px;} #widget_1623 .opinions-title a{font-size:32px;} .first-author{ background-color:#ecedef; } .first-opinion-author-name{ background-color:white; width:max-content; padding:5px; }
.epaper-separator{ height: 1px; width: 100%; background-color: #D0D0D0; margin: 15px 0; }

Today’s Paper

.related-articles .article-widget-sm .article-title{font-size:16px;-webkit-line-clamp:3;} .related-articles .layout-ratio{padding-bottom:55%;}
.alert-success { color :#A3656F ; } .alert-danger { color : red ; } .footer { font-family:Myriad Pro,Arial; } .newspaper-footer{ visibility:hidden; } .socialFixOuter { position: fixed; top: 50%; margin-top: 40px; right: 0; transition: .2s; z-index: 20; height: 217px; width: 40px; } .socialFix { height: 30px; width: 30px; display: block; position: relative; cursor: pointer; background-size: 18px 18px; transition: .2s; background-position: center; background-repeat: no-repeat; border-radius: 2px; margin-top: 1px; } .socialFix:hover { width: 40px; margin-left: -10px; } .app-badge-img { height: 36px; width: auto; } @media (max-width: 768px) { .app-badge-img { height: 32px; } .app-badges { justify-content: center !important; } }
document.addEventListener("DOMContentLoaded", function () { const socialFix = document.querySelector(".socialFixOuter"); if (!socialFix) return; let firstInteraction = false; let hideTimeout = null; function checkMobileScreen() { if (window.innerWidth < 768) { socialFix.style.display = "none"; } else { socialFix.style.display = "block"; } } checkMobileScreen(); window.addEventListener("resize", checkMobileScreen); function handleFirstInteraction() { if (firstInteraction) return; if (window.innerWidth < 768) return; firstInteraction = true; socialFix.style.right = "-25px"; } socialFix.addEventListener("mouseenter", function () { if (window.innerWidth < 768) return; if (hideTimeout) clearTimeout(hideTimeout); socialFix.style.right = "0"; }); socialFix.addEventListener("mouseleave", function () { if (window.innerWidth < 768) return; if (hideTimeout) clearTimeout(hideTimeout); hideTimeout = setTimeout(() => { socialFix.style.right = "-25px"; }, 500); }); ["click", "touchstart"].forEach((evt) => { socialFix.addEventListener(evt, handleFirstInteraction); }); }); function validateEmail(email) { if (email.length > 255) return false; const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; if (!emailRegex.test(email)) return false; if (email.includes('..') || email.startsWith('.') || email.endsWith('.')) return false; return true; } function sanitizeInput(input) { input = input.replace(/<[^>]*>/g, ''); input = input.replace(/javascript:/gi, ''); input = input.replace(/on\w+\s*=/gi, ''); input = input.replace(/[<>"'&(){}[\]]/g, ''); return input.trim(); } document.addEventListener('DOMContentLoaded', function () { function showModal(message, type) { const messageContainer = document.getElementById("messageContainerFooter"); messageContainer.textContent = message; messageContainer.className = `alert alert-${type} mt-3`; messageContainer.classList.remove("d-none"); setTimeout(() => { messageContainer.classList.add("d-none"); }, 5000); } document.getElementById("emailFormFooter").addEventListener("submit", function(event) { event.preventDefault(); const emailInput = document.getElementById("emailFooter"); const email = sanitizeInput(emailInput.value.trim()); if (!validateEmail(email)) { showModal('Invalid email format', 'danger'); return; } const formData = new FormData(); formData.append('email', email); fetch('/subscribeNewsletter', { method: "POST", body: formData, headers: { "Accept": "application/json", "X-Requested-With": "XMLHttpRequest" } }) .then(response => { if (!response.ok) { showModal("Error submitting email. Try again.", 'danger'); } return response.json(); }) .then(data => { showModal(data.message, 'success'); }) .catch(error => { showModal("Error submitting email. Try again.", 'danger'); }); }); });