Skip to content

Commit 8fb2864

Browse files
natemoo-redelucis
andauthored
Unflag experimental features (#5728)
* feat: unflag `--experimental-error-overlay` * feat: unflag `--experimental-prerender` * chore: add changeset * Update chilled-geese-worry.md * test: update test to use `mjs` * Update .changeset/chilled-geese-worry.md Co-authored-by: Chris Swithinbank <swithinbank@gmail.com> * Update chilled-geese-worry.md Co-authored-by: Nate Moore <nate@astro.build> Co-authored-by: Chris Swithinbank <swithinbank@gmail.com>
1 parent f6cf92b commit 8fb2864

File tree

13 files changed

+26
-122
lines changed

13 files changed

+26
-122
lines changed

.changeset/chilled-geese-worry.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
'astro': major
3+
---
4+
5+
The previously experimental features `--experimental-error-overlay` and `--experimental-prerender`, both added in v1.7.0, are now the default.
6+
7+
You'll notice that the error overlay during `astro dev` has a refreshed visual design and provides more context for your errors.
8+
9+
The `prerender` feature is now enabled by default when using `output: 'server'`. To prerender a particular page, add `export const prerender = true` to your frontmatter.
10+
11+
> **Warning**
12+
> Integration authors that previously relied on the exact structure of Astro's v1.0 build output may notice some changes to our output file structure. Please test your integrations to ensure compatability.
13+
> Users that have configured a custom `vite.build.rollupOptions.output.chunkFileNames` should ensure that their Astro project is configured as an ESM Node project. Either include `"type": "module"` in your root `package.json` file or use the `.mjs` extension for `chunkFileNames`.

packages/astro/e2e/error-cyclic.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { expect } from '@playwright/test';
22
import { testFactory, getErrorOverlayContent } from './test-utils.js';
33

44
const test = testFactory({
5-
experimental: { errorOverlay: true },
65
root: './fixtures/error-cyclic/',
76
});
87

packages/astro/e2e/error-sass.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { expect } from '@playwright/test';
22
import { testFactory, getErrorOverlayContent } from './test-utils.js';
33

44
const test = testFactory({
5-
experimental: { errorOverlay: true },
65
root: './fixtures/error-sass/',
76
});
87

packages/astro/e2e/errors.test.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { expect } from '@playwright/test';
22
import { getErrorOverlayContent, testFactory } from './test-utils.js';
33

44
const test = testFactory({
5-
experimental: { errorOverlay: true },
65
root: './fixtures/errors/',
76
});
87

packages/astro/src/@types/astro.ts

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ export interface CLIFlags {
8383
port?: number;
8484
config?: string;
8585
drafts?: boolean;
86-
experimentalErrorOverlay?: boolean;
87-
experimentalPrerender?: boolean;
8886
experimentalContentCollections?: boolean;
8987
}
9088

@@ -927,46 +925,6 @@ export interface AstroUserConfig {
927925
* These flags are not guaranteed to be stable.
928926
*/
929927
experimental?: {
930-
/**
931-
* @docs
932-
* @name experimental.errorOverlay
933-
* @type {boolean}
934-
* @default `false`
935-
* @version 1.7.0
936-
* @description
937-
* Turn on experimental support for the new error overlay component.
938-
*
939-
* To enable this feature, set `experimental.errorOverlay` to `true` in your Astro config:
940-
*
941-
* ```js
942-
* {
943-
* experimental: {
944-
* errorOverlay: true,
945-
* },
946-
* }
947-
* ```
948-
*/
949-
errorOverlay?: boolean;
950-
/**
951-
* @docs
952-
* @name experimental.prerender
953-
* @type {boolean}
954-
* @default `false`
955-
* @version 1.7.0
956-
* @description
957-
* Enable experimental support for prerendered pages when generating a server.
958-
*
959-
* To enable this feature, set `experimental.prerender` to `true` in your Astro config:
960-
*
961-
* ```js
962-
* {
963-
* experimental: {
964-
* prerender: true,
965-
* },
966-
* }
967-
* ```
968-
*/
969-
prerender?: boolean;
970928
/**
971929
* @docs
972930
* @name experimental.contentCollections

packages/astro/src/core/build/generate.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn
8181
const outFolder = ssr ? opts.buildConfig.server : getOutDirWithinCwd(opts.settings.config.outDir);
8282

8383
if (
84-
opts.settings.config.experimental.prerender &&
8584
opts.settings.config.output === 'server' &&
8685
!hasPrerenderedPages(internals)
8786
)
@@ -94,7 +93,7 @@ export async function generatePages(opts: StaticBuildOptions, internals: BuildIn
9493
const ssrEntry = await import(ssrEntryURL.toString());
9594
const builtPaths = new Set<string>();
9695

97-
if (opts.settings.config.experimental.prerender && opts.settings.config.output === 'server') {
96+
if (opts.settings.config.output === 'server') {
9897
for (const pageData of eachPrerenderedPageData(internals)) {
9998
await generatePage(opts, internals, pageData, ssrEntry, builtPaths);
10099
}

packages/astro/src/core/build/static-build.ts

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -95,32 +95,19 @@ export async function staticBuild(opts: StaticBuildOptions) {
9595
await clientBuild(opts, internals, clientInput);
9696

9797
timer.generate = performance.now();
98-
if (!settings.config.experimental.prerender) {
99-
if (settings.config.output === 'static') {
98+
switch (settings.config.output) {
99+
case 'static': {
100100
await generatePages(opts, internals);
101101
await cleanServerOutput(opts);
102-
} else {
103-
// Inject the manifest
102+
return;
103+
}
104+
case 'server': {
104105
await injectManifest(opts, internals);
105-
106+
await generatePages(opts, internals);
107+
await cleanStaticOutput(opts, internals);
106108
info(opts.logging, null, `\n${bgMagenta(black(' finalizing server assets '))}\n`);
107109
await ssrMoveAssets(opts);
108-
}
109-
} else {
110-
switch (settings.config.output) {
111-
case 'static': {
112-
await generatePages(opts, internals);
113-
await cleanServerOutput(opts);
114-
return;
115-
}
116-
case 'server': {
117-
await injectManifest(opts, internals);
118-
await generatePages(opts, internals);
119-
await cleanStaticOutput(opts, internals);
120-
info(opts.logging, null, `\n${bgMagenta(black(' finalizing server assets '))}\n`);
121-
await ssrMoveAssets(opts);
122-
return;
123-
}
110+
return;
124111
}
125112
}
126113
}
@@ -197,12 +184,7 @@ async function clientBuild(
197184
const { settings, viteConfig } = opts;
198185
const timer = performance.now();
199186
const ssr = settings.config.output === 'server';
200-
let out;
201-
if (!opts.settings.config.experimental.prerender) {
202-
out = ssr ? opts.buildConfig.client : settings.config.outDir;
203-
} else {
204-
out = ssr ? opts.buildConfig.client : getOutDirWithinCwd(settings.config.outDir);
205-
}
187+
const out = ssr ? opts.buildConfig.client : getOutDirWithinCwd(settings.config.outDir);
206188

207189
// Nothing to do if there is no client-side JS.
208190
if (!input.size) {
@@ -323,16 +305,6 @@ async function cleanStaticOutput(opts: StaticBuildOptions, internals: BuildInter
323305
})
324306
);
325307
}
326-
327-
if (!opts.settings.config.experimental.prerender) {
328-
// Clean out directly if the outDir is outside of root
329-
if (out.toString() !== opts.settings.config.outDir.toString()) {
330-
// Copy assets before cleaning directory if outside root
331-
copyFiles(out, opts.settings.config.outDir);
332-
await fs.promises.rm(out, { recursive: true });
333-
return;
334-
}
335-
}
336308
}
337309

338310
async function cleanServerOutput(opts: StaticBuildOptions) {

packages/astro/src/core/build/vite-plugin-prerender.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ export function vitePluginPrerender(
1010
name: 'astro:rollup-plugin-prerender',
1111

1212
outputOptions(outputOptions) {
13-
// No-op if `prerender` is not enabled
14-
if (!opts.settings.config.experimental.prerender) return;
15-
1613
const manualChunks = outputOptions.manualChunks || Function.prototype;
1714
outputOptions.manualChunks = function (id, api, ...args) {
1815
// Defer to user-provided `manualChunks`, if it was provided.

packages/astro/src/core/config/config.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,6 @@ export function resolveFlags(flags: Partial<Flags>): CLIFlags {
100100
host:
101101
typeof flags.host === 'string' || typeof flags.host === 'boolean' ? flags.host : undefined,
102102
drafts: typeof flags.drafts === 'boolean' ? flags.drafts : undefined,
103-
experimentalErrorOverlay:
104-
typeof flags.experimentalErrorOverlay === 'boolean'
105-
? flags.experimentalErrorOverlay
106-
: undefined,
107-
experimentalPrerender:
108-
typeof flags.experimentalPrerender === 'boolean' ? flags.experimentalPrerender : undefined,
109103
experimentalContentCollections:
110104
typeof flags.experimentalContentCollections === 'boolean'
111105
? flags.experimentalContentCollections
@@ -138,8 +132,6 @@ function mergeCLIFlags(astroConfig: AstroUserConfig, flags: CLIFlags, cmd: strin
138132
// TODO: Come back here and refactor to remove this expected error.
139133
astroConfig.server.host = flags.host;
140134
}
141-
if (flags.experimentalErrorOverlay) astroConfig.experimental.errorOverlay = true;
142-
if (flags.experimentalPrerender) astroConfig.experimental.prerender = true;
143135
if (flags.experimentalContentCollections) astroConfig.experimental.contentCollections = true;
144136
return astroConfig;
145137
}

packages/astro/src/core/config/schema.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ const ASTRO_CONFIG_DEFAULTS: AstroUserConfig & any = {
4848
astroFlavoredMarkdown: false,
4949
},
5050
experimental: {
51-
errorOverlay: false,
52-
prerender: false,
5351
contentCollections: false,
5452
},
5553
};
@@ -194,8 +192,6 @@ export const AstroConfigSchema = z.object({
194192
.default(ASTRO_CONFIG_DEFAULTS.vite),
195193
experimental: z
196194
.object({
197-
errorOverlay: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.experimental.errorOverlay),
198-
prerender: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.experimental.prerender),
199195
contentCollections: z
200196
.boolean()
201197
.optional()

0 commit comments

Comments
 (0)