windmill-labs/windmill · warning

Failed to push shared UI folder: ${e}

Error message

Failed to push shared UI folder: ${e}

What it means

After applying file changes, `wmill sync push` pushes the shared UI folder out-of-band via pushSharedUi(). Failures there are caught and logged as a warning so the main push result is not invalidated — but the shared UI folder may be stale on the remote.

Source

Thrown at cli/src/commands/sync/sync.ts:6525

        })();

        pool.add(promise);
        // Remove from pool when complete
        promise.then(() => {
          pool.delete(promise);
          if (isFolderGroup) folderPhaseRemaining--;
        });
      }

      // Wait for at least one task to complete before continuing
      if (pool.size > 0) {
        await Promise.race(pool);
      }
    }
    try {
      await pushSharedUi(workspace.workspaceId, opts.keepDeleted);
    } catch (e) {
      log.warn(`Failed to push shared UI folder: ${e}`);
    }
    try {
      await offerToRunNewMigrations(
        workspace.workspaceId,
        newDatatableMigrations,
        {
          yes: opts.yes,
          jsonOutput: opts.jsonOutput,
        },
      );
    } catch (e: any) {
      log.warn(
        `Failed to run new datatable migrations: ${e?.body ?? e?.message ?? e}`,
      );
    }
    const lockJobs = await checkServerLockJobs(
      workspace.workspaceId,
      pushStartedAt,

View on GitHub (pinned to e474e8803c)

Solutions

  1. Read the interpolated error to identify the cause (HTTP status / network).
  2. Re-run `wmill sync push` (regular files already pushed; only shared UI will retry).
  3. Verify token permissions for the shared UI folder, or push with an admin/deployer token.
  4. If your server doesn't support shared UI, upgrade the server or disable shared UI syncing.

Example fix

// Verify and retry manually:
// before
wmill sync push
// → warn: Failed to push shared UI folder: ...
// after
wmill sync push --dry-run  # confirm access, then re-push with valid token
wmill sync push
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-check shared UI access before pushing:
try {
  await wmill.getFolder({ workspace, path: 'u/shared_ui' });
} catch {
  console.warn('Shared UI folder inaccessible; push will skip it');
}

Type guard

function isApiError(e: unknown): e is { statusCode: number; body?: unknown } {
  return typeof e === 'object' && e !== null && 'statusCode' in e;
}

Try / catch

try {
  await pushSharedUi(workspaceId, keepDeleted);
} catch (e) {
  log.warn(`Shared UI push skipped: ${e instanceof Error ? e.message : e}`);
  // schedule retry or alert; main file push is unaffected
}

Prevention

When it happens

Trigger: pushSharedUi throws due to network errors, API auth/permission failures, or invalid shared UI files while `wmill sync push` runs with the shared UI feature enabled.

Common situations: Token lacking write access to shared UI folder; server version without shared UI support; transient network failure at end of a long push.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/f2fd06e9bef2f1c7. Report an issue: GitHub.