ADVERTISEMENT

Russia hammers Kyiv in largest missile and drone barrage since war in Ukraine began

Published Jul 4, 2025 03:13 pm

At A Glance

  • Russia launched 550 drones and missiles across Ukraine overnight, the country's air force said. The majority were Shahed drones, while Russia used 11 missiles in the attack.
Damaged cars lie in a yard among other debris after a Russian drone and missile attacks in Kyiv, Ukraine, Friday, July 4, 2025. (AP Photo/Efrem Lukatsky)
Damaged cars lie in a yard among other debris after a Russian drone and missile attacks in Kyiv, Ukraine, Friday, July 4, 2025. (AP Photo/Efrem Lukatsky)
KYIV, Ukraine (AP) — Waves of drone and missile attacks targeted Kyiv overnight into Friday in the largest aerial attack since Russia's war in Ukraine began, injuring 23 people and inflicting damage across multiple districts of the capital.
Russia launched 550 drones and missiles across Ukraine overnight, the country's air force said. The majority were Shahed drones, while Russia used 11 missiles in the attack.
Throughout the night, Associated Press journalists in Kyiv heard the constant buzzing of drones overhead and the sound of explosions and intense machine gun fire as Ukrainian forces tried to intercept the aerial assault.
Kyiv was the primary target of the attack. At least 23 people were injured, with 14 hospitalized, according to Mayor Vitali Klitschko.
Ukrainian air defenses shot down 270 targets, including two cruise missiles. Another 208 targets were lost from radar and presumed jammed.
Russia successfully hit eight locations with nine missiles and 63 drones. Debris from intercepted drones fell across at least 33 sites.
The attack came hours after President Donald Trump held a call with Russian President Vladimir Putin and made his first public comments on his administration's decision to pause some shipments of weapons to Ukraine.
That decision affects munitions, including Patriot missiles, the AIM-7 Sparrow air-to-air missile and shorter-range Stinger missiles. They are needed to counter incoming missiles and drones, and to bring down Russian aircraft.
It's been less than a week since Russia's previous largest aerial assault of the war. Ukraine's air force reported that Russia fired 537 drones, decoys and 60 missiles in that attack.
Emergency services reported damage in at least five of the capital's 10 districts. In Solomianskyi district, a five-story residential building was partially destroyed and the roof of a seven-story building caught fire. Fires also broke out at a warehouse, a garage complex and an auto repair facility.
In Sviatoshynskyi district, a strike hit a 14-story residential building, sparking a fire. Several vehicles also caught fire nearby. Blazes were also reported at non-residential facilities.
In Shevchenkivskyi district, an eight-story building came under attack, with the first floor sustaining damage. Falling debris was recorded in Darnytskyi and Holosiivskyi districts.
Ukraine's national railway operator, Ukrzaliznytsia, said drone strikes damaged rail infrastructure in Kyiv.

Related Tags

WORLDNEWS RUSSIA-UKRAINE WAR
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.