SolidStart, the Solid app framework
npm install solid-start- For building apps with SolidStart, check the package README and our official docs
- For contributing to codebase, check CONTRIBUTING.md
- For creating a new template, please head over to solidjs/templates
[!IMPORTANT] This is the branch for the SolidStart 2.0.0-alpha that is currently under heavy development.
Current SolidStart is maintained at
1.x.
Prerequisites
- Node.js: Use the version specified in
.nvmrc. To manage multiple versions across your system, we recommend a version manager such as fnm, or another of your choice. - pnpm: Install globally via
npm install -g pnpm. Or let Corepack handle it in the setup step below. - Git: Ensure Git is installed for cloning and managing the repository.
Monorepo Structure
SolidStart is a pnpm-based monorepo with nested workspaces. Key directories include:
packages/start: The core@solidjs/startpackage.apps/landing-page: The official landing page.apps/tests: Unit and end-to-end (E2E) tests using Vitest and Playwright.apps/fixtures: Fixture projects for testing.
Use pnpm filters (e.g. pnpm --filter @solidjs/start ...) to target specific packages.
Local Setup
Clone the repository
git clone https://github.com/solidjs/solid-start.git cd solid-startEnable the correct pnpm version specified in package.json
corepack enableInstall dependencies
pnpm dedupe(
pnpm dedupewill install dependencies and clean the lockfile from duplicates, useful for preventing conflicts).Build all packages and the landing page
pnpm run build:all
If you encounter issues (e.g. missing node_modules), clean the workspace
pnpm run clean:all
Then reinstall dependencies and rebuild.
Running Tests
End-to-end tests are located in apps/tests projects. For manual testing and development use the apps/fixtures apps, and finally, integration and unit tests live inside their respective packages.
Install the Chromium for Playwright binary (required only once)
pnpm --filter tests exec playwright install chromiumFor unit tests that check build artifacts, build the test app first
pnpm --filter tests run buildRun unit tests (puts vitest in watch mode)
pnpm --filter tests run unit- CI mode (run once):
pnpm --filter tests run unit:ci - UI mode:
pnpm --filter tests run unit:ui
- CI mode (run once):
Run E2E tests
pnpm --filter tests run e2e- UI mode:
pnpm --filter tests run e2e:ui
- UI mode:
Clean test artifacts
pnpm run clean:test
Development
Make your changes in the relevant package (e.g.
packages/start)Rebuild affected packages
pnpm run packages:buildFor a full rebuild:
pnpm run build:allTest your changes
- For fixtures, pick the name of the fixture and run the
devwith workspace filtering.pnpm --filter fixture-basic dev - For the landing page (from the root directory)
pnpm run lp:dev
- For fixtures, pick the name of the fixture and run the
Clean builds if needed
pnpm run packages:clean # Cleans packages' node_modules and dist folders pnpm run lp:clean # Cleans the landing page pnpm run clean:root # Cleans root-level caches
If you have read all the way here, you're already a champ! 🏆 Thank you.