
General
Next.js Fixes Two Critical RCEs: Upgrade to 16.3.3 or 15.5.24
Next.js 16.3.3 and 15.5.24 fix two Critical RCEs involving Windows servers and AVIF optimization. Check exposure and upgrade production safely.
Read More7 min read

9/3/2026 ·Mizael Segovia· 9 min read ·
34 views
Our team is ready to help with any questions or issues you may have.
Contact UsAstro 7.3.1 is now available, and the full version number matters. Astro released 7.3.0 on September 3, 2026, then published 7.3.1 a few hours later to fix a bug that prevented projects using astro:assets from starting or building. If you upgrade today, install 7.3.1 or later rather than stopping on 7.3.0.
This release does not change the way developers write an Astro page. Its value is in the workflow: faster builds for sites made of many pages and modules, concurrent rendering for experimental incremental builds—including the Cloudflare adapter—multiple astro preview instances for E2E testing, and focused fixes for caching, i18n, and Server Islands.
To see whether the improvement exists outside the changelog, TERAMONT ran two reproducible local tests. In our synthetic workload, Astro 7.3.1 reduced the median clean build time for 1,200 modules from 4.55 to 3.31 seconds, a 27.3% improvement. An unchanged incremental rebuild of 3,000 routes with cacheKey dropped from 1.62 to 0.85 seconds, or 47.5%. These are results for this machine and fixture, not a universal promise; the methodology and limitations are documented below.
| Change | What it solves | Who benefits |
|---|---|---|
| Many-module build optimization | Reduces build work on sites whose pages come from many separate modules. | Documentation, large blogs, portals, and static catalogs. |
| Concurrent incremental builds | Incremental caching no longer turns off when build.concurrency is greater than 1. | Large prerenders and CI/CD pipelines. |
| Cloudflare improvements | Adds concurrent incremental rendering with @astrojs/cloudflare and reduces serialization overhead for large prerendered pages. | Astro projects deployed to Cloudflare. |
astro preview --ignore-lock | Allows multiple preview servers on different ports. | Playwright and parallel E2E suites. |
| Unified logger | Image services, cache providers, and more internal messages respect the configured logger. | Teams using structured logs or custom observability. |
| Cache, i18n, and Server Islands fixes | Avoids unsafe cache reuse and fixes resources or fallback routes that could be generated incorrectly. | Dynamic, multilingual, and content-heavy sites. |
Astro 7.2 introduced experimental incremental static builds. When a prerendered route has the same code and data as the previous build, Astro can reuse its prior output instead of generating the HTML again. This is valuable when one content collection creates thousands of pages but a release changes only a few entries.
Version 7.2 had a meaningful limitation: setting build.concurrency above 1 disabled incremental caching. Teams could preserve the cache by forcing concurrency to 1, but they lost parallel rendering. Astro 7.3 removes that tradeoff. Incremental builds now support concurrent rendering, and the official release notes explicitly include @astrojs/cloudflare.
This does not mean that concurrency: 8 is always the best setting. The optimum depends on available cores, memory, route cost, and CI limits. The improvement is that teams can now benchmark a useful concurrency value without automatically sacrificing incremental caching.

Median of five runs per scenario. Lower is better.
| Scenario | Astro 7.2.10 | Astro 7.3.1 | Difference |
|---|---|---|---|
| Clean build, 1,200 pages from 1,200 modules | 4.55 s | 3.31 s | 27.3% faster |
Unchanged rebuild, 3,000 routes with cacheKey | 1.62 s | 0.85 s | 47.5% faster |
| Median peak memory, incremental rebuild | 449,512 KB | 410,544 KB | 8.7% lower in this test |
Hardware: Intel Core i5-13450HX, 10 cores and 16 threads, with 30 GiB of RAM.
Software: Ubuntu Linux, Node.js 22.18.0, and npm 10.9.3.
Clean build: 1,200 independent .astro files, one shared component, build.concurrency: 8, with both dist and node_modules/.astro removed before every measurement.
Incremental build: one dynamic route generated 3,000 pages with stable cacheKey values. After the initial build, only dist was deleted; the cache in node_modules/.astro was retained.
Sample: five timed runs per scenario using wall-clock time and peak memory. The table reports the median to reduce outlier influence.
The fixture is synthetic. It does not fetch a remote CMS, optimize a large image library, or load project-specific plugins. The percentages should not be copied directly into a capacity plan for another site. They do show that the behavior described by Astro is visible in a controlled, repeatable environment. For a production project, test the same commit under both versions and compare medians for clean and cached builds.
For broader context, Astro's own Astro 7.0 benchmarks reported 15% to 61% build-time improvements across six real sites ranging from roughly 308 to 13,275 pages. Those numbers represent the overall move to Astro 7—including Rust, Vite 8, Rolldown, and its new renderer—and must not be credited to 7.3 alone. Our benchmark above directly compares 7.2.10 with 7.3.1.
The feature remains experimental. Enable it in the configuration, then return a cache key for each route you want Astro to reuse. Astro combines the data key with a hash of the route's module graph. If either the content or the code changes, the page is rendered again.
// astro.config.mjs
import { defineConfig } from 'astro/config';
export default defineConfig({
build: {
concurrency: 8,
},
experimental: {
incrementalBuild: true,
},
});
For a Content Collection, entry.digest is useful because it changes with the entry:
Run Astro SSR, automate builds, and configure your own reverse proxy, caching, and observability on a TERAMONT VPS.


// src/pages/blog/[slug].astro
import { getCollection, render } from 'astro:content';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map((post) => ({
params: { slug: post.id },
props: { post },
cacheKey: post.digest,
}));
}
const { post } = Astro.props;
const { Content } = await render(post);
A bad key can serve stale HTML. Include every external input that affects the output: content version, locale, variant, or update timestamp. Routes without a cacheKey are always rendered, so adoption is explicit.
Astro 7.3 adds concurrent rendering for experimental.incrementalBuild, including projects using @astrojs/cloudflare. The changelog also calls out lower serialization overhead for large prerendered pages. There are two potential gains:
a multi-core build runner can render more than one page at a time without switching off the incremental cache;
large pages require less serialization work within the Cloudflare integration.
If you set build.concurrency: 1 only as a workaround to retain caching on 7.2, Astro says that workaround can be removed. Test the change on a branch and monitor both peak memory and total time. More concurrency may speed up rendering while raising instantaneous RAM usage.
The new --ignore-lock option lets several astro preview processes run on different ports. This is useful when Playwright or another runner starts isolated environments in parallel.
npm run build
npx astro preview --port 4321
npx astro preview --port 4322 --ignore-lock
The flag bypasses the preview lock; it does not assign ports or isolate state for you. Each process still needs a free port and, where appropriate, separate environment variables or test data.
The built-in memoryCache() provider now skips responses containing Vary: Cookie or Vary: *. This is a sensible safety fix: cookie-dependent responses should not be reused indiscriminately across users, while Vary: * indicates that a reusable HTTP cache key cannot be determined normally.
Astro 7.3 also passes the runtime logger to image-service hooks and cache-provider contexts. More internal warnings and errors go through the configured logger rather than writing directly to the console. Teams forwarding structured output to Loki, CloudWatch, Kibana, or a custom collector should see fewer messages escaping their logging pipeline.
Two fixes deserve attention even though they are not the headline:
i18n fallback routes: Astro could replace a second occurrence of a locale code inside a later path segment. The official example is /en/enterprise falling back to Spanish and becoming /es/esterprise. Only the leading locale segment is replaced now.
Content Collections inside Server Islands: the release fixes missing styles, links, and scripts from collection entries rendered inside a server island.
For a multilingual site or a project combining Content Collections with Server Islands, these fixes may be a stronger reason to upgrade than raw build speed.
First confirm that the project is already on Astro 7. For the larger migration context, read our Astro 7 features and migration guide.
git checkout -b upgrade/astro-7-3-1
npx @astrojs/upgrade
npm run build
npm run preview
Then verify:
the lockfile resolved Astro 7.3.1 or later, not 7.3.0;
local and remote images processed through astro:assets;
fallback routes for every locale;
Content Collection pages rendered inside Server Islands;
one clean build and one build retaining node_modules/.astro;
peak CI memory before increasing concurrency;
E2E tests and a deployment rollback path.
| Your situation | Recommendation |
|---|---|
| You are on 7.3.0 | Move to 7.3.1 promptly if you use astro:assets; even if you do not, avoid holding a release with a known build bug. |
| You are on 7.2 with thousands of pages | Test 7.3.1 in CI and compare both clean and incremental builds. |
| You use Cloudflare and forced concurrency to 1 | Test removing the workaround, increase concurrency gradually, and monitor RAM. |
| Your site is small and stable | The urgency is lower, but the fixes remain useful. Upgrade through your normal testing cycle. |
| You are still on Astro 6 | Do not jump blindly. Review the Astro 7 breaking changes and validate integrations first. |
A faster build does not directly raise a Google ranking. Its SEO value is operational: teams can publish corrections sooner, regenerate large sites more often, and keep content current. The delivered page still needs crawlable HTML, descriptive titles, original information, useful internal links, contextual alt text, and a strong mobile experience.
Google recommends people-first content with original research, transparent methods, and trustworthy sources. That is why this analysis separates official claims from our own benchmark and publishes the test environment and its limits. Core Web Vitals and overall page experience can contribute to Search success, but they do not guarantee top placement; relevance and usefulness remain central.
Install Astro 7.3.1 or later. Astro 7.3.0 contained a bug that prevented projects using astro:assets from starting or building.
No. experimental.incrementalBuild is still experimental and must be enabled. Each reusable route also needs a cacheKey; other routes are rendered on every build.
Yes in Astro 7.3. Astro 7.2 disabled incremental caching when build.concurrency exceeded 1. Measure peak memory before raising the value in CI.
Not necessarily. That is the median from our 1,200-module fixture on one machine. Architecture, content, plugins, image work, CPU, and cache state all affect the outcome. Treat it as evidence of the improvement's direction, not a guarantee.
The release mainly targets build tooling and internal correctness. It can improve publishing workflows, but it does not automatically improve LCP, INP, or CLS for visitors. Measure those metrics in production.
Find our next articles first
Mark Teramont as a preferred source to see more of our guides and news in Google, Top Stories, and its AI experiences.

Keep exploring related guides, news, and analysis.

General
Next.js 16.3.3 and 15.5.24 fix two Critical RCEs involving Windows servers and AVIF optimization. Check exposure and upgrade production safely.
Read More7 min read
General
A technical guide to Astro 7: what it is, what’s new compared with Astro 6, how it affects performance and SEO, how to migrate, and what to review before deploying it to production on a VPS.
Read More14 min read
General
What Mojang has confirmed about Wilderness Bound, what remains unannounced, and how to plan a survival expedition without risking your community world.
Read More5 min read