The Workspace
How the scratchpad and pack panel work in detail.
This guide walks through the whole loop: setting up a workspace, generating icons, curating a pack, publishing it, and installing the components into a real project.
After signing up and logging in at app.iconforge.ai/login, you land on the app root at /.
Your pack now has a three-part identifier built from these names:
your-org / your-project / your-packThis is the install path developers will use later.
Open your pack to enter the workspace. You’ll see two main areas:
To start generating:
Candidates appear in the scratchpad. Generate as many as you want — nothing here ships until you explicitly add it to the pack.
Browse the scratchpad and find icons you like. When you find a good one, add it to the pack. This creates a named slot in the pack panel — for example, arrow-left or check-circle.
The slot name is what developers will import as a component, so pick clear, stable names.
Keep iterating:
When the pack feels ready, hit Publish. This snapshots every assigned slot into an immutable release.
After publishing, the pack is live and installable.
Switch to your codebase. From the project root:
npx @icon-forge/cli install your-org/your-project/your-pack --framework reactnpx @icon-forge/cli install your-org/your-project/your-pack --framework vuenpx @icon-forge/cli install your-org/your-project/your-pack --framework react-nativeSince this is the first install, the CLI also saves your framework and output directory to iconforge.json so you won’t need to pass them again on future installs.
For React Native / Expo apps, install react-native-svg before using generated icons:
npx expo install react-native-svgThe CLI fetches the published manifest, downloads the components, and writes them to your project:
src/components/icons/your-pack/├── ArrowLeft.tsx # or .vue for Vue├── CheckCircle.tsx├── Home.tsx├── Settings.tsx├── ...└── index.tsIt also creates two tracking files at the project root:
iconforge.json — your install config (framework, output dir, which packs you’re tracking)iconforge-lock.json — exact record of what’s installed (versions, file hashes)Commit both of these.
Import them like any other local component:
import { Home, ArrowLeft, CheckCircle } from "@/components/icons/your-pack";
export function Nav() { return ( <nav className="flex items-center gap-2"> <ArrowLeft className="h-5 w-5" /> <Home className="h-5 w-5" /> <CheckCircle className="h-5 w-5 text-green-600" /> </nav> );}<script setup lang="ts">import { Home, ArrowLeft, CheckCircle } from "@/components/icons/your-pack";</script>
<template> <nav class="flex items-center gap-2"> <ArrowLeft class="h-5 w-5" /> <Home class="h-5 w-5" /> <CheckCircle class="h-5 w-5 text-green-600" /> </nav></template>import { View } from "react-native";import { Home, ArrowLeft, CheckCircle } from "@/components/icons/your-pack";
export function Nav() { return ( <View style={{ flexDirection: "row", gap: 8 }}> <ArrowLeft width={20} height={20} /> <Home width={20} height={20} /> <CheckCircle width={20} height={20} color="#16a34a" /> </View> );}React and Vue icons default to currentColor and 1em size. React Native icons default to 24 points. Standard SVG props pass through on web targets, and React Native components accept react-native-svg props like width, height, and color.
When the design team publishes a new version of the pack, developers rerun the install:
npx @icon-forge/cli install your-org/your-project/your-packThe CLI pulls the latest release and replaces the tracked files. The framework is already saved in iconforge.json from the first install, so you don’t need to pass it again.
If you need to lock to a specific release, you can pin a version hash — see Updating & Pinning.
How the scratchpad and pack panel work in detail.
Controlling the visual direction of generated icons.
Namespaces, releases, and what gets frozen.
CLI options, output structure, and conflict handling.