FabricFabricHarness
CLI

fh update

Safely update versioned managed recipes while preserving project changes.

fh update <alias> [options]
fh update <kind> <name> [options]

fh update plans every managed-file and dependency change before it writes. Recipe markers identify the installed version. Compatible project dependency ranges remain unchanged; incompatible ranges and modified managed files are reported as conflicts.

Review an update

fh update channel slack --dry-run
fh update slack --dry-run
fh update channel slack --json

Human output is intended for terminal review. JSON output contains the recipe version, package manager, file actions, dependency actions, upgrade notes, and conflicts without embedding generated file contents. Both outputs include the package-manager-specific verification command.

Apply an update

fh update channel slack
fh update database postgres --no-install

Fabric checks the entire plan first. It then installs missing compatible dependencies and applies managed file/environment changes as one file transaction. If a file write fails, previously written files are restored.

An unmarked file can be adopted automatically only when it exactly matches the previous generated content. A marked file with user changes is never replaced automatically:

Recipe channel:slack has conflicts:
- .fabricharness/channels/slack.ts: user-modified managed file at version 1

Review and merge the new recipe manually, or use --force when replacement is intentional.

Options

FlagDescription
--dir <path>Project containing the managed recipe.
--dry-runPrint the complete plan without writing or installing.
--jsonEmit a machine-readable plan.
--no-installUpdate package.json without running the package manager.
--forceReplace conflicting managed files after review.

Guarantees

  • Unknown or incompatible dependency ranges fail before recipe files change.
  • A recipe never silently downgrades a newer managed version.
  • Existing user files without a matching recipe marker are preserved.
  • Missing files from an installed recipe can be recreated.
  • Running an update twice is idempotent.

See Connector recipes for recipe ownership and authoring conventions.