Spotnote
Reference

Framework Support

Which frameworks and file types Spotnote stamps, and how.

E2E tests on mainTest coverage on main
FrameworkStatus
ReactTested ✅ (React 17, 18, 19)
SolidTested ✅ (Solid 1.9)
VueTested ✅ (Vue 3.2, 3.4, 3.5)
SvelteTested ✅ (Svelte 4, 5)
AstroTested ✅ (Astro 5, 6, 7)
Preact, other JSXUntested
Next.jsNot supported ❌ (not Vite)

Tested versions

Each major in wide use is tested.

Vite 5Vite 6Vite 7Vite 8
React 17Tested ✅
React 18Tested ✅
React 19Tested ✅
Vite 5Vite 6Vite 7Vite 8
Vue 3.2Tested ✅
Vue 3.4Tested ✅
Vue 3.5Tested ✅
Vite 5Vite 6Vite 7Vite 8
Svelte 4Tested ✅
Svelte 5Tested ✅
Vite 5Vite 6Vite 7Vite 8
Solid 1.9Tested ✅Tested ✅
Vite 5Vite 6Vite 7Vite 8
Astro 5Tested ✅
Astro 6Tested ✅
Astro 7Tested ✅

Meta-frameworks

The frameworks above also work inside these. They render pages on the server first, so the end-to-end tests also check that the browser's page matches the server's (no hydration warnings).

FrameworkStatusWhere to add spotnote()
SvelteKitTested ✅ (SvelteKit 2, 3)vite.config.js
NuxtTested ✅ (Nuxt 3, 4)vite.plugins in nuxt.config.ts
React Router, framework modeTested ✅ (React Router 7, 8)vite.config.ts
SolidStartTested ✅ (SolidStart 1, 2)vite.config.ts (SolidStart 1: vite.plugins in app.config.ts)

The same goes for these, each with the newest framework inside it. Where a meta-framework fixes its Vite, that's the one:

Vite 5Vite 6Vite 7Vite 8
SvelteKit 2Tested ✅
SvelteKit 3Tested ✅
Vite 5Vite 6Vite 7Vite 8
Nuxt 3Tested ✅
Nuxt 4Tested ✅
Vite 5Vite 6Vite 7Vite 8
React Router 7Tested ✅
React Router 8Tested ✅
Vite 5Vite 6Vite 7Vite 8
SolidStart 1Tested ✅
SolidStart 2Tested ✅

Astro is tested end to end: see its row above, and Astro below.

Per framework

JSX (React, Solid, …)

  • Only .jsx and .tsx files are stamped. JSX written in .js or .ts files isn't.
  • HTML and SVG tags (<div>, <svg>) and custom elements (<my-el>) are stamped. Capitalized ones (<Card>) are components and aren't, and neither are other lowercase tags, such as React Three Fiber's <mesh>: they aren't DOM elements. Those that share a DOM tag's name (its <line>) are stamped.
  • Member and namespaced tags (<motion.div>, <svg:rect>) aren't stamped.

Vue

  • <template> blocks in single-file components are stamped.
  • Render functions (h(...)) aren't.
  • <component :is="…"> isn't, because its tag is decided at runtime.

Astro

  • Elements in .astro files are stamped, with Astro 5, 6 and 7 alike. Older versions aren't supported.
  • Components (<Card>), <slot>, <script> and <style> aren't.
  • Components in other frameworks inside a page are stamped as in a plain app of theirs, hydrated or not.
  • Saving an .astro file reloads the page, so an open note panel closes.
  • Add spotnote() under vite.plugins in astro.config.mjs.

Svelte

  • Markup elements in .svelte files are stamped, with Svelte 4 and Svelte 5 alike, whatever the language of their <script> and <style> (TypeScript, SCSS).
  • Components and <slot> aren't. Markup you pass into a slot is stamped in the file where you wrote it.
  • <svelte:element this={…}> isn't, because its tag is decided at runtime.

On this page