Create Your First Extension

How to build your first extension and use it in Stage.

Create a new extension

Creating a extension is as simple as calling stage init which creates a new extension in the current folder. You will be prompted question in order to complete the process. The final file structure is as followed:

|-assets
    |-extension-icon.png
|–src
    |-index.tsx
|–tsconfig.json
|–package.json
|-.eslintrc.json
|–.prettierrc

Build the extension

Your main working file would be src/index.tsx, but you can also create subfolders in src if needed. The example file will look like this:

import { Block, List } from "@stagehq/ui";
import * as API from "@stagehq/api";
import { useEffect, useState } from "react";

export default function Extension() {
  const [data, setData] = useState([]);
  
  useEffect(() => {
    const fetchData = async () => {
      const response = await API.gh.get("/repos/owner/repo/issues");
      setData(response.data);
    };
    fetchData();
  }, []);

  return (
    <Block
      title="Title"
      imagePath="https://source.unsplash.com/random/400x200"
      size={2}
    >
      <List>
        {data.map((item) => (
          <List.Item key={item.id} title={item.title} />
        ))}
      </List>
    </Block>
  );
};

Last updated