Skip to main content

What are runes?

rune /ro͞on/ noun

A letter or mark used as a mystical or magic symbol.

Runes are symbols that you use in .svelte and .svelte.js/.svelte.ts files to control the Svelte compiler. If you think of Svelte as a language, runes are part of the syntax — they are keywords.

Runes have a $ prefix and look like functions:

let let message: stringmessage = 
function $state<"hello">(initial: "hello"): "hello" (+1 overload)
namespace $state

Declares reactive state.

Example:

let count = $state(0);

https://svelte-5-preview.vercel.app/docs/runes#$state

@paraminitial The initial value
$state
('hello');

They differ from normal JavaScript functions in important ways, however:

  • You don’t need to import them — they are part of the language
  • They’re not values — you can’t assign them to a variable or pass them as arguments to a function
  • Just like JavaScript keywords, they are only valid in certain positions (the compiler will help you if you put them in the wrong place)

Edit this page on GitHub