no compiler·no virtual DOM·no build step

HTML that reacts.

Import a component straight from a URL — no install, no bundler. The browser fetches the .html and boots it live. Components are just files, anywhere. Nothing else does that.

$npx create-spark-html-app
<div import="https://cdn.jsdelivr.net/gh/wilkinnovo/
  spark/website/public/components/url-card.html">
</div>

● live — fetched from a CDN, no bundler

fetched from a URL · rendered at 12:33:49 AM

This whole component is a plain .html file on a CDN — no bundler touched it.

0 build step ~12kb runtime 0 dependencies 460+ tests 11 packages

What's in Spark

Single-file components.

Markup, script and style in one .html file. Nothing rewrites your code.

Surgical reactivity.

A change re-evaluates only the bindings that read it — not the page.

Shared stores.

Named stores let any two components share state. No providers.

Declarative router.

<template route> + router(). Active links and a route store, free.

SEO prerender.

Real HTML per route at build time. No SSR server, no app changes.

One-line theming.

theme() — dark / light / system, persisted, no flash.

Use it — no build required

1 Load Spark from a CDN
<script type="importmap">
  { "imports": {
    "spark-html": "https://esm.sh/spark-html@0.22"
  } }
</script>

<script type="module">
  import { mount } from 'spark-html';
  mount();
</script>
2 Import a component — even from a URL
<div import="components/card"></div>

<!-- …or straight from anywhere -->
<div import="https://cdn.jsdelivr.net/
  gh/you/repo/card.html"></div>

Serve any static folder (npx serve) — no npm, no bundler, no compiler. Read the docs →

Built with Spark

View all →