SvelteKitは、SvelteをベースとしたフルスタックWebフレームワークです。コンパイル時にランタイムを最小化するアプローチで、軽量で高速なアプリケーションを構築できます。本記事では、Reactユーザー目線でSvelteKitの始め方とReactとの違いを解説します。
SvelteKitとは
SvelteKitは、Vue.jsにとってのNuxt、Reactにとってのを担うSvelteの公式フレームワークです。SSR・SSG・SPAを切り替え可能で、ファイルベースルーティング、フォームアクション、ロード関数などモダンフレームワークに必要な要素が一式揃っています。
Reactとの主な違い
- 仮想DOMを使わない:コンパイル時に直接DOM操作コードへ変換
- 記法がシンプル:useStateやuseEffectが不要、リアクティビティが言語レベル
- バンドルサイズが小さい:ランタイムが極小
- スタイルがコンポーネントスコープ:CSS Modules不要
セットアップ
npx sv create my-app
cd my-app
npm install
npm run dev
SvelteとReactの書き方比較
<!-- Svelte 5 (runes mode) -->
<script>
let count = $state(0);
</script>
<button on:click={() => count++}>{count}</button>
// React
const [count, setCount] = useState(0);
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
ルーティングとロード関数
SvelteKitはファイルベースルーティングを採用します。src/routes/配下のディレクトリ構造がそのままURLになり、+page.svelteがページコンポーネント、+page.server.tsがサーバー処理を担います。
// src/routes/posts/[slug]/+page.server.ts
export async function load({ params }) {
const post = await db.posts.findUnique({ where: { slug: params.slug } });
return { post };
}
Reactユーザーが戸惑いやすい点
- JSXではなくテンプレート構文(
{#if}{#each}) - useEffectは無し →
$effect()rune で代替 - 状態管理はstoresや
$staterune(Zustand相当が標準装備) - スタイルはコンポーネントの
<style>に書くと自動スコープ化
こんなプロジェクトに向く
- 軽量・高速を最優先したい中小規模Webアプリ
- 個人開発・PoC・MVPで素早く立ち上げたい
- Reactの記法疲れから別の選択肢を探している
まとめ
SvelteKitは、シンプルな記法と高速性を両立した魅力的な選択肢です。Reactに慣れた人ほど「これだけで動くのか」と驚く場面が多いはず。1日触ってみるだけで、フレームワーク選びの視野が一段広がります。