ComfyUI Extension: ComfyUI_JomaNodes
A collection of quality-of-life and convenience nodes.
Custom Nodes (0)
README
ComfyUI-JomaNodes


A minimal template for creating React/TypeScript frontend extensions for ComfyUI, with complete boilerplate setup.
š ComfyUI JavaScript Developer Documentation - Learn how to use ComfyUI's powerful extension APIs.
Features
- React & TypeScript Integration: Ready-to-use setup for creating modern UI components within ComfyUI
- Internationalization Framework: Built-in i18n support with English and Chinese examples
- ComfyUI API Integration: Properly typed access to ComfyUI's internal API
- Full TypeScript Support: Type-safe code using ComfyUI's official type definitions
- Auto-Reload Development: Watch mode for seamless development experience
Installation
From ComfyUI Registry (Recommended)
The easiest way to install this extension is through the ComfyUI Manager:
- Open ComfyUI and go to the Manager
- Search for "React Extension Template"
- Click Install
Manual Installation
If you want to install directly from GitHub for development purposes:
# Go to your ComfyUI custom_nodes directory
cd ComfyUI/custom_nodes
# Clone the repository
git clone https://github.com/jomakaze/ComfyUI_JomaNodes.git
# Build the React application
cd ComfyUI_JomaNodes/ui
npm install
npm run build
# Restart ComfyUI
ā ļø Important: When installing manually from GitHub, you must run npm run build in the ui/ directory before the extension will work. The extension requires the compiled React code in the dist/ folder to function properly in ComfyUI.
Usage
This template includes a simple example extension that displays workflow node statistics. After installation:
- Look for the "React Example" tab in the ComfyUI sidebar
- Click to open the example UI
When developing your own extension, you can:
- Replace the example UI in App.tsx with your own components
- Update the tab title and icon in main.tsx
- Customize the extension's appearance and behavior
Development
Setup Development Environment
# Go to the UI directory
cd ui
# Install dependencies
npm install
# Start development mode (watches for changes)
npm run watch
Available ComfyUI Extension APIs
This template provides access to ComfyUI's powerful JavaScript APIs through the official type definitions. You can use these APIs to build rich extensions:
- Sidebar Tabs: Create custom sidebar panels like this template demonstrates
- Bottom Bar Panels: Add panels to the bottom of the UI
- Top Menu Items: Add custom entries to the top menu
- Context Menus: Create custom context menus for the graph
- Settings: Add settings to the ComfyUI settings panel
- Toasts: Display notification messages
- Commands: Create and register custom commands
- Hotkeys/Keybindings: Register custom keyboard shortcuts
- About Panel Badges: Add badges to the about panel
- App Events: Listen to and respond to app events
- Graph Manipulation: Programmatically manipulate the workflow graph
For comprehensive documentation on all available APIs, see the ComfyUI JavaScript Developer Documentation.
File Structure
ComfyUI_JomaNodes/
āāā .github/ # GitHub configurations
ā āāā workflows/
ā āāā react-build.yml # Automatic build and publishing workflow
āāā __init__.py # Python entry point for ComfyUI integration
āāā pyproject.toml # Project metadata for ComfyUI Registry
āāā dist/ # Built extension files (generated)
āāā ui/ # React application
āāā public/
ā āāā locales/ # Internationalization files
ā āāā en/
ā ā āāā main.json # English translations
ā āāā zh/
ā āāā main.json # Chinese translations
āāā src/
ā āāā App.tsx # Main React component with example UI
ā āāā App.css # Styles for the example UI
ā āāā index.css # Global styles and theme variables
ā āāā main.tsx # Entry point for React app
ā āāā vite-env.d.ts # Vite environment types
ā āāā setupTests.ts # Testing environment setup
ā āāā __tests__/ # Unit tests for components
ā ā āāā dummy.test.tsx # Example test
ā āāā utils/
ā āāā i18n.ts # Internationalization setup
āāā eslint.config.js # ESLint configuration
āāā jest.config.js # Jest testing configuration
āāā jest.setup.js # Jest setup file
āāā package.json # npm dependencies
āāā tsconfig.json # TypeScript configuration
āāā tsconfig.node.json # TypeScript configuration for Node
āāā vite.config.ts # Build configuration
TypeScript Support
This extension uses the official @comfyorg/comfyui-frontend-types package for type-safe interaction with ComfyUI APIs. To install it:
cd ui
npm install -D @comfyorg/comfyui-frontend-types
Publishing to ComfyUI Registry
Prerequisites
- Set up a Registry account
- Create an API key at https://registry.comfy.org/nodes
Steps to Publish
-
Install the comfy-cli tool:
pip install comfy-cli -
Verify your pyproject.toml has the correct metadata:
[project] name = "your_extension_name" # Use a unique name for your extension description = "Your extension description here." version = "0.1.0" # Increment this with each update [tool.comfy] PublisherId = "your_publisher_id" # Your Registry publisher ID DisplayName = "Your Extension Display Name" includes = ["dist/"] # Include built React code (normally ignored by .gitignore) -
Publish your extension:
comfy-cli publish -
When prompted, enter your API key
Automatic Publishing with GitHub Actions
This template includes a GitHub Actions workflow that automatically publishes to the ComfyUI Registry whenever you update the version in pyproject.toml:
- Go to your repository's Settings > Secrets and variables > Actions
- Create a new repository secret called
REGISTRY_ACCESS_TOKENwith your API key - Commit and push an update to pyproject.toml (e.g., increment the version number)
- The GitHub Action will automatically run and publish your extension
The workflow configuration is set up in .github/workflows/react-build.yml and will trigger when:
- The
pyproject.tomlfile is modified and pushed to themainbranch
The workflow automatically:
- Sets up Node.js environment
- Installs dependencies (
npm install) - Builds the React extension (
npm run build) - Publishes the extension to the ComfyUI Registry
Unit Testing
This template includes a basic setup for unit testing with Jest and React Testing Library:
# Run tests
npm test
# Run tests in watch mode during development
npm run test:watch
Example tests can be found in the src/__tests__ directory. The setup includes:
- Jest for running tests
- React Testing Library for testing components
- Mock implementation of the ComfyUI window.app object
Resources
- ComfyUI JS Extension Documentation - Official documentation for ComfyUI JavaScript Extensions
- ComfyUI Registry Documentation - Learn how to publish your extension
- ComfyUI Frontend Repository - The main ComfyUI frontend codebase
- Official ComfyUI Frontend Types - TypeScript definitions for ComfyUI
- React Extension Guide - Detailed guide for creating React extensions
- TypeScript Documentation
- React Documentation
- Jest Documentation
- React Testing Library
Contributing
Contributions are welcome! Feel free to open issues or submit pull requests to improve this template.
License
GNU General Public License v3