Full-stack framework for Svelte with SSR, file-based routing, and adapter system for deploying to any platform.

423 detections
20 websites tracked
Updated 04 Jun 2026

Websites Using SvelteKit

What Is SvelteKit?

SvelteKit is the official application framework for Svelte, providing everything needed to build full, production websites and web applications on top of the Svelte UI library. Where Svelte itself is a component model and compiler for building user interfaces, SvelteKit adds the surrounding framework: routing, server-side rendering, data loading, API endpoints, build tooling, and deployment adapters. It is to Svelte roughly what a full meta-framework is to a UI library, the layer that turns components into a deployable app.

A defining characteristic of the Svelte ecosystem, which SvelteKit inherits, is that Svelte is a compiler. Rather than shipping a large runtime library to the browser, Svelte compiles your components into efficient, low-level JavaScript at build time. The framework does much of its work during compilation, so the code that reaches the browser is lean and targeted. SvelteKit wraps this compiled output in a complete application framework, combining the small footprint of compiled Svelte with the structure a real site needs.

SvelteKit is built on top of modern build tooling and supports flexible rendering. It can server-render pages for fast first loads and good SEO, pre-render routes to static HTML where appropriate, and hydrate into a client-side app for smooth subsequent navigation. This means a single SvelteKit project can mix static pages, server-rendered dynamic pages, and API routes, adapting its rendering strategy per route. Deployment adapters let the same app target Node servers, static hosts, and a variety of edge and serverless platforms.

SvelteKit is not a browser extension, a plugin, or a hosted website builder. It is an open-source framework that developers install and run as part of their own project, producing a real website made of HTML, CSS, and compiled JavaScript. Because the framework emits recognizable asset paths, data attributes, and hydration data, SvelteKit is detectable from the outside, as the detection section below explains in detail.

It helps to understand SvelteKit's appeal. Developers are often drawn to Svelte for its concise, readable component syntax and its reputation for producing fast, small bundles. SvelteKit extends that appeal to entire applications: you get the developer experience and performance characteristics of Svelte across routing, data loading, and rendering, without assembling those pieces yourself from separate libraries. That combination, an ergonomic compiler-based UI model plus a batteries-included application framework, is the core of why teams choose SvelteKit.

How SvelteKit Works

At the core of SvelteKit is file-based routing. Routes are defined by the directory structure inside the src/routes/ folder: a +page.svelte file defines the UI for a route, while special files handle data loading, layouts, and server logic. Folders create nested routes, and bracketed folder names define dynamic parameters. This convention-over-configuration approach means the shape of your routes directory directly determines the URLs your app responds to.

Data loading is handled by load functions. A route can define a load function, in a +page.js/+page.ts file for code that may run on the server or client, or in a +page.server.js file for code that runs only on the server. These functions fetch the data a route needs before it renders, and SvelteKit makes the result available to the page component. Server-only load functions can talk directly to databases or use secrets safely, while universal load functions can run in either environment depending on navigation.

Server logic and APIs use server endpoints. Files named +server.js define request handlers that respond to HTTP methods, letting a SvelteKit app expose its own API routes alongside its pages. Form actions, defined in +page.server.js, handle form submissions on the server in a progressively enhanced way, so forms work with standard submissions and are enhanced with client-side behavior when JavaScript is available.

When a request arrives, SvelteKit runs the relevant load functions, renders the Svelte components to HTML on the server, and sends a complete page. It also includes the compiled client bundle and hydration data so the browser can take over and turn the page into an interactive app. Subsequent navigations are handled on the client, fetching only the data and code needed for the next route. The compiled assets, JavaScript and CSS produced by the build, are emitted into a predictable application directory, which is one of the framework's clearest fingerprints.

A useful way to picture the workflow is to follow a single project. A developer scaffolds a SvelteKit app and creates routes by adding folders and +page.svelte files under src/routes/. For a route that needs data, they add a load function; for one that handles a form, they add a form action in +page.server.js; for a JSON API, they add a +server.js endpoint. They choose, per route, whether it should be pre-rendered to static HTML or server-rendered on demand. On build, SvelteKit compiles the Svelte components and emits the app's assets into its application directory, ready to deploy via the chosen adapter.

This rendering-and-hydration process is exactly what produces SvelteKit's detectable markers. To hydrate the compiled app and manage client-side navigation, SvelteKit references its bundled assets and embeds hydration data and link-behavior attributes into the page, all of which an outside observer can find.

How to Tell if a Website Uses SvelteKit

SvelteKit leaves several reliable fingerprints. Because StackOptic analyzes a URL from the server side, it inspects the same signals you can verify manually with View Source, DevTools, the Network tab, or a detection extension.

The /_app/ asset directory. The strongest and most consistent signal is SvelteKit's application directory, served at /_app/. The compiled JavaScript and CSS chunks live under paths like /_app/immutable/.... Requests to /_app/ in the Network tab, or references to it in the HTML, are a dependable SvelteKit fingerprint.

data-sveltekit-* attributes. SvelteKit adds attributes prefixed with data-sveltekit- to elements, most notably link-behavior attributes such as data-sveltekit-preload-data and data-sveltekit-preload-code, which control how the framework prefetches data and code on hover or tap. These prefixed attributes are distinctive to SvelteKit.

The __sveltekit hydration data. SvelteKit embeds hydration state in the page, typically through an inline script that defines a __sveltekit_* value (the suffix can vary per build) used to start and hydrate the client app. Finding a __sveltekit reference in the source is a strong confirmation.

Module preload links. Because SvelteKit ships compiled ES modules, pages often include <link rel="modulepreload"> tags pointing at /_app/immutable/ chunks. This pattern, modulepreload links into the _app directory, reinforces the detection.

Svelte underneath, but compiled away. SvelteKit renders compiled Svelte, and Svelte's compiler does not leave a heavy runtime global the way some libraries do, so the most reliable tells are the framework's own asset paths and attributes rather than a Svelte library marker. This is worth keeping in mind: you confirm SvelteKit primarily through /_app/, data-sveltekit-*, and __sveltekit, not by spotting a big runtime object.

Here is how to check each signal yourself:

MethodWhat to doWhat SvelteKit reveals
View Source"View Page Source" and search for sveltekit and _appdata-sveltekit-* attributes, __sveltekit script, /_app/ references
Browser DevToolsInspect Elements and the Network tabLinks and requests to /_app/immutable/, data-sveltekit-preload-* attributes
ConsoleOpen DevTools Console and inspect the DOMElements carrying data-sveltekit-preload-data on a SvelteKit site
curl -s`curl -s https://example.comgrep -i sveltekit`
WappalyzerRun the extension on the live pageIdentifies "SvelteKit" (and Svelte) under web frameworks

A quick command-line check is curl -s https://example.com | grep -i '_app/immutable', followed by curl -s https://example.com | grep -i 'data-sveltekit'. A match on either is a strong SvelteKit signal. For broader context on identifying frameworks, see our guides on how to check if a website uses React, Vue, or Angular and how to find out what technology a website uses; the methodology for how to tell if a website is built with Next.js is closely analogous.

It is worth noting how these signals behave on production sites. The /_app/ directory and the data-sveltekit-* attributes are produced by SvelteKit's build and runtime and are difficult to remove without breaking navigation and prefetching, which makes them dependable even on customized sites. The exact __sveltekit variable suffix can change between versions and builds, so it is best treated as a pattern to match rather than a fixed string. On a fully pre-rendered static SvelteKit site, the /_app/ assets and data-sveltekit-* attributes typically remain, since the client still hydrates and manages navigation. When you combine multiple signals, a /_app/immutable/ request, a data-sveltekit-preload-data attribute, and a __sveltekit script, the conclusion is very reliable. Server-side analysis is valuable because it reads these markers from the unmodified HTML before client code rewrites the DOM.

Key Features

  • Compiler-powered Svelte. Components compile to lean JavaScript at build time, so the shipped code is small and fast rather than carrying a large runtime.
  • File-based routing. Routes derive from the src/routes/ directory structure, with special files for pages, layouts, data loading, and server logic.
  • Flexible rendering. Per-route choice of static pre-rendering, on-demand server-side rendering, and client-side hydration in a single project.
  • Load functions. Universal and server-only data loading that fetches what each route needs before it renders, with safe server access to databases and secrets.
  • Server endpoints and form actions. Built-in API routes via +server.js and progressively enhanced form handling via server actions.
  • Smart prefetching. data-sveltekit-preload-data and related attributes prefetch data and code on hover or tap for near-instant navigation.
  • Deployment adapters. Target Node servers, static hosts, and various edge and serverless platforms from the same codebase.

Pros and Cons

Pros

  • Small, fast client bundles thanks to Svelte's compile-time approach.
  • Ergonomic, concise component syntax that many developers find highly productive.
  • Flexible per-route rendering covers static, dynamic, and API needs in one framework.
  • Progressive enhancement for forms and smart prefetching produce resilient, snappy apps.

Cons

  • A smaller ecosystem and talent pool than the largest React-based frameworks.
  • Fewer third-party component libraries and integrations than more established options.
  • Some advanced patterns and conventions take time to learn despite the framework's overall simplicity.
  • Full-featured deployments rely on the right adapter for the target platform, which adds a configuration step.

SvelteKit vs Alternatives

SvelteKit competes with other full-stack JavaScript frameworks. Its distinguishing trait is the compiler-based Svelte foundation. The table below compares it with common options.

FrameworkUI foundationRenderingBest for
SvelteKitCompiled SvelteStatic, SSR, and hydration per routeFull-stack apps wanting small bundles and ergonomic syntax
Next.jsReactSSR/SSG, server componentsA broad range of React apps and content sites
NuxtVueSSR/SSGFull-stack apps in the Vue ecosystem
AstroMulti-framework, islandsStatic/SSR, minimal JSContent-first sites with little interactivity
Remix / React RouterReactServer-rendered ReactDynamic, data-driven React apps

If a site turns out not to be SvelteKit, the same techniques point to the real framework; compare SvelteKit with the content-focused Astro to see how a compiler-based app framework differs from an islands-based content framework.

Use Cases

SvelteKit suits a wide range of sites and applications, from content-focused marketing sites to interactive web apps, because its per-route rendering lets a single project serve both. Marketing sites and blogs can pre-render most pages to static HTML for speed and SEO while keeping a few server-rendered or interactive routes. Web applications and dashboards benefit from load functions and server endpoints that handle data and APIs within the same framework.

It also fits startups and teams that prize developer productivity and small bundle sizes, projects migrating from a heavier framework in search of better performance, and full-stack apps that want routing, data loading, and API endpoints in one place rather than assembled from separate libraries. The flexibility to pre-render some routes and server-render others makes SvelteKit a practical choice when a site has a mix of mostly-static pages and genuinely dynamic ones.

Consider a few concrete scenarios. A startup might build its entire product, marketing pages, authenticated dashboard, and JSON API, on SvelteKit, pre-rendering the marketing pages and server-rendering the app. A content team might run a fast blog on SvelteKit, taking advantage of static pre-rendering and smart prefetching for instant navigation. A developer might rebuild a sluggish single-page app on SvelteKit to shrink the JavaScript bundle and improve first-load performance while keeping a rich interactive experience after hydration.

From a competitive-intelligence and technographics standpoint, detecting SvelteKit on a site signals a modern, performance-conscious engineering team that has chosen a compiler-based stack, often an indicator of a product-focused company or a team that values bundle size and developer experience. For analysts qualifying prospects, that profile is useful context, as explored in what is technographics: using tech-stack data to qualify leads.

Frequently Asked Questions

What is the difference between Svelte and SvelteKit?

Svelte is the UI library and compiler for building components; SvelteKit is the application framework built on top of it. Svelte handles how individual components are written and compiled, while SvelteKit adds routing, server-side rendering, data loading, API endpoints, build tooling, and deployment adapters. In short, you use Svelte to build the pieces and SvelteKit to assemble them into a full, deployable site or app.

How can I tell if a site uses SvelteKit?

Look for requests and references to the /_app/ directory (especially /_app/immutable/ chunks), data-sveltekit-* attributes such as data-sveltekit-preload-data, and an inline __sveltekit hydration script. You can check these in View Source, the DevTools Network tab, or with curl -s URL | grep -i sveltekit. Tools like Wappalyzer also report SvelteKit. These framework-specific markers are more reliable than trying to spot a Svelte runtime, which the compiler largely eliminates.

Why is Svelte described as a compiler?

Unlike libraries that ship a runtime to interpret components in the browser, Svelte compiles your components into efficient JavaScript at build time. Much of the framework's work happens during compilation, so the browser receives small, targeted code rather than a large general-purpose runtime. This is the main reason SvelteKit apps tend to have small bundles and fast load times, and it is also why detection relies on build artifacts like /_app/ rather than a runtime global.

Can SvelteKit build static sites?

Yes. SvelteKit can pre-render routes to static HTML, and with a static adapter it can output a fully static site suitable for any static host or CDN. It can also mix static and server-rendered routes in the same project, choosing per route. Even on a static build, the client typically still hydrates to manage navigation, so the /_app/ assets and data-sveltekit-* attributes usually remain visible to detection.

Is SvelteKit production-ready?

Yes. SvelteKit is the official, stable application framework for Svelte and is used in production by many companies and projects. It provides the routing, rendering, data-loading, and deployment features needed for real applications, with a range of adapters for different hosting platforms. As with any framework, the right fit depends on your team's familiarity and your project's requirements, but SvelteKit is a mature, well-supported choice.

Want to identify SvelteKit and the rest of a site's stack automatically? Run any URL through StackOptic at https://stackoptic.com.