windmill-labs/windmill · error · Error

AgGrid Enterprise Edition require Windmill Enterprise Editio

Error message

AgGrid Enterprise Edition require Windmill Enterprise Edition

What it means

Inserting an AgGrid component of type 'aggridcomponentee' (Enterprise Edition grid) requires a Windmill Enterprise Edition license. When no enterprise license is active, insertNewGridItem shows a toast and throws to block adding the component.

Source

Thrown at frontend/src/lib/components/apps/editor/appUtils.ts:552

export function insertNewGridItem(
	app: App,
	builddata: (id: string) => AppComponent,
	focusedGrid: FocusedGrid | undefined,
	columns?: Record<string, any>,
	keepId?: string,
	initialPosition: { x: number; y: number } = { x: 0, y: 0 },
	recOverride?: Record<number, Size>,
	keepSubgrids?: boolean,
	fixed?: boolean,
	shouldNotFindSpace?: boolean
): string {
	const id = keepId ?? getNextGridItemId(app)

	const data = builddata(id)

	if (data.type == 'aggridcomponentee' && !get(enterpriseLicense)) {
		sendUserToast('AgGrid Enterprise Edition require Windmill Enterprise Edition', true)
		throw Error('AgGrid Enterprise Edition require Windmill Enterprise Edition')
	}
	if (!app.subgrids) {
		app.subgrids = {}
	}

	// We only want to set subgrids when we are not moving
	if (!keepId || keepSubgrids) {
		for (let i = 0; i < (data.numberOfSubgrids ?? 0); i++) {
			app.subgrids[`${id}-${i}`] = []
		}
	}

	const key = focusedGrid
		? `${focusedGrid?.parentComponentId}-${focusedGrid?.subGridIndex ?? 0}`
		: undefined

	if (key && app.subgrids[key] === undefined) {
		let parent = findGridItemById(app.grid, app.subgrids, key)?.data

View on GitHub (pinned to e474e8803c)

Solutions

  1. Use the community 'aggridcomponent' instead of 'aggridcomponentee'
  2. Obtain and activate a Windmill Enterprise Edition license (instance settings) and reload the editor
  3. Remove the EE grid components when copying apps between community and EE instances

Example fix

// before (component def)
{ type: 'aggridcomponentee', ... }
// after
{ type: 'aggridcomponent', ... }
Defensive patterns

Strategy: validation

Validate before calling

import { get } from 'svelte/store'; import { enterpriseLicense } from '$lib/stores'; if (componentType === 'aggridcomponentee' && !get(enterpriseLicense)) { alert('EE AgGrid requires an Enterprise license'); }

Type guard

function canInsertEeGrid(licensed: boolean): boolean { return licensed; }

Try / catch

try { insertNewGridItem(app, data); } catch (e) { if (String(e.message).includes('Enterprise Edition')) { sendUserToast('Switch to the community aggridcomponent or activate an EE license.', true); } else throw e; }

Prevention

When it happens

Trigger: Adding or pasting an aggridcomponentee component in the app editor (newItem, handlePaste, moveComponentBetweenSubgrids, moveToRoot, setUpTopBarComponentContent) while get(enterpriseLicense) is falsy.

Common situations: Community-edition instance trying to use EE-only AgGrid features; license expired or not loaded on the instance; duplicating/pasting an app section containing an EE grid into a community instance.

Related errors


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