Skip to content

Upgrading nuxt-og-image 2 to 3

Breaking2.2.6 → 3.1.1Breaking14New26Changed18Fixed207Other3

BreakingUpgrade verdict

14 breaking changes.

  • Drop deprecated module config siteUrl, host  -  (0df3f).
  • Remove hook og-image:prerenderScreenshots  -  (a7ee4).
  • Remove deprecated defineOgImageDynamic, defineOgImageStatic  -  (6c1f3).
  • Remove deprecated OgImageDynamic and OgImageStatic components  -  (850ca).
Top 3 of 14 that need code or config changes

nuxt-og-image publishes an official migration guide for version 3. It covers more than the release notes do.

Migration guide ↗

Requires Node.js >=18.0.0 from 3.0.0-rc.55 (none stated before).

Adds @nuxt/devtools-kit ^1.6.1, @unocss/core ^0.64.1, @unocss/preset-wind ^0.64.1, magic-string ^0.30.13, pkg-types ^1.2.1, strip-literal ^2.1.1, unplugin ^1.16.0, unwasm ^0.3.9.

Drops @twemoji/api, @types/fs-extra, birpc, chalk, css-inline, fast-glob, flatted, fs-extra, globby, launch-editor, svg2png-wasm, tinyws, twemoji, ws.

Installs 175 packages in all (was 353).

Breaking14
Drop deprecated module config siteUrl, host  -  (0df3f).
siteUrlhost
Remove hook og-image:prerenderScreenshots  -  (a7ee4).
og-image:prerenderScreenshots
Remove deprecated defineOgImageDynamic, defineOgImageStatic  -  (6c1f3).
defineOgImageDynamicdefineOgImageStatic
Remove deprecated OgImageDynamic and OgImageStatic components  -  (850ca).
OgImageDynamicOgImageStatic
Remove defineOgImageWithoutCache, defineOgImageCached  -  (7f22a).
defineOgImageWithoutCachedefineOgImageCached
Rename runtimeBrowser -> runtimeChromium  -  (41a16).
runtimeBrowserruntimeChromium
Rename default component NuxtSeo  -  (6052f).
NuxtSeo
warning: This version no longer supports CSS inlining by default.
Rebuild core  -  (6f3b7).
Require explicit opt-in for inlining css  -  (23404).
Improved rendering of inline elements  -  (3f52c).
Serve prerendered images at /og-image/static/*  -  (71b59).
/__og-image__/static/*
To opt in simply require add the @css-inline/css-inline dependency.
@css-inline/css-inline
Additionally, if you're using edge rendering you may need to add the@css-inline/css-inline-wasm dependency.
@css-inline/css-inline-wasm

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • added: const emojiCache: Storage<string>
  • added: const fontCache: Storage<BufferSource> | undefined
  • added: const htmlPayloadCache: Storage<{ expiresAt: number, value: OgImageOptions }>
  • added: const prerenderOptionsCache: Storage<OgImageOptions> | undefined
  • added: const componentNames: string[]
  • added: default componentNames
  • added: const theme: Record<string, any>
  • added: const createBrowser: () => Promise<Browser | void>
  • added: const cssInline: _CssInline
  • added: default cssInline
  • added: const instance: WasmResvg
  • added: default instance
  • added: interface WasmResvg
  • added: property WasmResvg.Resvg: import('resvg').Resvg
  • added: property WasmResvg.initWasmPromise: Promise<void>
  • added: const satori: typeof import('satori').satori
  • added: default satori
  • added: const sharp: _sharp
  • added: default sharp
  • added: const components: Record<string, Component>
  • added: default components
  • added: const renderer: Renderer | { __unenv__: true } | undefined
  • added: default renderer
  • added: const renderer: Renderer | { __unenv__: true } | undefined
  • added: default renderer
  • removed: interface NuxtConfig
  • removed: interface NuxtOptions
  • removed: property NuxtConfig['ogImage']?: Partial<ModuleOptions>
  • removed: property NuxtOptions['ogImage']?: ModuleOptions
  • removed: interface NuxtConfig
  • removed: interface NuxtHooks extends ModuleHooks
  • removed: interface NuxtOptions
  • removed: property NuxtConfig['ogImage']?: Partial<ModuleOptions>
  • removed: property NuxtOptions['ogImage']?: ModuleOptions
  • removed: property ModuleHooks.'og-image:config': (config: ModuleOptions) => Promise<void> | void
  • removed: property ModuleHooks.'og-image:prerenderScreenshots': (queue: OgImageOptions[]) => Promise<void> | void
  • removed: property ModuleOptions.host?: string
  • removed: property ModuleOptions.playground: boolean
  • removed: property ModuleOptions.runtimeBrowser: boolean
  • removed: property ModuleOptions.runtimeCompatibility?: Partial<RuntimeCompatibilitySchema>
  • removed: property ModuleOptions.runtimeSatori: boolean
  • removed: property ModuleOptions.siteUrl?: string
  • changed: const default: _nuxt_schema.NuxtModule<ModuleOptions> → const default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>
  • changed: property ModuleOptions.satoriOptions: Partial<SatoriOptions> → property ModuleOptions.satoriOptions?: Partial<SatoriOptions>
  • added: property ModuleHooks.'nuxt-og-image:components': (ctx: { components: OgImageComponent[] }) => Promise<void> | void
  • added: property ModuleHooks.'nuxt-og-image:runtime-config': (config: ModuleOptions) => Promise<void> | void
  • added: property ModuleOptions.compatibility?: CompatibilityFlagEnvOverrides
  • added: property ModuleOptions.componentOptions?: Pick<AddComponentOptions, 'global'>
  • added: property ModuleOptions.googleFontMirror?: true | string
  • added: property ModuleOptions.resvgOptions?: Partial<ResvgRenderOptions>
  • added: property ModuleOptions.sharpOptions?: true | Partial<SharpOptions>
  • added: property ModuleOptions.strictNuxtContentPaths: boolean
  • added: property ModuleOptions.zeroRuntime?: boolean
  • added: const _default: import('vue').DefineComponent<OgImageOptions<'NuxtSeo'>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string,…
  • added: default _default
  • added: const _default: import('vue').DefineComponent<OgImagePageScreenshotOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, strin…
  • added: default _default
  • added: function defineOgImage(_options?: DefineOgImageInput): void
  • added: function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void
  • added: function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): void
  • added: function defineOgImage(_options?: DefineOgImageInput): void
  • added: function defineOgImageComponent<T extends keyof OgImageComponents>(component: T, props?: Partial<ExtractComponentProps<OgImageComponents[T]>>, options?: OgImageOptions): void
  • added: function defineOgImageScreenshot(options?: OgImagePageScreenshotOptions): void
  • added: const _default: import('nuxt/app').Plugin<Record<string, unknown>> & import('nuxt/app').ObjectPlugin<Record<string, unknown>>
  • added: default _default
  • added: const _default: import('nuxt/app').Plugin<Record<string, unknown>> & import('nuxt/app').ObjectPlugin<Record<string, unknown>>
  • added: default _default
  • added: const _default: import('nuxt/app').Plugin<Record<string, unknown>> & import('nuxt/app').ObjectPlugin<Record<string, unknown>>
  • added: default _default
  • added: const _default: import('nuxt/app').Plugin<Record<string, unknown>> & import('nuxt/app').ObjectPlugin<Record<string, unknown>>
  • added: default _default
  • added: function createOgImageMeta(src: string | null, input: OgImageOptions | OgImagePrebuilt, resolvedOptions: OgImageOptions, ssrContext: NuxtSSRContext): void
  • added: function normaliseOptions(_options: DefineOgImageInput): OgImageOptions | OgImagePrebuilt
  • added: function ogImageCanonicalUrls(nuxtApp: NuxtApp): void
  • added: function routeRuleOgImage(nuxtApp: NuxtApp): void
  • removed: function screenshot(browser: Browser, options: Partial<ScreenshotOptions> & Record<string, any>): Promise<Buffer>
  • removed: function useNitroCache<T>(e: H3Event, module: string, options: { key: string; cacheTtl: number; cache: boolean; headers: boolean; skipRestore?: boolean }): Promise<{ enabled: any; cachedItem: boolean | T; update(item: T): Promise<void> }>
  • removed: const _default: import('vue').DefineComponent<OgImageOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue…
  • removed: default _default
  • removed: const _default: import('vue').DefineComponent<OgImageOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue…
  • removed: default _default
  • removed: const _default: import('vue').DefineComponent<OgImageScreenshotOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, i…
  • removed: default _default
  • removed: const _default: import('vue').DefineComponent<OgImageOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue…
  • removed: default _default
  • removed: const _default: import('vue').DefineComponent<OgImageOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue…
  • removed: default _default
  • removed: const _default: import('vue').DefineComponent<OgImageOptions, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue…
  • removed: default _default
  • removed: function defineOgImage(_options?: OgImagePrebuilt | OgImageOptions): Promise<void>
  • removed: function defineOgImageCached(options?: OgImageOptions): Promise<void>
  • removed: function defineOgImageDynamic(options?: OgImageOptions): Promise<void>
  • removed: function defineOgImageScreenshot(options?: OgImageScreenshotOptions): Promise<void>
  • removed: function defineOgImageStatic(options?: OgImageOptions): Promise<void>
  • removed: function defineOgImageWithoutCache(options?: OgImageOptions): Promise<void>
  • removed: function normaliseOgImageOptions(_options: OgImageOptions): any
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • removed: default _default
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<string | undefined>>
  • removed: default _default
  • removed: const OgImagePrenderNitroPlugin: NitroAppPlugin
  • removed: default OgImagePrenderNitroPlugin
  • removed: default function createBrowser(): Promise<any>
  • removed: default function createBrowser(): Promise<any>
  • removed: default function createBrowser(): Promise<Browser | void>
  • removed: default nodeFn
  • removed: function nodeFn(html: string, options: any): string
  • removed: namespace nodeFn
  • removed: var nodeFn.__mock: boolean
  • removed: const mockFn: { (s: string): string; __mock: boolean }
  • removed: default mockFn
  • removed: default function (svg: string, options: ResvgRenderOptions & RuntimeOgImageOptions): Promise<Buffer>
  • removed: default function (svg: string, options: ResvgRenderOptions & RuntimeOgImageOptions): Promise<Uint8Array>
  • removed: default function (svg: string, options: ConvertOptions & RuntimeOgImageOptions): Promise<Uint8Array>
  • removed: default function (nodes: any, options: SatoriOptions): Promise<string>
  • removed: default function (nodes: string, options: SatoriOptions & RuntimeOgImageOptions): Promise<string>
  • removed: const BrowserRenderer: Renderer
  • removed: default BrowserRenderer
  • removed: const SatoriRenderer: Renderer
  • removed: default SatoriRenderer
  • removed: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • removed: default _default
  • removed: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • removed: default _default
  • removed: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • removed: default _default
  • removed: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • removed: default _default
  • removed: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • removed: default _default
  • removed: function defineSatoriTransformer(transformer: SatoriTransformer | SatoriTransformer[]): SatoriTransformer | SatoriTransformer[]
  • removed: function loadFont(requestOrigin: string, font: FontConfig): Promise<any>
  • removed: function walkSatoriTree(node: VNode, plugins: (SatoriTransformer | SatoriTransformer[])[], props: RuntimeOgImageOptions): Promise<void>
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<{ siteConfigUrl: { value: any; source: any }; dev: boolean | undefined; runtimeConfig: any;…
  • removed: default _default
  • removed: const _default: any
  • removed: default _default
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<string | void>>
  • removed: default _default
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<false | OgImageOptions>>
  • removed: default _default
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • removed: default _default
  • removed: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • removed: default _default
  • removed: export * from './utils-pure'
  • removed: function base64ToArrayBuffer(base64: string): ArrayBuffer
  • removed: function fetchOptions(e: H3Event, path: string): Promise<RuntimeOgImageOptions>
  • removed: function fetchOptionsCached(e: H3Event, path: string): Promise<RuntimeOgImageOptions>
  • removed: function readPublicAsset(file: string, encoding?: BufferEncoding): Promise<string | Buffer | undefined>
  • removed: function readPublicAssetBase64(file: string): Promise<{ src: string; width?: number; height?: number } | undefined>
  • removed: function toBase64Image(fileName: string, data: string | ArrayBuffer): string
  • removed: function wasmLoader(asyncModuleLoad: Promise<any> | Buffer | string, fallback: string): { load(options: RuntimeOgImageOptions): Promise<any> }
  • removed: function decodeHtml(html: string): string
  • removed: function extractAndNormaliseOgImageOptions(path: string, html: string, routeRules: OgImageOptions, defaults: OgImageOptions): OgImageOptions | false
  • added: function getExtension(path: string): string
  • added: function isInternalRoute(path: string): boolean
  • added: function normaliseFontInput(fonts: InputFontConfig[]): ResolvedFontConfig[]
  • added: function separateProps(options: OgImageOptions | undefined, ignoreKeys?: string[]): { props: Record<string, any> }
  • added: function toBase64Image(data: string | ArrayBuffer): string
  • added: function withoutQuery(path: string): string
  • added: function createBrowser(): Promise<Browser | void>
  • added: function createBrowser(): Promise<Browser | void>
  • added: function createBrowser(): Promise<Browser | void>
  • added: const _default: { initWasmPromise: Promise<void>; cssInline: { inline: typeof inline } }
  • added: default _default
  • added: const _default: { initWasmPromise: any; cssInline: { inline: any } }
  • added: default _default
  • added: const _default: { initWasmPromise: any; cssInline: { inline: any } }
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; Resvg: typeof _Resvg }
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; Resvg: new (svg: Uint8Array | string, options?: import('@resvg/resvg-wasm').ResvgRenderOptions) => { free(): void; render():…
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; Resvg: new (svg: Uint8Array | string, options?: import('@resvg/resvg-wasm').ResvgRenderOptions) => { free(): void; render():…
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; satori: typeof _satori }
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; satori: typeof _satori }
  • added: default _default
  • added: const _default: { initWasmPromise: Promise<void>; satori: typeof _satori }
  • added: default _default
  • added: default sharp
  • added: const emojiCache: Storage<string>
  • added: const fontCache: Storage<BufferSource>
  • added: const htmlPayloadCache: Storage<{ expiresAt: number; value: OgImageOptions }>
  • added: const prerenderOptionsCache: Storage<OgImageOptions> | undefined
  • added: const emojiCache: Storage<string>
  • added: const fontCache: Storage<OgImageOptions<'NuxtSeo'>>
  • added: const htmlPayloadCache: Storage<{ expiresAt: number; value: OgImageOptions }>
  • added: const prerenderOptionsCache: Storage<OgImageOptions> | undefined
  • added: const ChromiumRenderer: Renderer
  • added: default ChromiumRenderer
  • added: function createScreenshot({ basePath, e, options, extension }: OgImageRenderEventContext, browser: Browser): Promise<Buffer>
  • added: function extractAndNormaliseOgImageOptions(html: string): OgImageOptions | false
  • added: function resolveContext(e: H3Event): Promise<H3Error | OgImageRenderEventContext>
  • added: function resolvePathCacheKey(e: H3Event, path?: string): string
  • added: function useChromiumRenderer(): Promise<import('../../types').Renderer>
  • added: function useSatoriRenderer(): Promise<import('../../types').Renderer>
  • added: const assets: import('unstorage').Storage<import('unstorage').StorageValue>
  • added: function loadFont({ e, publicStoragePath }: OgImageRenderEventContext, font: ResolvedFontConfig): Promise<ResolvedFontConfig>
  • added: function useCssInline(): Promise<any>
  • added: function useResvg(): Promise<new (svg: Uint8Array | string, options?: import('@resvg/resvg-wasm').ResvgRenderOptions) => { free(): void; render(): { free(): void; asPng(): Uint8Array; readonly height: number; readonly pixels: Uint8Array; readonly width: number }; toString(): string; innerBBox(): { free(): void; height: number; width: number; x: number; y: number } | undefined; getBBox(): { free()…
  • added: function useSatori(): Promise<typeof _satori>
  • added: function useSharp(): Promise<typeof _sharp>
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const _default: import('../../../../types').SatoriTransformer | import('../../../../types').SatoriTransformer[]
  • added: default _default
  • added: const SatoriRenderer: Renderer
  • added: default SatoriRenderer
  • added: function createSvg(event: OgImageRenderEventContext): Promise<string>
  • added: function applyEmojis(ctx: OgImageRenderEventContext, island: NuxtIslandResponse): Promise<any>
  • added: function applyInlineCss(ctx: OgImageRenderEventContext, island: NuxtIslandResponse): Promise<boolean>
  • added: function defineSatoriTransformer(transformer: SatoriTransformer | SatoriTransformer[]): SatoriTransformer | SatoriTransformer[]
  • added: function walkSatoriTree(e: OgImageRenderEventContext, node: VNode, plugins: (SatoriTransformer | SatoriTransformer[])[]): (void | Promise<void>)[]
  • added: function createVNodes(ctx: OgImageRenderEventContext): Promise<VNode>
  • added: function html(ctx: OgImageRenderEventContext): Promise<string>
  • added: const _default: any
  • added: default _default
  • added: const _default: any
  • added: default _default
  • added: const _default: any
  • added: default _default
  • added: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • added: default _default
  • added: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • added: default _default
  • added: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<{ siteConfigUrl: string; componentNames: any; runtimeConfig: import('../../types').OgImageR…
  • added: default _default
  • added: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • added: default _default
  • added: const _default: import('h3').EventHandler<import('h3').EventHandlerRequest, Promise<any>>
  • added: default _default
  • added: function useOgImageBufferCache(ctx: OgImageRenderEventContext, options: { baseCacheKey: string | false; cacheMaxAgeSeconds?: number }): Promise<void | H3Error | { cachedItem: false | BufferSource; enabled: boolean; update: (image: BufferSource) => Promise<void> }>
  • added: function decodeHtml(html: string): string
  • added: function decodeObjectHtmlEntities(obj: Record<string, string | any>): Record<string, any>
  • added: function htmlDecodeQuotes(html: string): string
  • added: function fontEventHandler(e: H3Event): Promise<any>
  • added: function imageEventHandler(e: H3Event): Promise<any>
  • added: function createNitroRouteRuleMatcher(): ((path: string) => NitroRouteRules)
  • added: function fetchIsland(e: H3Event, component: string, props: Record<string, any>): Promise<NuxtIslandResponse>
  • added: function withoutQuery(path: string): string
  • added: const logger: import('consola').ConsolaInstance
  • added: function normaliseOptions(_options: DefineOgImageInput): OgImageOptions | OgImagePrebuilt
  • added: function nuxtContentPlugin(nitroApp: NitroApp): void
  • added: function importWasm(input: any): Promise<any>
  • added: function readWasmFile(input: string): Promise<Buffer>
  • added: export * from './pure'
  • added: function generateMeta(url: string, resolvedOptions: OgImageOptions): import('@unhead/schema').Meta<import('@unhead/schema').UserTagConfigWithoutInnerContent>[]
  • added: function getOgImagePath(pagePath: string, _options?: Partial<OgImageOptions>): string
  • added: function useOgImageRuntimeConfig(): OgImageRuntimeConfig
  • removed: index OgImageOptions[key: string]: any
  • removed: interface PlaygroundClientFunctions
  • removed: interface PlaygroundServerFunctions
  • removed: interface RuntimeOgImageOptions extends OgImageOptions
  • removed: method PlaygroundClientFunctions.refresh(type: string): void
  • removed: method PlaygroundServerFunctions.getConfig(): ModuleOptions
  • removed: method PlaygroundServerFunctions.openInEditor(filepath: string): void
  • removed: property OgImageOptions.cache?: boolean
  • removed: property OgImageOptions.cacheKey?: string
  • removed: property OgImageOptions.cacheTtl?: number
  • removed: property OgImageOptions.description?: string
  • removed: property OgImageOptions.provider?: 'browser' | 'satori'
  • removed: property OgImageOptions.static?: boolean
  • removed: property OgImageOptions.title?: string
  • removed: property Renderer.createPng: (options: RuntimeOgImageOptions) => Promise<Buffer>
  • removed: property Renderer.createSvg: (options: RuntimeOgImageOptions) => Promise<string>
  • removed: property Renderer.createVNode: (options: RuntimeOgImageOptions) => Promise<VNode>
  • removed: property RuntimeOgImageOptions.path: string
  • removed: property RuntimeOgImageOptions.requestOrigin: string
  • removed: type OgImageScreenshotOptions = Omit<OgImageOptions, 'component'>
  • changed: interface OgImageOptions extends Partial<ScreenshotOptions> → interface OgImageOptions<T extends keyof OgImageComponents = 'NuxtSeo'>
  • changed: property FontConfig.weight: number → property FontConfig.weight?: string | number
  • changed: property OgImageOptions.component?: string | null → property OgImageOptions.component?: T | string
  • changed: property Renderer.name: 'browser' | 'satori' → property Renderer.name: 'chromium' | 'satori'
  • changed: property SatoriTransformer.transform: (node: VNode, props: RuntimeOgImageOptions) => Promise<void> → property SatoriTransformer.transform: (node: VNode, e: OgImageRenderEventContext) => Promise<void> | void
  • changed: type InputFontConfig = (`${string}:${number}` | FontConfig) → type InputFontConfig = (`${string}:${number}` | string | FontConfig)
  • added: interface CompatibilityFlagEnvOverrides
  • added: interface OgImageComponent
  • added: interface OgImageRenderEventContext
  • added: interface OgImageRuntimeConfig
  • added: interface ResolvedFontConfig extends FontConfig
  • added: interface RuntimeCompatibilitySchema
  • added: interface SocialPreviewMetaData
  • added: property CompatibilityFlagEnvOverrides.dev?: CompatibilityFlags
  • added: property CompatibilityFlagEnvOverrides.prerender?: CompatibilityFlags
  • added: property CompatibilityFlagEnvOverrides.runtime?: CompatibilityFlags
  • added: property FontConfig.absolutePath?: boolean
  • added: property FontConfig.key?: string
  • added: property FontConfig.style?: string
  • added: property OgImageComponent.category: 'app' | 'community' | 'pro'
  • added: property OgImageComponent.credits?: string
  • added: property OgImageComponent.hash: string
  • added: property OgImageComponent.kebabName: string
  • added: property OgImageComponent.pascalName: string
  • added: property OgImageComponent.path?: string
  • added: property OgImageOptions._query?: Record<string, any>
  • added: property OgImageOptions.cacheMaxAgeSeconds?: number
  • added: property OgImageOptions.emojis?: IconifyEmojiIconSets
  • added: property OgImageOptions.extension?: 'png' | 'jpeg' | 'jpg'
  • added: property OgImageOptions.fonts?: InputFontConfig[]
  • added: property OgImageOptions.height?: number
  • added: property OgImageOptions.props?: OgImageComponents[T] | Record<string, any>
  • added: property OgImageOptions.renderer?: 'chromium' | 'satori'
  • added: property OgImageOptions.resvg?: ResvgRenderOptions
  • added: property OgImageOptions.satori?: SatoriOptions
  • added: property OgImageOptions.screenshot?: Partial<ScreenshotOptions>
  • added: property OgImageOptions.sharp?: SharpOptions
  • added: property OgImageOptions.url?: string
  • added: property OgImageOptions.width?: number
  • added: property OgImageRenderEventContext._nitro: NitroApp
  • added: property OgImageRenderEventContext.basePath: string
  • added: property OgImageRenderEventContext.e: H3Event
  • added: property OgImageRenderEventContext.extension: 'png' | 'jpeg' | 'jpg' | 'svg' | 'html' | 'json'
  • added: property OgImageRenderEventContext.isDebugJsonPayload: boolean
  • added: property OgImageRenderEventContext.key: string
  • added: property OgImageRenderEventContext.options: OgImageOptions
  • added: property OgImageRenderEventContext.publicStoragePath: string
  • added: property OgImageRenderEventContext.renderer: Renderer
  • added: property OgImageRuntimeConfig.baseCacheKey: string
  • added: property OgImageRuntimeConfig.colorPreference: 'light' | 'dark'
  • added: property OgImageRuntimeConfig.debug: boolean
  • added: property OgImageRuntimeConfig.defaults: OgImageOptions
  • added: property OgImageRuntimeConfig.fonts: FontConfig[]
  • added: property OgImageRuntimeConfig.hasNuxtContent: boolean
  • added: property OgImageRuntimeConfig.hasNuxtIcon: boolean
  • added: property OgImageRuntimeConfig.isNuxtContentDocumentDriven: boolean
  • added: property OgImageRuntimeConfig.publicStoragePath: string
  • added: property OgImageRuntimeConfig.resvgOptions: ResvgRenderOptions
  • added: property OgImageRuntimeConfig.satoriOptions: SatoriOptions
  • added: property OgImageRuntimeConfig.sharpOptions: SharpOptions
  • added: property OgImageRuntimeConfig.strictNuxtContentPaths: boolean
  • added: property OgImageRuntimeConfig.version: string
  • added: property OgImageRuntimeConfig.zeroRuntime: boolean
  • added: property Renderer.createImage: (e: OgImageRenderEventContext) => Promise<H3Error | BufferSource | void>
  • added: property Renderer.debug: (e: OgImageRenderEventContext) => Promise<Record<string, any>>
  • added: property Renderer.supportedFormats: Partial<RendererOptions['extension']>[]
  • added: property ResolvedFontConfig.cacheKey: string
  • added: property ResolvedFontConfig.data?: BufferSource
  • added: property RuntimeCompatibilitySchema.chromium: 'chrome-launcher' | 'on-demand' | 'playwright' | false
  • added: property RuntimeCompatibilitySchema.resvg: 'node' | 'wasm' | 'wasm-fs' | false
  • added: property RuntimeCompatibilitySchema.satori: 'node' | 'wasm' | 'wasm-fs' | false
  • added: property RuntimeCompatibilitySchema.sharp: 'node' | false
  • added: property RuntimeCompatibilitySchema.wasm?: NitroOptions['wasm']
  • added: property RuntimeCompatibilitySchema['css-inline']: 'node' | 'wasm' | 'wasm-fs' | false
  • added: property SocialPreviewMetaData.og?: Record<string, string>
  • added: property SocialPreviewMetaData.twitter?: Record<string, string>
  • added: type CompatibilityFlags = Partial<Omit<RuntimeCompatibilitySchema, 'wasm'>>
  • added: type DefineOgImageInput = OgImageOptions | OgImagePrebuilt | false
  • added: type ExtractComponentProps<T extends Component> = T extends new (...args: any) => any ? Omit<InstanceType<T>['$props'], keyof ComponentCustomProps | keyof VNodeProps | keyof AllowedComponentProps> : never
  • added: type IconifyEmojiIconSets = 'twemoji' | 'noto' | 'fluent-emoji' | 'fluent-emoji-flat' | 'fluent-emoji-high-contrast' | 'noto-v1' | 'emojione' | 'emojione-monotone' | 'emojione-v1' | 'stre…
  • added: type OgImagePageScreenshotOptions = Omit<OgImageOptions, 'html' | 'renderer' | 'component' | 'satori' | 'resvg' | 'sharp'>
  • added: type OgImagePrebuilt = { url: string } & Pick<OgImageOptions, 'width' | 'height' | 'alt' | '_query'>
  • added: type RendererOptions = Omit<OgImageOptions, 'extension'> & { extension: Omit<OgImageOptions['extension'], 'html'> }
  • removed: declare module 'nuxt/schema'
  • added: declare module '#og-image-cache'
  • added: declare module '#og-image-virtual/component-names.mjs'
  • added: declare module '#og-image-virtual/unocss-config.mjs'
  • added: declare module '#og-image/bindings/chromium'
  • added: declare module '#og-image/bindings/css-inline'
  • added: declare module '#og-image/bindings/resvg'
  • added: declare module '#og-image/bindings/satori'
  • added: declare module '#og-image/bindings/sharp'
  • added: declare module '#og-image/components'
  • added: declare module '#og-image/renderers/chromium'
  • added: declare module '#og-image/renderers/satori'