Build Raycast extensions using React and Node.js. Use for creating commands, UI components (List, Form, Grid), hooks (useFetch), AI integration, and manifest configuration.
Build Raycast extensions using React, TypeScript, and Node.js.
npm install && npm run devsrc/index.tsx, changes hot-reload automatically| Need | Component |
|------|-----------|
| Searchable list of items | List |
| Image gallery/grid | Grid |
| User input collection | Form |
| Rich content display | Detail |
| Status bar presence | MenuBarExtra |
Displaying items the user searches/filters?
ListGridCollecting user input? → Form
Showing detailed content? → Detail (supports markdown + metadata)
Always-visible status bar? → MenuBarExtra
import { ActionPanel, Action, List } from "@raycast/api";
export default function Command() {
return (
<List>
<List.Item
title="Item"
actions={
<ActionPanel>
<Action.CopyToClipboard content="Copied!" />
<Action.OpenInBrowser url="https://raycast.com" />
</ActionPanel>
}
/>
</List>
);
}
import { List } from "@raycast/api";
import { useFetch } from "@raycast/utils";
export default function Command() {
const { data, isLoading } = useFetch<Item[]>("https://api.example.com/items");
return (
<List isLoading={isLoading}>
{data?.map((item) => <List.Item key={item.id} title={item.name} />)}
</List>
);
}
import { AI, Clipboard } from "@raycast/api";
export default async function Command() {
const answer = await AI.ask("Summarize this text");
await Clipboard.copy(answer);
}
[!NOTE] AI requires Raycast Pro. Check access with
environment.canAccess(AI).
For detailed documentation, see:
Runnable examples in examples/:
| File | Pattern |
|------|---------|
| list-with-actions.tsx | List + ActionPanel basics |
| list-with-detail.tsx | List with detail panel |
| form-with-validation.tsx | Form + useForm validation |
| detail-with-metadata.tsx | Detail markdown + metadata |
| grid-with-images.tsx | Grid layout |
| data-fetching.tsx | useFetch patterns |
| ai-integration.tsx | AI.ask with streaming |
| menubar-extra.tsx | MenuBarExtra interactions |
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer