0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-23 21:53:55 -05:00
astro/packages/integrations/solid/CHANGELOG.md
Houston (Bot) 83c565b36c
[ci] release (#11233)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-17 15:39:57 +02:00

22 KiB

@astrojs/solid-js

4.4.0

Minor Changes

  • #11234 4385bf7 Thanks @ematipico! - Adds a new function called addServerRenderer to the Container API. Use this function to manually store renderers inside the instance of your container.

    This new function should be preferred when using the Container API in environments like on-demand pages:

    import type { APIRoute } from 'astro';
    import { experimental_AstroContainer } from 'astro/container';
    import reactRenderer from '@astrojs/react/server.js';
    import vueRenderer from '@astrojs/vue/server.js';
    import ReactComponent from '../components/button.jsx';
    import VueComponent from '../components/button.vue';
    
    // MDX runtime is contained inside the Astro core
    import mdxRenderer from 'astro/jsx/server.js';
    
    // In case you need to import a custom renderer
    import customRenderer from '../renderers/customRenderer.js';
    
    export const GET: APIRoute = async (ctx) => {
      const container = await experimental_AstroContainer.create();
      container.addServerRenderer({ renderer: reactRenderer });
      container.addServerRenderer({ renderer: vueRenderer });
      container.addServerRenderer({ renderer: customRenderer });
      // You can pass a custom name too
      container.addServerRenderer({
        name: 'customRenderer',
        renderer: customRenderer,
      });
      const vueComponent = await container.renderToString(VueComponent);
      return await container.renderToResponse(Component);
    };
    

4.3.0

Minor Changes

  • #11144 803dd80 Thanks @ematipico! - The integration now exposes a function called getContainerRenderer, that can be used inside the Container APIs to load the relative renderer.

    import { experimental_AstroContainer as AstroContainer } from 'astro/container';
    import ReactWrapper from '../src/components/ReactWrapper.astro';
    import { loadRenderers } from 'astro:container';
    import { getContainerRenderer } from '@astrojs/react';
    
    test('ReactWrapper with react renderer', async () => {
      const renderers = await loadRenderers([getContainerRenderer()]);
      const container = await AstroContainer.create({
        renderers,
      });
      const result = await container.renderToString(ReactWrapper);
    
      expect(result).toContain('Counter');
      expect(result).toContain('Count: <!-- -->5');
    });
    

4.2.0

Minor Changes

  • #10937 7179930 Thanks @florian-lefebvre! - Adds a devtools option

    You can enable the official Solid Devtools while working in development mode by setting devtools: true in your solid() integration config and adding solid-devtools to your project dependencies:

    npm install solid-devtools
    # yarn add solid-devtools
    # pnpm add solid-devtools
    
    import { defineConfig } from 'astro/config';
    import solid from '@astrojs/solid-js';
    
    export default defineConfig({
      integrations: [solid({ devtools: true })],
    });
    

4.1.0

Minor Changes

4.0.1

Patch Changes

4.0.0

Major Changes

  • #6791 37021044dd4382a9b214f89b7c221bf1c93f3e7d Thanks @patdx! - Render SolidJS components using renderToStringAsync.

    This changes the renderer of SolidJS components from renderToString to renderToStringAsync. It also injects the actual SolidJS hydration script generated by generateHydrationScript, so that Suspense, ErrorBoundary and similar components can be hydrated correctly.

    The server render phase will now wait for Suspense boundaries to resolve instead of always rendering the Suspense fallback.

    If you use the APIs createResource or lazy, their functionalities will now be executed on the server side, not just the client side.

    This increases the flexibility of the SolidJS integration. Server-side components can now safely fetch remote data, call async Astro server functions like getImage() or load other components dynamically. Even server-only components that do not hydrate in the browser will benefit.

    It is very unlikely that a server-only component would have used the Suspense feature until now, so this should not be a breaking change for server-only components.

    This could be a breaking change for components that meet the following conditions:

    • The component uses Suspense APIs like Suspense, lazy or createResource, and
    • The component is mounted using a hydrating directive:
      • client:load
      • client:idle
      • client:visible
      • client:media

    These components will now first try to resolve the Suspense boundaries on the server side instead of the client side.

    If you do not want Suspense boundaries to be resolved on the server (for example, if you are using createResource to do an HTTP fetch that relies on a browser-side cookie), you may consider:

    • changing the template directive to client:only to skip server side rendering completely
    • use APIs like isServer or onMount() to detect server mode and render a server fallback without using Suspense.

3.0.3

Patch Changes

3.0.2

Patch Changes

3.0.1

Patch Changes

3.0.0

Major Changes

  • #8188 d0679a666 Thanks @ematipico! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.

  • #7924 519a1c4e8 Thanks @matthewp! - New include and exclude config options

    The Solid integration now has new include and exclude config options. Use these if you want to use Solid alongside another JSX framework; include specifies files to be compiled for Solid and exclude does the opposite.

  • #8179 6011d52d3 Thanks @matthewp! - Astro 3.0 Release Candidate

Patch Changes

3.0.0-rc.4

Patch Changes

3.0.0-rc.3

Major Changes

3.0.0-beta.2

Patch Changes

3.0.0-beta.1

Major Changes

  • #7924 519a1c4e8 Thanks @matthewp! - New include and exclude config options

    The Solid integration now has new include and exclude config options. Use these if you want to use Solid alongside another JSX framework; include specifies files to be compiled for Solid and exclude does the opposite.

3.0.0-beta.0

Major Changes

  • 1eae2e3f7 Thanks @Princesseuh! - Remove support for Node 16. The lowest supported version by Astro and all integrations is now v18.14.1. As a reminder, Node 16 will be deprecated on the 11th September 2023.

2.2.1

Patch Changes

2.2.0

Minor Changes

  • #7093 3d525efc9 Thanks @matthewp! - Prevent removal of nested slots within islands

    This change introduces a new flag that renderers can add called supportsAstroStaticSlot. What this does is let Astro know that the render is sending <astro-static-slot> as placeholder values for static (non-hydrated) slots which Astro will then remove.

    This change is completely backwards compatible, but fixes bugs caused by combining ssr-only and client-side framework components like so:

    <Component>
      <div>
        <Component client:load>
          <span>Nested</span>
        </Component>
      </div>
    </Component>
    

Patch Changes

2.1.1

Patch Changes

  • #6934 b6797fc85 Thanks @matthewp! - Allow Solid ecosystem packages to not need special export map configuration. By default Solid is now treated as an external package in SSR, so any other dependent packages will receive the same instance.

2.1.0

Minor Changes

2.0.2

Patch Changes

2.0.1

Patch Changes

2.0.0

Major Changes

2.0.0-beta.0

See changes in 2.0.0-beta.0

Major Changes

1.2.3

Patch Changes

  • #5345 3ae2a961b Thanks @bluwy! - Respect Vite user config for third-party packages config handling

1.2.2

Patch Changes

1.2.1

Patch Changes

1.2.0

Minor Changes

1.1.1

Patch Changes

  • #4888 2dc582ac5 Thanks @AirBorne04! - adjusting the build settings for cloudflare (reverting back to platform browser over neutral) adjusting the ssr settings for solidjs (to build for node)

1.1.0

Minor Changes

1.0.0

Major Changes

0.4.1

Patch Changes

0.4.0

Minor Changes

  • #3914 b48767985 Thanks @ran-dall! - Rollback supported node@16 version. Minimum versions are now node@14.20.0 or node@16.14.0.

0.3.1

Patch Changes

0.3.0

Minor Changes

  • #3871 1cc5b7890 Thanks @natemoo-re! - Update supported node versions. Minimum versions are now node@14.20.0 or node@16.16.0.

0.2.1

Patch Changes

0.2.0

Minor Changes

  • #3652 7373d61c Thanks @natemoo-re! - Add support for passing named slots from .astro => framework components.

    Each slot is be passed as a top-level prop. For example:

    // From .astro
    <Component>
      <h2 slot="title">Hello world!</h2>
      <h2 slot="slot-with-dash">Dash</h2>
      <div>Default</div>
    </Component>;
    
    // For .jsx
    export default function Component({ title, slotWithDash, children }) {
      return (
        <>
          <div id="title">{title}</div>
          <div id="slot-with-dash">{slotWithDash}</div>
          <div id="main">{children}</div>
        </>
      );
    }
    

0.1.4

Patch Changes

0.1.3

Patch Changes

  • #3455 e9a77d86 Thanks @natemoo-re! - Update client hydration to check for ssr attribute. Requires astro@^1.0.0-beta.36.

0.1.2

Patch Changes

0.1.1

Patch Changes

0.1.0

Minor Changes

0.0.4-beta.0

Patch Changes

0.0.3

Patch Changes

0.0.2

Patch Changes

  • #2847 3b621f7a Thanks @tony-sull! - Adds keywords to the official integrations to support discoverability on Astro's Integrations site

0.0.2-next.0

Patch Changes

  • #2847 3b621f7a Thanks @tony-sull! - Adds keywords to the official integrations to support discoverability on Astro's Integrations site