Skip to content
Development
Skill

/web-meta-framework-qwik

Qwik resumable framework - zero hydration, $ lazy boundaries, signals, Qwik City file-based routing, routeLoader$, routeAction$, server$ RPC, serialization rules

From plugin
skills
26200 skills

Claude Code

$ npx -y skills add agents-inc/skills --skill web-meta-framework-qwik --agent claude-code

SKILL.md

web-meta-framework-qwik.SKILL.md
name: web-meta-framework-qwik
description: Qwik resumable framework - zero hydration, $ lazy boundaries, signals, Qwik City file-based routing, routeLoader$, routeAction$, server$ RPC, serialization rules

Qwik Patterns

> **Quick Guide:** Qwik is resumable rather than hydrated — the server serializes application state into > the HTML and the client picks it up without re-executing framework code. Every `$` suffix marks a > lazy-loading boundary the optimizer splits into its own chunk, so only the code for the interaction a > user actually triggers is downloaded. `component$` wraps every component, `useSignal`/`useStore` hold > state, `routeLoader$` supplies server data, `routeAction$` handles mutations, and `server$` is ad-hoc > RPC. The constraint everything else follows from: anything captured across a `$` boundary must be > serializable.

**Detailed Resources:**

  • [examples/core.md](examples/core.md) — typed props, signals, stores, tasks, resources, events, scoped styles
  • [examples/routing.md](examples/routing.md) — route files, nested layouts, loaders, actions, `server$`, endpoints, middleware, navigation
  • [examples/serialization.md](examples/serialization.md) — what crosses the `$` boundary, `noSerialize`, lean closures, QRL props
  • [reference.md](reference.md) — project layout, import cheat sheet, serializable-type table

---

Which path applies

The two packages divide the surface, and mixing up which one an export comes from is the commonest import error.

  • **Component work** — components, state, lifecycle, events, slots, styles, all from

`@builder.io/qwik`. Follow [examples/core.md](examples/core.md).

  • **Route and server work** — routing, layouts, loaders, actions, `server$`, endpoints and middleware,

all from `@builder.io/qwik-city`. Follow [examples/routing.md](examples/routing.md).

---

<critical_requirements>

Before writing Qwik code

**Wrap every component in `component$()`.** A plain function cannot be lazy-loaded, cannot call hooks and cannot host `<Slot />`.

**Keep everything captured in a `$` closure serializable.** A non-serializable capture type-checks and then fails at runtime, which is why the compiler is no help here.

**Reach for `routeLoader$` for initial server data rather than fetching in `useTask$` or `useResource$`.** Loaders run before render and integrate with SSR streaming, so there is no loading state to show.

**Cancel default behaviour with the `preventdefault:click` JSX attribute rather than `event.preventDefault()`.** Handlers load asynchronously, so the synchronous Event APIs have already had their effect by the time the handler runs.

**Export `routeLoader$` and `routeAction$` from a route file** — `index.tsx` or `layout.tsx` under `src/routes/`. Anywhere else, or unexported, they silently do nothing.

**Read and write store properties through the store reference — `store.name`.** Destructuring extracts the value from the Proxy, and reactivity goes with it.

</critical_requirements>

---

**Auto-detection:** Qwik, component$, useSignal, useStore, useTask$, useVisibleTask$, useComputed$, useResource$, routeLoader$, routeAction$, server$, sync$, QRL, noSerialize, @builder.io/qwik, @builder.io/qwik-city, Qwik City, $(), onClick$, onInput$, Slot, q:slot, preventdefault, stoppropagation, useStylesScoped$, resumable, resumability

**Applies to:**

  • Resumability, the `$` suffix, and what the optimizer does with it
  • Components: `component$`, typed props, QRL callback props, `<Slot />` projection
  • Reactive state: `useSignal`, `useStore`, `useComputed$`
  • Lifecycle: `useTask$`, `useVisibleTask$`, `useResource$`
  • Events: `on{Event}$`, `preventdefault:`/`stoppropagation:` attributes, `sync$`, global listeners
  • Qwik City routing: file-based routes, nested and named layouts, dynamic params, route groups
  • Server work: `routeLoader$`, `routeAction$`, `server$`, endpoint handlers, `onRequest` middleware
  • Serialization rules and how to work around them

**Handled elsewhere:**

  • Which CSS system fills a scoped style block — Qwik settles how styles attach to a component, not how they are authored.
  • Validation schemas beyond the shape `zod$()` wraps — the action integration is Qwik's, the schema language is not.
  • Databases, mail and other services called from inside `server$` or a loader — those functions are just server code.
  • Statically-generated content sites with little interactivity — resumability buys nothing where there is nothing to resume.

---

<philosophy>

Qwik is built on **resumability**. A hydrating framework renders HTML on the server and then re-executes every component on the client to reattach listeners and rebuild the tree. Qwik does not: the server serializes the tree, the state and the listeners into the HTML, and the client resumes from there. When a user clicks a button, that handler's chunk is what downloads — not the framework, not the tree, not the other handlers.

**The `$` suffix is the mechanism.** Each `$` is a split point the optimizer turns into a separately loadable chunk: `component$()` for a render function, `onClick$()` for a handler, `useTask$()` for a tracked effect, `routeLoader$()` for server-only code.

**The price is serialization.** A chunk that loads later needs its captured scope restored from the HTML, so a `$` closure can only close over values Qwik knows how to write down. Class instances, functions and DOM nodes are not among them, and that single constraint explains most of the API's unfamiliar corners — `QRL` props, `noSerialize`, the advice to keep closures lean.

</philosophy>

---

<decision_framework>

**Which state primitive?** A single primitive is `useSignal`, read and written through `.value`. An object or array is `useStore`, mutated property by property with deep tracking on by default. A value derived synchronously from others is `useComputed$`. A value derived asynchronously is `useResource$`. Data that comes from the server is `routeLoader$`.

**Which lifecycle hook?

Read more
@agents-inc
Ships withskills

The official skills marketplace for Agents Inc. 230+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?

Stars on GitHub

Momentum

stars in total
26
Star history of agents-inc/skills on GitHub, a chart by star-history.com

Other skills on skills.

ai-infrastructure-litellm

ai-infrastructure-lite…

LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking,…

@agents-inc@agents-incInstall Skill
ai-infrastructure-modal

ai-infrastructure-moda…

Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client…

@agents-inc@agents-incInstall Skill
ai-infrastructure-ollama

ai-infrastructure-olla…

Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output,…

@agents-inc@agents-incInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about web-meta-framework-qwik.

Which coding agents can use web-meta-framework-qwik?
web-meta-framework-qwik installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.