Skip to main content
Validation and build are not a substitute for rendering through a portal host. Complete both automated and interactive checks before publication. The package worker must start through startWidgetPackage before its generated runtime can load.

Validate a standalone package

Build writes generated artifacts under .fluid/widget-dist/. Inspect manifest.json, runtime assets, CSS, and referenced files, but do not edit or commit generated output. --dry-run builds and validates the upload without creating a package version or touching the package’s repository. Publish a reviewed Droplet package with fluid widget push:
fluid widget push runs in two phases:
  1. It commits your changes and pushes them to the package’s repository on Fluid, so each publish is recorded in its source history. If someone else pushed first, it fast-forwards to their commits before committing yours.
  2. It builds and publishes the package version.
If your local history and the repository’s have diverged, push stops before publishing. Run git pull --rebase, resolve any conflicts, and run it again. When the package has no repository yet, or git isn’t installed, push skips the first phase and only publishes. The widget:publish script in the project template runs fluid widget publish. It builds and publishes too, but skips the first phase, so the published version has no matching commit in the package’s repository. Use it for --dry-run checks, and use push to publish. Increment the manifest’s semantic version before publishing a changed package. Published versions are immutable.

Validate a company package

From its portal project:
Publish reviewed company widget artifacts:
Portal deploy does not push Portal Definition JSON or activate a portal version.

How versions are handled

The two package models handle a version that’s already published differently. A company has one Widget Package, shared by all its portal projects, so they share its versions too. When the version in src/widgets.config.ts is the published version or lower, deploy publishes the next patch version and tells you:
Deploy doesn’t change src/widgets.config.ts. A higher version than the published one goes out as written. A prerelease version, such as 2.0.0-beta.1, is never moved, so it fails if it’s already published.
A publish or deploy can’t be rolled back, and no command unpublishes a version. To undo a change, publish a new version without it. Run fluid portal deploy --dry-run or fluid widget publish --dry-run first: they build and validate the package without uploading it.

Inspect behavior

Render every widget through a portal or builder host. Verify defaults, malformed inputs, keyboard behavior, focus, theme modes, reduced motion, responsive layout, and runtime cleanup.

Recover from build failure

Fix the first reported source or metadata error. If a clean retry is necessary, remove only generated .fluid/widget-build/, .fluid/tmp/, or .fluid/widget-dist/ content. Preserve author source and configuration.