Releases: solidjs/solid-start
Release list
@solidjs/start@2.0.3
Patch Changes
- 91fc972: Prefix production entry scripts, stylesheets, modulepreloads, and serialized manifest paths with Vite's configured base URL.
@solidjs/start@2.0.2
@solidjs/start@2.0.1
Patch Changes
- fd5e2ae: Delegate
vite previewto Nitro when its preview plugin is active, including for static builds that intentionally have no server entry.
@solidjs/start@2.0.0
Highlights
SolidStart v2 is now stable. This release replaces Vinxi with direct use of Vite’s Environment API, providing Solid v1 applications with a simpler Vite 8 and Rolldown-powered foundation, improved compatibility with the Vite ecosystem, and direct integration with deployment plugins.
SolidStart v2 requires Node.js 24 or newer and Vite 8. Most SolidStart v1 applications can upgrade by moving their framework configuration from app.config.ts to vite.config.ts and following the migration guide.
@solidjs/start@2.0.0-rc.10
Minor Changes
-
3f2b7a7: The file filter logic used for CSS crawling in development can now be configured with the vite plugin option
css.filteranalog toserverFunctions.filter:solidStart({ css: { filter: { // Exclude all node_modules except "my-dependency" with a flat node_modules layout exclude: "node_modules/!(my-dependency)/**/*", }, }, });
Patch Changes
@solidjs/start@2.0.0-rc.9
Patch Changes
- 8eef552: Remove type-only import remnants from client server-function transforms so they do not retain server-only dependency chains.
@solidjs/start@2.0.0-rc.8
Patch Changes
- 3573985: Await asynchronous
serverFunctions.onErrorhandlers before serializing server function errors.
Preserve the original error if the handler throws or rejects.
@solidjs/start@2.0.0-rc.7
@solidjs/start@2.0.0-rc.6
Minor Changes
- bac24b2: Add a
serverFunctions.onErroroption naming a module that observes and replaces what a server function threw, before it is serialized into the response
Patch Changes
- 27c2877: Remove leftover debug
console.logcalls from the server functions inspector, which logged on every server function request in dev. - f15724b: Declare
@solidjs/routeras an optional peer dependency constrained to>=0.16.0 <2.0.0-0. Router v2 is expected to target Solid v2, so installing it alongside@solidjs/startv2 now surfaces a peer warning instead of silently producing an incompatible pairing. The peer is marked optional, so apps that do not use the router are unaffected. - 5c8612f: Apply cookies set on a returned or thrown response during single flight mutations.
redirect(to, { headers: { "Set-Cookie": ... } })previously only reached the browser: the single flight re-render of the redirect target still ran with the old request cookies, so queries reading that cookie saw stale values. Those cookies are now merged into the request the re-render sees, matching what a browser round trip would have sent. - 83122ed: Reject server function calls when the response is a 5xx without an X-Error header, instead of resolving with the parsed error body
@solidjs/start@2.0.0-rc.5
Minor Changes
-
4c803e5: Add
serialization.pluginsto configure custom Seroval plugins for server functions.Values Seroval has no built-in support for (Mongo's
ObjectId, Prisma'sDecimal,Temporal, and other custom classes) previously threw when returned from or passed to a server function. Point the new option at a module whose default export is an array of plugins:// vite.config.ts solidStart({ serialization: { plugins: "src/seroval-plugins.ts", }, });
// src/seroval-plugins.ts import { createPlugin } from "@solidjs/start/serialization";
The module is bundled into both the client and the server so both ends of a server function agree on the format, so it must not import server-only code. SolidStart's built-in plugins keep precedence. Only server-function and action payloads are affected; the SSR hydration payload is serialized by
solid-js/web.Also adds a
@solidjs/start/serializationentrypoint re-exporting Seroval'screatePlugin,OpaqueReference, and plugin types, so plugin authors stay on the same Seroval version SolidStart serializes with.
Patch Changes
-
e117d91: Route module ids now end in the source extension, so ecosystem plugins apply inside
src/routes.Route files are imported through an id carrying the picked exports in the query (
routes/api.ts?pick=GET), which left the id ending in the export name. Plugins whose filter is anchored on the file extension (/\.[cm]?[jt]sx?$/, the default forunplugin-auto-import,unplugin-macrosand others) silently skipped every route file. The id now ends with alang.<ext>marker, the same convention Vue SFCs use for?vue&type=script&lang.ts. Chunk filenames are unchanged. -
d8f1ea8: Apply the configured
nonceto the two script tags that were still missing it, so a strictscript-srcCSP no longer needsunsafe-inline:- The client-side redirect that streaming mode emits after the shell has already flushed (
<script>window.location=...</script>) now carries the nonce. - The SPA entry script tag now carries the nonce, matching the SSR entry script.
- The client-side redirect that streaming mode emits after the shell has already flushed (
-
27fca88: Fix actions returning
json()orreload()leaving no-JS form submissions stranded on the/_serverendpoint. These responses carry a value rather than a destination, so the redirect issued for progressive-enhancement submissions had noLocationheader. It now falls back to the submitting page, and the response value is unwrapped into the flash cookie souseSubmission().resultmatches the JS path. -
75debc3: Scope the built-in
~alias to the app package, so files in other workspace packages can map~to their own root through an importer-aware plugin such asvite-tsconfig-paths. In stylesheets and asset URLs (CSS@import,url(),new URL(..., import.meta.url))~still always means the app root, since Vite resolves those without running plugins.