#11509 dfbca06
Thanks @bluwy! - Excludes hoisted scripts and styles from Astro components imported with ?url
or ?raw
#11561 904f1e5
Thanks @ArmandPhilippot! - Uses the correct pageSize default in page.size
JSDoc comment
#11571 1c3265a
Thanks @bholmesdev! - BREAKING CHANGE to the experimental Actions API only. Install the latest @astrojs/react
integration as well if you're using React 19 features.
Make .safe()
the default return value for actions. This means { data, error }
will be returned when calling an action directly. If you prefer to get the data while allowing errors to throw, chain the .orThrow()
modifier.
import { actions } from 'astro:actions';
// Before
const { data, error } = await actions.like.safe();
// After
const { data, error } = await actions.like();
// Before
const newLikes = await actions.like();
// After
const newLikes = await actions.like.orThrow();
Migration
To migrate your existing action calls:
- Remove
.safe
from existing safe action calls
- Add
.orThrow
to existing unsafe action calls
#11546 7f26de9
Thanks @ArmandPhilippot! - Remove "SSR Only" mention in Astro.redirect
inline documentation and update reference link.
#11525 8068131
Thanks @ematipico! - Fixes a case where the build was failing when experimental.actions
was enabled, an adapter was in use, and there were not actions inside the user code base.
#11574 e3f29d4
Thanks @Princesseuh! - Fixes line with the error not being properly highlighted in the error overlay
#11570 84189b6
Thanks @bholmesdev! - BREAKING CHANGE to the experimental Actions API only. Install the latest @astrojs/react
integration as well if you're using React 19 features.
Updates the Astro Actions fallback to support action={actions.name}
instead of using getActionProps().
This will submit a form to the server in zero-JS scenarios using a search parameter:
---
import { actions } from 'astro:actions';
---
<form action={actions.logOut}>
<!--output: action="?_astroAction=logOut"-->
<button>Log Out</button>
</form>
You may also construct form action URLs using string concatenation, or by using the URL()
constructor, with the an action's .queryString
property:
---
import { actions } from 'astro:actions';
const confirmationUrl = new URL('/confirmation', Astro.url);
confirmationUrl.search = actions.queryString;
---
<form method="POST" action={confirmationUrl.pathname}>
<button>Submit</button>
</form>
Migration
getActionProps()
is now deprecated. To use the new fallback pattern, remove the getActionProps()
input from your form and pass your action function to the form action
attribute:
---
import {
actions,
- getActionProps,
} from 'astro:actions';
---
+ <form method="POST" action={actions.logOut}>
- <form method="POST">
- <input {...getActionProps(actions.logOut)} />
<button>Log Out</button>
</form>
#11559 1953dbb
Thanks @bryanwood! - Allows actions to return falsy values without an error
#11553 02c85b5
Thanks @ematipico! - Fixes an issue in content collection caching, where two documents with the same contents were generating an error during the build.
#11548 602c5bf
Thanks @TheOtterlord! - Fixes astro add
for packages with only prerelease versions
#11566 0dcef3a
Thanks @Princesseuh! - Fixes DomException errors not being handled properly
#11529 504c383
Thanks @matthewp! - Fix server islands with trailingSlash: always