Skip to content

Releases: solidjs/solid-start

@solidjs/start@2.0.3

Choose a tag to compare

@github-actions github-actions released this 20 Aug 21:22
22f07b8

Patch Changes

  • 91fc972: Prefix production entry scripts, stylesheets, modulepreloads, and serialized manifest paths with Vite's configured base URL.

@solidjs/start@2.0.2

Choose a tag to compare

@github-actions github-actions released this 19 Aug 12:23
97fee2a

Patch Changes

  • e21fadf: fix potentially incomplete first chunk for chunk readers
  • d78288f: Declare an explicit Content-Type: text/plain; charset=utf-8 on seroval-stream server function responses (success and error paths) so intermediaries cannot content-sniff a type onto them

@solidjs/start@2.0.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 10:58
af827ad

Patch Changes

  • fd5e2ae: Delegate vite preview to Nitro when its preview plugin is active, including for static builds that intentionally have no server entry.

@solidjs/start@2.0.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 19:47
e0edaa1

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Aug 13:59
f7023cf

Minor Changes

  • 3f2b7a7: The file filter logic used for CSS crawling in development can now be configured with the vite plugin option css.filter analog to serverFunctions.filter:

    solidStart({
      css: {
        filter: {
          // Exclude all node_modules except "my-dependency" with a flat node_modules layout
          exclude: "node_modules/!(my-dependency)/**/*",
        },
      },
    });

Patch Changes

  • 6581877: Fixed shared chunk css not being server rendered in production (Vite 8 regression).
  • 37d4488: Migrate the built-in Vite configuration from the deprecated rollupOptions alias to rolldownOptions.
  • 3f2b7a7: Fixed css from files with url sensitive characters such as + not being server-rendered.

@solidjs/start@2.0.0-rc.9

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 16:01
4fbca7a

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 02:27
ffeb0be

Patch Changes

  • 3573985: Await asynchronous serverFunctions.onError handlers before serializing server function errors.
    Preserve the original error if the handler throws or rejects.

@solidjs/start@2.0.0-rc.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jul 17:14
0a49519

Patch Changes

  • 87d73e1: chore: bump seroval to v1.6.0

@solidjs/start@2.0.0-rc.6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Jul 19:01
453badd

Minor Changes

  • bac24b2: Add a serverFunctions.onError option 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.log calls from the server functions inspector, which logged on every server function request in dev.
  • f15724b: Declare @solidjs/router as 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/start v2 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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 26 Jul 20:50
5fdac96

Minor Changes

  • 4c803e5: Add serialization.plugins to configure custom Seroval plugins for server functions.

    Values Seroval has no built-in support for (Mongo's ObjectId, Prisma's Decimal, 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/serialization entrypoint re-exporting Seroval's createPlugin, 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 for unplugin-auto-import, unplugin-macros and others) silently skipped every route file. The id now ends with a lang.<ext> marker, the same convention Vue SFCs use for ?vue&type=script&lang.ts. Chunk filenames are unchanged.

  • d8f1ea8: Apply the configured nonce to the two script tags that were still missing it, so a strict script-src CSP no longer needs unsafe-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.
  • 27fca88: Fix actions returning json() or reload() leaving no-JS form submissions stranded on the /_server endpoint. These responses carry a value rather than a destination, so the redirect issued for progressive-enhancement submissions had no Location header. It now falls back to the submitting page, and the response value is unwrapped into the flash cookie so useSubmission().result matches 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 as vite-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.