OSS TanbouSign in with GitHub

combine Svelte pages and server logic in one route-based application

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
20,836
Primary language
JavaScript
License
MIT
Repository last updated
Oct 5, 2026
On this page

Overview

SvelteKit is an application framework for Svelte. It combines filesystem routing, server-side loading and forms, prerendering, and server rendering.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Place pages and server behavior together by route

+page.svelte renders a route while +page.server.js supplies loading and form actions. Forms work as HTML first and can gain progressive enhancement.

Sources: [4][5]

Best fit

Combine navigation and data mutations

The same route structure scales from a small form to an authenticated application. The official tool scaffolds a project whose submission can be checked on localhost.

Sources: [3][5]

Before adoption

Pin Node.js, server-only boundaries, and adapters

The fixed @sveltejs/kit 3.0.0 requires Node.js 22.17 or later. Secrets belong in server-only modules, and the adapter must match the deployment target.

Sources: [2][6][7]

Official sources

  1. [1]SvelteKit README at fixed commit(2026-10-05)
  2. [2]@sveltejs/kit 3.0.0 package(2026-10-05)
  3. [3]Creating a project(2026-10-05)
  4. [4]Advanced routing(2026-10-05)
  5. [5]Form actions(2026-10-05)
  6. [6]Private environment variables(2026-10-05)
  7. [7]Adapters(2026-10-05)
  8. [8]SvelteKit MIT license(2026-10-05)
  9. [9]SvelteKit GitHub metadata(2026-10-05)
Supplemental curator note

SvelteKit fits teams that want pages and server logic in one project with progressively enhanced forms. Verify a real submission, then choose the adapter and secret boundary.

Try it in 3 steps

  1. 1

    Create a minimal project with the official tool

    Requires Node.js 22.17 or later and npm. Use pinned sv 1.1.0.

    node -e 'const [a,b]=process.versions.node.split(".").map(Number);if(a<22||(a===22&&b<17))process.exit(1)' && npx --yes sv@1.1.0 create sveltekit-demo --template minimal --types jsdoc --no-add-ons --install npm && cd sveltekit-demo
  2. 2

    Add a form action and build

    Read the posted name on the server and return a greeting to the page.

    printf '%s\n' "export const actions = { default: async ({ request }) => { const data = await request.formData(); return { message: 'Hello, ' + data.get('name') + '!' }; } };" > src/routes/+page.server.js && printf '%s\n' '<script>let { form } = $props();</script>' '<form method="POST"><input name="name" value="Codex"><button>Greet</button></form>' '{#if form?.message}<p>{form.message}</p>{/if}' > src/routes/+page.svelte && npm run build
  3. 3

    Verify submission and shutdown

    Post Codex to a local-only port and verify the greeting. Stop the process that was started and confirm the port no longer accepts connections.

    ( set -eu; port=$(node -e 'const n=require("node:net").createServer();n.listen(0,"127.0.0.1",()=>{console.log(n.address().port);n.close()})'); pid=""; cleanup(){ if [ -n "$pid" ];then kill "$pid" 2>/dev/null||true;wait "$pid" 2>/dev/null||true;fi;}; trap cleanup EXIT HUP INT TERM; node ./node_modules/vite/bin/vite.js dev --host 127.0.0.1 --port "$port" --strictPort > vite.log 2>&1 & pid=$!; i=0;until curl -fsS --max-time 1 "http://127.0.0.1:$port/" >/dev/null;do i=$((i+1));[ "$i" -lt 20 ];sleep .25;done; curl -fsS --max-time 3 -X POST -H 'Content-Type: application/x-www-form-urlencoded' --data 'name=Codex' "http://127.0.0.1:$port/" | grep -F 'Hello, Codex!';cleanup;pid="";node -e 'const s=require("node:net").createConnection({host:"127.0.0.1",port:+process.argv[1]});s.setTimeout(1000);s.once("connect",()=>process.exit(1));s.once("timeout",()=>process.exit(1));s.once("error",x=>process.exit(x.code==="ECONNREFUSED"?0:1))' "$port";trap - EXIT HUP INT TERM )
Check the official README

Growth

Growth trends · Last 30 days

20,836 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
151
Open PRs
103

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • svelte
Stars
20,836
Forks
2,345
Watchers
147
Open issues
735
Contributors
448
Owner type
Organization
Primary language
JavaScript
License
MIT
Repository last updated
Oct 5, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?