惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
D
Docker
K
Kaspersky official blog
Latest news
Latest news
P
Privacy International News Feed
雷峰网
雷峰网
S
Security Affairs
博客园 - 司徒正美
博客园 - Franky
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
C
Check Point Blog
T
Tailwind CSS Blog
T
Tenable Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
L
Lohrmann on Cybersecurity
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
B
Blog
The Hacker News
The Hacker News
V
V2EX
L
LINUX DO - 最新话题
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
W
WeLiveSecurity
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Security Blog
Microsoft Security Blog
S
Securelist
V2EX - 技术
V2EX - 技术
博客园 - 叶小钗
The Cloudflare Blog
小众软件
小众软件
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Register - Security
The Register - Security

The Astro Blog

Astro 6.4 Astro 6.3 Starlight 0.39 Astro 6.2 What's new in Astro - April 2026 What's new in Astro - March 2026 Astro 6.1 CloudCannon Joins Astro as an Official CMS Partner Astro 6.0 What's new in Astro - February 2026 What's new in Astro - January 2026 Astro 5.17 Supporting the future of Astro The Astro Technology Company joins Cloudflare Astro 6 Beta What's new in Astro - December 2025 What's new in Astro - November 2025 Astro 5.16 Stainless Sponsors Astro, Launches Astro-Powered Docs Platform What's new in Astro - October 2025 Spirit of Astro: meet the winning designs What's new in Astro - September 2025 Astro 5.14 Cloudflare Donates $150,000 to Support Astro's Open Source Mission Webflow Donates $150,000 to Support Astro's Open Source Mission Mux: Our Official Video Partner Unleashing creativity: How CodeTV built a video streaming platform with Astro and Mux | Astro What's new in Astro - August 2025 Astro 5.13 What's new in Astro - July 2025 Astro 5.12 Starlight 0.35 Astro 5.11 What's new in Astro - June 2025 Live Content Collections: A Deep Dive Introducing… Astro Mart Astro Solstice Festival Astro 5.10 Astro 5.9 What's new in Astro - May 2025 Astro 5.8 What's new in Astro - April 2025 2025 Technical Steering Committee Starlight April Update Astro 5.7 Astro Agency Partner Program Astro 5.6 What's new in Astro - March 2025 Astro 5.5 What's new in Astro - February 2025 Astro 5.4 Starlight 0.32 Astro 5.3 What's new in Astro - January 2025 Astro 5.2 2024 year in review What's new in Astro - December 2024 Astro 5.1 Astro 5.0 Google IDX: Our Official Online Editor Partner What's new in Astro - November 2024 What's new in Astro - October 2024 Astro x Cloudinary SDK What's new in Astro - September 2024 Community Loaders for Astro Content Layer Astro x Hygraph: Content Loader Astro x Cloudinary: Content Loader Astro x Storyblok: Content Loader Content Layer: A Deep Dive Starlight 0.28 Astro 5.0 Beta Release The $100,000 Astro Ecosystem Fund Fall Update Goodbye Studio, Hello DB What's new in Astro - August 2024 Astro 4.15 Astro 4.14 Astro 4.13 What's new in Astro - July 2024 Astro 4.12: Server Islands Netlify: Our Official Deployment Partner What's new in Astro - June 2024 Astro 4.11 Astro Together 2024 Server Islands The Astro Content Layer Zero-JavaScript View Transitions Astro 4.10 Starlight turns one year old! What's new in Astro - May 2024 Astro 4.9 Astro 4.8 What's new in Astro - April 2024 Astro 4.7 Astro 4.6 What's new in Astro - March 2024 Migrating 500+ tests from Mocha to Node.js Astro DB: A Deep Dive The Astro Developer Portal Astro DB Astro 4.5
Astro 5.15
Matthew Phillips · 2025-10-23 · via The Astro Blog

🎃 Astro 5.15 brings automatic Netlify skew protection, granular font preload filtering, and powerful new APIs for adapters.

Explore what’s new in this release:

  • Netlify skew protection
  • New adapter APIs for customizing headers and assets
  • Granular font preload filtering
  • Other improvements

To upgrade an existing project, use the automated @astrojs/upgrade CLI tool. Alternatively, upgrade manually by running the upgrade command for your package manager:

# Recommended:

npx @astrojs/upgrade

# Manual:

npm install astro@latest

pnpm upgrade astro --latest

yarn upgrade astro --latest

Netlify skew protection

Astro 5.15 introduces automatic skew protection for Netlify deployments, ensuring your site’s client and server versions stay perfectly synchronized.

Deployment skew is a sneaky issue that occurs when users load older client assets while the server is running newer code. This can cause subtle bugs and unexpected behavior that are hard to track down. With Netlify skew protection, this is now a thing of the past.

When you deploy to Netlify, Astro automatically includes your deployment ID in all asset requests and API calls. This allows Netlify to detect and handle any version mismatches automatically—no configuration needed. Your site just works, even during rapid deployments or when users are on slow connections that might load assets across deployment boundaries.

If you’re making custom fetch requests in your application, you can also access the deployment ID directly:

const deployId = import.meta.env.DEPLOY_ID;

const response = await fetch('/api/endpoint', {

headers: {

'x-deploy-id': deployId,

},

});

Netlify skew protection works seamlessly across all of Astro’s core features, including View Transitions, Server Islands, Prefetch, and Astro Actions, giving you peace of mind across your entire site.

New adapter APIs for customizing headers and assets

Behind the scenes, Netlify’s skew protection is powered by a new set of core APIs that allow adapters to customize both headers and asset query parameters across Astro’s systems.

Astro now exposes a client configuration option in the AstroAdapter interface, allowing adapters to specify:

  • internalFetchHeaders - Custom headers that should be automatically included in all fetch calls made by Astro’s core systems (Actions, View Transitions, Server Islands, and Prefetch)
  • assetQueryParams - Query parameters that should be automatically appended to asset URLs

This gives hosting platforms the hooks they need to implement sophisticated features like skew protection without requiring manual configuration from developers.

Here’s how an adapter configures these options in the astro:config:done hook:

export default function exampleAdapter() {

return {

name: 'example-adapter',

hooks: {

'astro:config:done': async ({ setAdapter }) => {

setAdapter({

name: 'example-adapter',

serverEntrypoint: 'example-adapter/ssr.js',

client: {

internalFetchHeaders: () => {

const deployId = process.env.DEPLOY_ID;

if (deployId) {

return { 'x-deploy-id': deployId };

}

return {};

},

assetQueryParams: process.env.DEPLOY_ID

? new URLSearchParams({ deployId: process.env.DEPLOY_ID })

: undefined,

},

});

},

},

};

}

The Vercel adapter now also benefits from these new APIs. Previously, Vercel’s skew protection had some limitations and bugs that prevented it from working correctly across all of Astro’s features. With this update, the Vercel adapter now uses the same new APIs to provide reliable skew protection when the VERCEL_SKEW_PROTECTION_ENABLED environment variable is enabled, bringing it to feature parity with Netlify.

Granular font preload filtering

The experimental Fonts API now supports granular control over which font variants get preloaded. Previously, you could only choose to preload all variants of a font or none at all. Now you can specify exactly which weights, styles, and subsets should be preloaded, helping you optimize performance by downloading only what you actually use.

When using the <Font> component, you can pass a preload array to filter variants:

---

import { Font } from 'astro:assets';

---

<Font

cssVariable="--font-roboto"

preload={[

{ subset: 'latin', style: 'normal' },

{ weight: '400' },

]}

/>

This example will only preload the Latin subset in normal style and any font files with a weight of 400. For variable weight fonts (which support a range like 100900), Astro intelligently matches them against your filter criteria. Requesting weight 400 will include a variable font that covers the 100900 range, since it supports that weight.

You can filter on any combination of:

  • weight - Specific font weight (e.g., '400', '700')
  • style - Font style (e.g., 'normal', 'italic')
  • subset - Font subset (e.g., 'latin', 'cyrillic')

This gives you fine-grained control over your font loading strategy, reducing unnecessary downloads while maintaining design flexibility.

Other improvements

  • Copy button for stack traces – The error overlay now includes a copy button to easily share stack traces with LLMs and AI editors for faster debugging. Thanks to Deveesh Shetty for contributing this feature! (#14489)
  • Wrangler configuration scaffolding – The astro add CLI now automatically scaffolds wrangler.jsonc when adding Cloudflare integration. Thanks to Oliver Speir for updating our Cloudflare documentation with updated guidance! (#14564)
  • Node.js 18 deprecation – The Vercel adapter now marks Node.js 18 as deprecated in favor of newer LTS versions. Thanks to Jacob Lamb for this contribution! (#14555)

Bug fixes

As always, we’ve been working hard on fixing issues since the 5.14 release. See the changelog for all the details.

The Astro core team is:

Alexander Niebuhr , Armand Philippot , Chris Swithinbank , Emanuele Stoppa , Erika , Florian Lefebvre , Fred Schott , HiDeoo , Luiz Ferraz , Matt Kane , Matthew Phillips , Reuben Tier , Sarah Rainsberger , and Yan Thomas .

Thanks to all the other contributors who helped make Astro 5.15 possible with code and docs additions and improvements, including:

Abdelrahman Abdelfattah, Alasdair McLeay, Alvaro Saburido, aprici7y, Aron Homberg, Bartosz Kapciak, Brian Dukes, Deveesh Shetty, Dinotaurent, Edward Brunetiere, Elian, Ewelina Bierć, Eyoz, Felix Schneider, Hunter Bertoson, Jacob Lamb, James Joseph Finn, Jeffrey Yasskin, Jonas Geiler, Junseong Park, kato takeshi, Kenzo Wada, knj, liruifengv, Louis Escher, Mads Erik Forberg, Martin Trapp, Matthew Justice, Maurici Abad Gutierrez, Nin3, Olcan EBREM, Oliver Speir, Paul Sachs, paul valladares, randomguy-2650, Razon Yang, Ricardo Cuauro, Robin Bühler, Sankalpa Acharya, Sebastian Beltran, Steven, Tarik, Thomas Bonnet, Timon Jurschitsch, vrabe, Xidorn Quan, and Yorukot