← 返回 Siami 首頁

Astro 7.0 正式發布:Rust 編譯器、Vite 8 Rolldown、build 速度提升 15–61%

▲ 149 💬 35
Astro 7.0 正式發布:Rust 編譯器、Vite 8 Rolldown、build 速度提升 15–61%

編按:本文綜合整理自 Astro 官方部落格、Vite 8.0 公告、Netlify Changelog、GitHub Issue #17181 及 r/astrojs 社群討論,並加入 Siami 編輯部觀點與分析。

Astro 團隊在 2026 年 6 月 22 日推出 Astro 7.0,整個版本的核心主題只有一個字:速度。.astro 編譯器從 Go 完全改寫為 Rust、Markdown 與 MDX 處理走全新的 Rust pipeline(Sätteri)、Queued Rendering 從實驗標籤轉為預設渲染引擎,再加上底層 Vite 升級到 8 並整合 Rolldown(Rust 打包器)。官方公告顯示,在 MacBook Pro M4 Pro、48 GB 記憶體的基準環境下,整體 build 時間改善幅度落在 15% 到 61% 之間,部分大型網站甚至達到「快兩倍以上」。


為什麼這件事重要

Astro 自 2022 年發布 1.0 以來一直是「內容導向網站」的代表框架,主打「預設零客戶端 JS」與「Islands Architecture」,但 build 速度一直是它在大型專案上的痛點。當網站規模成長到數千篇文章、數萬個元件時,JavaScript-based 的 Markdown pipeline(unified/remark/rehype)會成為 build 時間的主要瓶頸。

Astro 7 同時在三個層面動手:

  1. 編譯器本體:.astro 編譯器從 Go 改寫為 Rust(Rust Compiler),保留向後相容性,但單獨量測顯示在 docs.astro.build 帶來約 6% 的 build 時間改善。
  2. Markdown / MDX pipeline:新推出的 Sätteri 完全取代 unified,用 pulldown-cmark(Rust CommonMark parser)與 Oxc(Rust MDX expression parser),附帶 platform-specific 二進位檔與 WASM fallback。
  3. 底層 bundler:隨 Vite 8 一併升級到 Rolldown,這是 Vite 團隊投入多年的 Rust-based bundler,官方公告顯示 benchmark 比 Rollup 快 10–30 倍、與 esbuild 同級。

Astro 7 在文件上明確指出:「最快的 build 就是不用 build 的 build」,但對於需要 ISR、SSR、動態路由的場景,這次的底層重構讓 build 階段不再卡住整個 CI/CD pipeline。

對台灣開發者社群而言,這個版本特別有意義 — Astro 已經是 許多內容網站、技術部落格與企業 marketing site 的首選,而 Siami.tw 本身就是 Astro 5.x 站點,這次升級路徑對中文內容網站的可維護性是直接相關的。


核心新功能一覽

Vite 8 與 Rolldown 整合

Vite 8 被官方稱為「多年來最重要的 Vite 發行版本」,主要變化是把打包階段從 esbuild + Rollup 的雙軌制,整合成 Rolldown 這條單一 Rust 路線。Astro 7 為既有使用者保留了相容層,自動把 esbuild 與 rollupOptions 設定轉換到 Rolldown 等價設定,多數專案零設定就能享受速度提升。

Rust Compiler 與 Sätteri Markdown Pipeline

新編譯器在文件裡強調「mostly backwards compatible」,但有兩個 breaking change 需要注意:

  • <span>Hello</span><span>World</span> 從原本渲染為 Hello World(含一個空格)改為 HelloWorld(無空格)— 因為新編譯器更嚴格遵守 HTML 規格。要保留空格需用顯式 expression container:{Hello}{ }{World}。
  • 若專案依賴 remark 或 rehype plugins,仍可透過 @astrojs/markdown-remark 切回 unified-based pipeline,但會失去 Rust pipeline 的速度優勢。

Advanced Routing(src/fetch.ts)

Astro 7 引入新的請求處理入口 src/fetch.ts,完全比照 Cloudflare Workers 的標準 fetch handler pattern,讓開發者可以:

import { astro, FetchState } from 'astro/fetch';

export default {
  fetch(request: Request) {
    const state = new FetchState(request);
    // Forward API requests to a backend service
    if (state.url.pathname.startsWith('/api/')) {
      return fetch(`https://backend.example.com${state.url.pathname}`, request);
    }
    return astro(state);
  }
};

這項改動讓 Astro 從「靜態網站產生器 + SSR 補充」正式走向 全端 framework,Hono 等輕量 router 可以直接接進來。

Route Caching(CDN Cache Providers)

Astro 7 把 route-level 快取抽象成可插拔的 CDN Cache Providers,預設支援 Cloudflare KV、Netlify Edge、Vercel ISR 等後端。這對台灣本地電商網站(高 QPS、邊緣節點部署)是直接受惠的功能。

AI Coding Agent 偵測與 Background Dev Server

當 astro dev 偵測到環境中存在 AI coding agent(如 Cursor、Claude Code、Windsurf)時,會自動把 dev server 啟動為 detached background process — 這解決了 AI agent 寫程式時 dev server 阻塞 CLI 的老問題。Netlify 工程團隊在官方 changelog 確認 Astro 7 在 Netlify 上零設定即可使用。

JSON Structured Logging

Astro dev server 輸出從原本的人類可讀文字改為結構化 JSON log,方便整合 Loki、Datadog 等 observability 工具鏈 — 對中大型團隊的 CI 除錯特別有感。


數據解讀與質疑

官方公告強調「build 提升 15% 到 61%」,這數字需要拆開來看:

情境預期改善幅度原因
小型網站(< 100 篇文章)5–15%.astro 編譯本身不是瓶頸,Vite 8 與 Sätteri 帶來的邊際效益較小
中型文件站(100–3000 篇)30–50%Markdown pipeline 從 unified 換 Sätteri 是主要受益點
大型 portal(> 3000 篇文章)50–61%,部分 > 2xRolldown 在 bundling 階段的差距最明顯
純靜態 landing page0–10%Vite 本身已經夠快,Rust 重構帶來的差距有限

已知問題:GitHub Issue #17181 報告 @astrojs/cloudflare v14 啟用 Advanced Routing 後 dev server 會 OOM(out-of-memory),原因是 export-types probe 在啟動時評估 worker entry。官方尚未釋出 patch,目前 workaround 是暫時關閉 Advanced Routing 或降低 Node heap 設定。對於計畫升級的 Cloudflare Pages 使用者,建議先在 staging 環境驗證。

Rolldown 的生態成熟度:Vite 8 + Rolldown 雖然 benchmark 漂亮,但 Rolldown 仍在積極開發階段,部分外掛(如某些 Rollup-only plugin)尚不相容。對於依賴大量客製化 bundler plugin 的企業專案,升級前應先盤點 plugin 清單。

與 Next.js 的競爭位置:Astro 7 的 Advanced Routing + AI coding agent 整合,明顯是把觸角伸向 Next.js 的全端 framework 市場。差別在於 Astro 仍維持「內容優先、零客戶端 JS 預設」的核心哲學,而 Next.js 已經走向「App Router + Server Components + RSC」重型架構。對台灣內容網站經營者而言,Astro 7 提供了比 Next.js 更輕量、比 Hugo 更靈活的選項。


升級建議與社群反應

升級指令

# 推薦(自動檢查相容性)
npx @astrojs/upgrade

# 手動
npm install astro@latest

Hacker News 主流反應

  • 正面:AI coding agent 偵測功能被認為是「超聰明的設計」,Cursor + Claude Code 寫 Astro 專案不再被 dev server 阻塞。
  • 質疑:Cloudflare v14 OOM bug 引起採用 Cloudflare Pages 的團隊擔憂,部分留言建議等 patch 後再升級。
  • 好奇:Sätteri 取代 unified 生態(remark/rehype plugin 鏈)被視為「前端基礎建設 Rust 化」的又一塊拼圖,與 SWC、Biome、Turbopack 方向一致。

r/astrojs 社群摘要

Reddit r/astrojs 上的摘要貼文獲得廣泛關注,社群普遍認為 Astro 7 是「框架成熟化的重要里程碑」,特別是 Rust 編譯器 + Sätteri 的雙軌 Rust 化讓 Astro 在大型專案的可維護性與速度都站穩一線位置。

Netlify 官方背書

Netlify 在 6/22 當天發布 changelog 確認 Astro 7 在 Netlify 上零設定可用,這對企業採用是重要的信心指標。


參考資料

如果您經營內容網站或 marketing site,並正在評估從 Next.js / Hugo 遷移,Astro 7 是值得認真考慮的時機點 — 但 Cloudflare Pages 使用者建議先觀察 OOM bug 的 patch 進度。

網友熱門留言 (5)

#1 Hacker News ▲ 87
Vite 8 + Rolldown 全面取代 esbuild 與 Rollup 是大躍進,理論上整合後單一 Rust 工具鏈的維護成本會低很多。
#2 GitHub Issue #17181 ▲ 42
@astrojs/cloudflare v14 啟用 Advanced Routing(src/fetch.ts)後 dev server 會 OOM,export-types probe 在啟動時評估 worker entry 是已知問題,要等官方 patch。
#3 Netlify 工程團隊 ▲ 56
Astro 7 在 Netlify 上零設定直接可用,AI coding agent 偵測後 dev server 自動跑背景,Cursor / Claude Code 寫 Astro 專案不再卡住 dev server。
#4 Reddit r/astrojs ▲ 38
Advanced Routing 開放 src/fetch.ts 接管請求 pipeline,Hono 直接接進來,整個架構往 Cloudflare Workers 模式靠攏。
#5 Hacker News ▲ 51
Sätteri 換掉 unified(remark/rehype)那一長串 JS 依賴,用 pulldown-cmark + Oxc,純 Rust + WASM fallback,3000 篇文章網站 build 時間砍半。