🐞 Patch Changes
-
#11584
a65ffe3Thanks @bholmesdev! - Removes async local storage dependency from Astro Actions. This allows Actions to run in Cloudflare and Stackblitz without opt-in flags or other configuration.This also introduces a new convention for calling actions from server code. Instead of calling actions directly, you must wrap function calls with the new
Astro.callAction()utility.callAction()is meant to trigger an action from server code.getActionResult()usage with form submissions remains unchanged.---import { actions } from 'astro:actions';const result = await Astro.callAction(actions.searchPosts, {searchTerm: Astro.url.searchParams.get('search'),});---{result.data &&{/* render the results */}}If you call actions directly from server code, update function calls to use the
Astro.callAction()wrapper for pages andcontext.callAction()for endpoints:---import { actions } from 'astro:actions';const result = await actions.searchPosts({ searchTerm: 'test' });const result = await Astro.callAction(actions.searchPosts, { searchTerm: 'test' });---If you deploy with Cloudflare and added the
nodejs_compatornodejs_alsflags for Actions, we recommend removing these:compatibility_flags = ["nodejs_compat","nodejs_als"]You can also remove
node:async_hooksfrom thevite.ssr.externaloption in yourastro.configfile:astro.config.mjs import { defineConfig } from 'astro/config';export default defineConfig({vite: {ssr: {external: ["node:async_hooks"]}}})