
Template details
Turborepo Svelte Starter
Official Turborepo starter with two SvelteKit apps, a shared UI library, and ESLint/TypeScript configs.
About this template
The Turborepo Svelte Starter is an official monorepo template maintained by the Turborepo core team that scaffolds two SvelteKit applications, a shared Svelte component library, and reusable ESLint and TypeScript configurations, all written in TypeScript.
What is the Turborepo Svelte Starter?
This starter demonstrates how to structure a multi-app JavaScript/TypeScript repository using Turborepo, a build system written in Rust. It is distributed through the Turborepo GitHub repository and can be scaffolded with npx create-turbo@latest -e with-svelte. The generated repository contains two SvelteKit apps named docs and web, a ui package that serves as a stub Svelte component library, an eslint-config package, and a typescript-config package.
Key Features
- Dual SvelteKit applications — The
docsandwebapps are both built on SvelteKit, giving you a ready-made structure for two front-end applications that share code. - Shared UI component library — The
uipackage provides a stub Svelte component library consumed by both apps; it explicitly supports Svelte runes in.svelte.tsfiles, which the default SvelteKit generated tsconfig does not cover. - Reusable ESLint setup — The
eslint-configpackage bundleseslint-plugin-svelteandeslint-config-prettier, letting all apps and packages use a consistent linting configuration. - Centralized TypeScript config — The
typescript-configpackage contains a customtsconfigfile that can be referenced by every app and package in the monorepo. - 100% TypeScript — Every app and package in the starter is written in TypeScript for static type checking across the entire repository.
- Preconfigured tooling — The repository comes with ESLint for linting, Prettier for code formatting, and TypeScript for type checking already set up.
- Turborepo task pipeline — The starter uses Turborepo's build system to run tasks across apps, caching results and avoiding redundant work.
Who is it for?
- SvelteKit developers who want to see an official multi-app monorepo structure with two SvelteKit front ends.
- Teams adopting a monorepo who need a reference for splitting code into shared
ui,eslint-config, andtypescript-configpackages. - Developers evaluating Turborepo who want a minimal, maintained example that shows how a Rust-based build system orchestrates builds and lints for multiple JavaScript/TypeScript packages.
Use cases
- Building a documentation site and a main web app together: the
docsandwebSvelteKit apps can be developed and deployed independently while still sharing theuicomponent library. - Setting up a shared component library for Svelte: the
uipackage is a starting point for compiling Svelte components, including runes support, before publishing to a package registry. - Standardizing code quality across a monorepo: reuse the bundled ESLint and TypeScript configurations in every app and package to keep lint and type settings consistent.
How does it work?
Run npx create-turbo@latest -e with-svelte to clone the starter. After scaffolding, the monorepo contains the apps and packages directories. Each app or package defines its own workspace, and Turborepo's cache and task runner coordinate commands like build, lint, and test across all of them.
FAQ
Is the Turborepo Svelte Starter free to use?
Yes, the starter is part of the open-source Turborepo repository maintained on GitHub by the Turborepo core team. You can use it as a starting point for your own projects.
Does the starter include a component library?
The ui package is a stub Svelte component library shared by both the docs and web apps. It is intentionally minimal, but it demonstrates how to package Svelte components and handle .svelte.ts runes files.
What apps are included?
The starter includes two SvelteKit applications: docs and web. Both are TypeScript apps, and they consume the local ui package.
What tooling is preconfigured?
TypeScript for type checking, ESLint for linting, and Prettier for formatting are already configured. The ESLint setup includes eslint-plugin-svelte and eslint-config-prettier.
















