Astro: [email protected] Release

Release date:
August 2, 2024
Previous version:
[email protected] (released August 1, 2024)
Magnitude:
0 Diff Delta
Contributors:
0 total committers
Data confidence:
Commits:

Top Contributors in [email protected]

Could not determine top contributors for this release.

Directory Browser for [email protected]

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

Patch Changes

  • #11584 a65ffe3 Thanks @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 */
        }
    }
    

    Migration

    If you call actions directly from server code, update function calls to use the Astro.callAction() wrapper for pages and context.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_compat or nodejs_als flags for Actions, we recommend removing these:

    compatibility_flags = [
    - "nodejs_compat",
    - "nodejs_als"
    ]
    

    You can also remove node:async_hooks from the vite.ssr.external option in your astro.config file:

    // astro.config.mjs
    import { defineConfig } from 'astro/config';
    
    export default defineConfig({
    - vite: {
    -   ssr: {
    -     external: ["node:async_hooks"]
    -   }
    - }
    })