diff --git a/packages/dom/src/renderDOMHead.ts b/packages/dom/src/renderDOMHead.ts index c6455e64..ce6d6dc0 100644 --- a/packages/dom/src/renderDOMHead.ts +++ b/packages/dom/src/renderDOMHead.ts @@ -36,19 +36,18 @@ export async function renderDOMHead>(head: T, options: Ren if (!dom) return - const tags: DomRenderTagContext[] = (await head.resolveTags()) - .map(tag => { - tag, - id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag, - shouldRender: true, - }) - - const beforeRenderCtx: DomBeforeRenderCtx = { shouldRender: true, tags } + const beforeRenderCtx: DomBeforeRenderCtx = { shouldRender: head.dirty, tags: [] } await head.hooks.callHook('dom:beforeRender', beforeRenderCtx) // allow integrations to block to the render if (!beforeRenderCtx.shouldRender) return + const tags = (await head.resolveTags()) + .map(tag => { + tag, + id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag, + shouldRender: true, + }) let state = head._dom as DomState // let's hydrate - fill the elMap for fast lookups if (!state) { diff --git a/packages/schema/src/hooks.ts b/packages/schema/src/hooks.ts index e3d3ed40..8c1e4eb7 100644 --- a/packages/schema/src/hooks.ts +++ b/packages/schema/src/hooks.ts @@ -22,6 +22,9 @@ export interface DomRenderTagContext { } export interface DomBeforeRenderCtx extends ShouldRenderContext { + /** + * @deprecated will always be empty, prefer other hooks + */ tags: DomRenderTagContext[] } export interface ShouldRenderContext { shouldRender: boolean } @@ -36,7 +39,7 @@ export interface HeadHooks { 'tags:resolve': (ctx: { tags: HeadTag[] }) => HookResult // @unhead/dom - 'dom:beforeRender': (ctx: ShouldRenderContext & { tags: DomRenderTagContext[] }) => HookResult + 'dom:beforeRender': (ctx: DomBeforeRenderCtx) => HookResult 'dom:renderTag': (ctx: DomRenderTagContext, document: Document, track: any) => HookResult 'dom:rendered': (ctx: { renders: DomRenderTagContext[] }) => HookResult