- #11624
7adb350
Thanks @bluwy! - Prevents throwing errors when checking if a component is a Solid component in runtime
-
#11234
4385bf7
Thanks @ematipico! - Adds a new function calledaddServerRenderer
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); };
-
#11144
803dd80
Thanks @ematipico! - The integration now exposes a function calledgetContainerRenderer
, 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'); });
-
#10937
7179930
Thanks @florian-lefebvre! - Adds adevtools
optionYou can enable the official Solid Devtools while working in development mode by setting
devtools: true
in yoursolid()
integration config and addingsolid-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 })], });
-
#10689
683d51a5eecafbbfbfed3910a3f1fbf0b3531b99
Thanks @ematipico! - Deprecate support for versions of Node.js older thanv18.17.1
for Node.js 18, older thanv20.0.3
for Node.js 20, and the complete Node.js v19 release line.This change is in line with Astro's Node.js support policy.
- #9355
2e4d110a876efc4ddcdeda403259317d1cbb742d
Thanks @marvin-j97! - Upgradesvite-plugin-solid
to^2.8.0
-
#6791
37021044dd4382a9b214f89b7c221bf1c93f3e7d
Thanks @patdx! - Render SolidJS components usingrenderToStringAsync
.This changes the renderer of SolidJS components from
renderToString
torenderToStringAsync
. It also injects the actual SolidJS hydration script generated bygenerateHydrationScript
, so thatSuspense
,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
orlazy
, 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
orcreateResource
, 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.
- The component uses Suspense APIs like
-
#9482
72b26daf694b213918f02d0fcbf90ab5b7ebc31f
Thanks @natemoo-re! - Improves compatability with the Qwik adapter -
#9479
1baf0b0d3cbd0564954c2366a7278794fad6726e
Thanks @sarah11918! - Updates README
- #8737
6f60da805
Thanks @ematipico! - Add provenance statement when publishing the library from CI
- #8365
a525d5db1
Thanks @ryansolid! - Fix hydration in Solid renderer
-
#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! - Newinclude
andexclude
config optionsThe Solid integration now has new
include
andexclude
config options. Use these if you want to use Solid alongside another JSX framework; include specifies files to be compiled for Solid andexclude
does the opposite. -
#8179
6011d52d3
Thanks @matthewp! - Astro 3.0 Release Candidate
- #8264
1f58a7a1b
Thanks @natemoo-re! - Automatically unmount islands whenastro:unmount
is fired
- #8264
1f58a7a1b
Thanks @natemoo-re! - Automatically unmount islands whenastro:unmount
is fired
- #8107
5b4b78245
Thanks @natemoo-re! - Updatebabel-preset-solid
dependency to^1.7.7
-
#7924
519a1c4e8
Thanks @matthewp! - Newinclude
andexclude
config optionsThe Solid integration now has new
include
andexclude
config options. Use these if you want to use Solid alongside another JSX framework; include specifies files to be compiled for Solid andexclude
does the opposite.
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.
- #8107
5b4b78245
Thanks @natemoo-re! - Updatebabel-preset-solid
dependency to^1.7.7
-
#7093
3d525efc9
Thanks @matthewp! - Prevent removal of nested slots within islandsThis 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>
-
#7101
2994bc52d
Thanks @bluwy! - Always build edge/worker runtime with Vitewebworker
SSR target -
#7104
826e02890
Thanks @bluwy! - Specify"files"
field to only publish necessary files
- #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.
- #6213
afbbc4d5b
Thanks @Princesseuh! - Updated compilation settings to disable downlevelling for Node 14
- #6104
8c80e78dd
Thanks @yasserhennawi! - Bump vitefu for peerDep warning with Vite 4
- #5782
1f92d64ea
Thanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
See changes in 2.0.0-beta.0
- #5782
1f92d64ea
Thanks @Princesseuh! - Remove support for Node 14. Minimum supported Node version is now >=16.12.0
- #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)
-
04ad44563
- > Astro v1.0 is out! Read the official announcement post.No breaking changes. This package is now officially stable and compatible with
[email protected]
!
- #3914
b48767985
Thanks @ran-dall! - Rollback supportednode@16
version. Minimum versions are now[email protected]
or[email protected]
.
- #3871
1cc5b7890
Thanks @natemoo-re! - Update supportednode
versions. Minimum versions are now[email protected]
or[email protected]
.
- #3854
b012ee55
Thanks @bholmesdev! - [astro add] Support adapters and third party packages
515e8765
Thanks @FredKSchott! - Update peerDependencies to "solid@^1.4.3"
-
#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> </> ); }
- #3505
2b35650b
Thanks @bholmesdev! - Fix newline characters in SolidJS JSX attributes (ex: multiline CSS classes)
- #3455
e9a77d86
Thanks @natemoo-re! - Update client hydration to check forssr
attribute. Requiresastro@^1.0.0-beta.36
.
- #3140
5e28b790
Thanks @hippotastic! - Fix location of SolidJS pre-hydration code
815d62f1
Thanks @FredKSchott! - no changes.
- #3003
13b782f4
Thanks @ryansolid! - Improve nested hydration with Solid
- #3003
13b782f4
Thanks @ryansolid! - Improve nested hydration with Solid
- #2889
71c12b90
Thanks @zadeviggers! - Correct package name in README. Package is@astrojs/solid-js
, not@astrojs/solid
.
- #2885
6b004363
Thanks @bholmesdev! - Add README across Astro built-in integrations
- #2847
3b621f7a
Thanks @tony-sull! - Adds keywords to the official integrations to support discoverability on Astro's Integrations site
- #2847
3b621f7a
Thanks @tony-sull! - Adds keywords to the official integrations to support discoverability on Astro's Integrations site