using-remote-functions
SKILL.md
Using Remote Functions
Remote Functions are a SvelteKit feature for type-safe client-server communication. They run on the server but can be called from any component.
Key Concepts
- Component-level: Unlike load functions, Remote Functions work in any component
- Type-safe: Full TypeScript support between client and server
- Progressive enhancement: Forms work without JavaScript
- Experimental: Requires config flags (see below)
Configuration
Add to svelte.config.js:
const config = {
kit: {
experimental: {
remoteFunctions: true
}
},
compilerOptions: {
experimental: {
async: true // Optional: enables await in components
}
}
}
Remote-First Architecture
Put as little as possible in +page.svelte, as much as possible in data.remote.ts.
Build final data structures server-side. Pages should be pure renderers that map types to components.
See REMOTE-FIRST.md for patterns and examples.
Four Types of Remote Functions
| Type | Purpose | Reference |
|---|---|---|
query |
Read dynamic data | QUERY.md |
form |
Handle form submissions | FORM.md |
command |
Programmatic mutations, avoid if possible. Always prefer form |
COMMAND.md |
prerender |
Static data at build time | (not covered) |
Combining Functions
For refreshing queries after mutations, see SINGLE-FLIGHT.md.
Code Templates
For starter code blocks, see TEMPLATES.md.
When to Use Remote Functions vs Load Functions
Use Remote Functions when:
- Data is needed at the component level, not page level
- You want colocated data fetching with the component
- Building reusable components with their own data needs
Use Load Functions when:
- Never
Weekly Installs
11
Repository
svelte-society/…iety.devGitHub Stars
457
First Seen
Feb 15, 2026
Security Audits
Installed on
gemini-cli11
github-copilot11
codex11
kimi-cli11
amp11
opencode11