SolidJS
Fine-grained reactive primitives using createSignal, createEffect, createMemo. Input is a getter () => value. Returns signal accessors —
call them to read: data().
Setup
# metaxy.config.toml
[output]
solid = "src/lib/rpc.solid.ts"or via CLI
metaxy generate --solid-output src/lib/rpc.solid.tscreateQuery
import { createQuery } from './rpc.solid';
import { rpc } from './client';
import { createSignal } from 'solid-js';
const [page, setPage] = createSignal(1);
// Getter input — fine-grained reactivity
const users = createQuery(rpc, 'list_users', () => page(), {
enabled: () => page() > 0,
refetchInterval: 30000,
});
// Access via signal accessors
users.data() // T | undefined
users.error() // RpcError | undefined
users.isLoading() // boolean
users.isSuccess() // boolean (memo)
users.refetch() // manual refetchcreateMutation
import { createMutation } from './rpc.solid';
const create = createMutation(rpc, 'create_user', {
onSuccess: (data) => console.log('Created:', data),
onError: (err) => console.error(err),
});
// Fire-and-forget
create.mutate({ name: 'Alice' });
// Await the result
const user = await create.mutateAsync({ name: 'Alice' });
// Access via signal accessors
create.data() // T | undefined
create.error() // RpcError | undefined
create.isLoading() // boolean
create.isSuccess() // boolean (memo)
create.isError() // boolean (memo)
create.reset() // clear state