Skip to content

SolidStart

Source: src/Railway/Website/SolidStart.ts

Deploy a SolidStart application to Railway: the SSR server plus client assets (prerendered pages included) on one Railway.Service.

The build runs through @alchemy.run/frontend-frameworks/solidstart with the @alchemy.run/frontend-frameworks/solidstart/node deploy target — both must be installed in your project, alongside @solidjs/start and @solidjs/vite-plugin-nitro-2.

Your vite.config.ts needs no adapter wiring: the integration drives the project’s own vite build and appends its own nitro plugin instance carrying nitro’s node preset.

During alchemy dev the site is SolidStart’s own Vite dev server and no cloud resources are created. Alchemy.remote() opts back into the live Service path.

Basic SolidStart App

const site = yield* Railway.Website.SolidStart("Web", {
rootDir: "./app",
});

Custom Domain

const site = yield* Railway.Website.SolidStart("Web", {
rootDir: "./app",
domain: "app.example.com",
});
const site = yield* Railway.Website.SolidStart("Web", {
rootDir: "./app",
env: {
GREETING: "Hello from SolidStart on Railway!",
},
});

The integration owns the nitro plugin instance (a nitroV2Plugin() in your vite.config.* is rejected), so nitro options — prerendering included — go on the nitro prop. Prerendered pages are baked into the Service image and served as static files.

const site = yield* Railway.Website.SolidStart("Web", {
rootDir: "./app",
nitro: { prerender: { routes: ["/", "/about"] } },
});