Svelte — examples
Beyond the minimal binding snippet — the patterns examples/svelte is built on: composing a data layer, slicing shared fields, and driving the UI off task state.
A .svelte.ts data layer
Factories run during component init (or in a .svelte.ts module) so runes compile — the returned object exposes plain getters that stay reactive in the template.
export function createIncidents(getQuery: () => QueryArgs) {
const seed = taskState(initIncidents);
const pageTask = taskState(incidents.queryIncidents);
const seedProgress = sharedValue(incidentsMemory, 'signals.seedProgress');
const metrics = sharedValue(incidentsMemory, 'state.metrics');
seed.runOnce();
$effect(() => {
const q = getQuery();
if (seed.settled) pageTask.run(q);
});
return {
get ready() { return seed.settled; },
get seedProgress() { return seedProgress.value ?? 0; },
get metrics() { return metrics.value ?? null; },
get page() { return pageTask.data; },
get isFetching() { return pageTask.pending; },
};
}Drive the template
The getters read rune-backed state — conditionals and progress bars update on every worker write.
<script lang="ts">
import { createIncidents } from './incidents.svelte';
const data = createIncidents(() => query);
</script>
{#if !data.ready}
<progress value={data.seedProgress} max={1} />
{:else if data.isFetching}
<p>scanning…</p>
{:else}
<p>{data.page?.rows.length ?? 0} rows</p>
{/if}