Game Engine Issues May 24, 2026

Godot 4.5 EditorExportPlugin Custom Export Preset Disappears After Patch Update - How to Fix

Fix missing custom export presets in Godot 4.5 after patch updates. EditorExportPlugin API changes, Plugins tab warnings, editor_layout.cfg cache, and export smoke receipts.

By GamineAI Team

Godot 4.5 EditorExportPlugin Custom Export Preset Disappears After Patch Update - How to Fix

Problem: Your team shipped a custom export preset—Itch HTML5 size-budget gate, Steam demo stripped symbols, or similar—through an EditorExportPlugin in addons/. After upgrading from Godot 4.5.0 to a 4.5.x patch, the preset no longer appears in Project → Export → Add… even though the addon folder still exists.

Who is affected now: Indies pinning 4.5.x for 2026 jam and fest pipelines. Early 2026 patch releases tightened EditorExportPlugin registration; plugins that compiled on 4.5.0 often disable themselves on first open until you migrate API signatures and clear stale editor cache.

Fastest safe fix: Open Project → Project Settings → Plugins → resolve the orange needs update warning → update _get_export_options / feature hooks per current docs → delete editor_layout.cfg for this project hash → re-enable plugin → confirm preset in Export dialog → log godot_export_plugin_receipt_v1.json in CI.

Direct answer

The preset did not delete itself—the editor stopped loading your plugin because the patch changed export-plugin callbacks or marked the addon incompatible. Godot hides broken plugins from the export UI instead of showing a half-registered preset. Fix the plugin load state and API match first; only then re-test HTML5 or desktop exports.

Why this issue spikes in 2026

  1. Godot 4.5.x patch cadence is faster than many teams’ .godot-version pin discipline.
  2. Custom export gates (WASM size, stripped PCK, fest demo flags) moved from manual checklists into EditorExportPlugin automation.
  3. A preset can vanish while standard Web / Windows presets remain—teams blame the engine instead of the addon.
  4. Stale ~/.config/godot/ layout cache preserves a broken Export dialog state across reopen.

If the game exports but itch hangs at loader, that is a hosting/MIME lane—see itch.io WASM MIME boot hang, not this article.

Symptoms and search phrases

  • Project → Export → Add… missing your custom preset name.
  • Plugins tab shows addon disabled or incompatible after patch.
  • Output panel: script error in addons/your_plugin/export_plugin.gd on project load.
  • Preset existed yesterday on 4.5.0, gone today on 4.5.2 with no intentional addon edits.
  • .gdignore accidentally added under addons/ during cleanup—plugin never loads.

Root causes (check in order)

  1. Plugin disabled after incompatible script error on load.
  2. _get_export_features / option hooks signature drift between patches.
  3. @tool class not extending EditorExportPlugin correctly after rename in template.
  4. .gdignore in addons/ or subfolder blocks Godot from scanning scripts.
  5. Cached editor_layout.cfg hides Export UI state.
  6. Wrong plugin.cfg version or missing config/features for 4.5.
  7. Duplicate plugin name collision after merge—second plugin fails silently.

Fastest safe fix path

Step 1 — Open Plugins and read the warning

  1. Project → Project Settings → Plugins.
  2. Find your export addon row.
  3. If status is disabled or shows needs update, click Edit or re-enable after fixing scripts.
  4. Open Output dock—copy the first red error on project load.

Success check: Plugin checkbox enabled with no red errors on reload.

Step 2 — Migrate EditorExportPlugin API for your patch

Compare your script against current EditorExportPlugin documentation.

Common 4.5.x fixes:

Symptom in Output Fix
_get_export_features not found Rename to current hook (_get_export_features vs platform feature API—match docs for your exact patch)
Wrong return type on _get_export_options Return Array of Dictionary options per spec
Missing _export_begin / _export_end Add no-op stubs if exporter expects them

Minimal skeleton (verify against your patch docs):

@tool
extends EditorExportPlugin

func _get_export_options(platform: String) -> Array:
    return [{
        "option": "custom/itch_size_cap_mb",
        "type": TYPE_INT,
        "default": 250
    }]

func _get_export_features(platform: String, preset_name: String) -> PackedStringArray:
    return PackedStringArray()

func _export_begin(features: PackedStringArray, is_debug: bool, path: String, flags: int) -> void:
    pass

Success check: Project loads with zero addon script errors.

Step 3 — Clear editor layout cache for this project

Godot stores per-project UI state under the user config dir.

  1. Close Godot completely.
  2. Locate project hash folder:
    • Windows: %APPDATA%\Godot\projects\
    • macOS: ~/Library/Application Support/Godot/projects/
    • Linux: ~/.config/godot/projects/
  3. Delete editor_layout.cfg inside the folder matching your project (keep backups if unsure).
  4. Reopen project.

Alternative: Create a fresh clone of the repo on a CI machine without old cache—if preset appears, cache was the culprit.

Step 4 — Re-enable plugin and confirm Export dialog

  1. Project → Export.
  2. Click Add… — your custom preset should list by plugin.cfg name.
  3. If missing, verify plugin.cfg:
[plugin]
name="ItchHtml5SizeGate"
description="Fest HTML5 export size gate"
author="Your Studio"
version="1.1"
script="export_plugin.gd"
  1. Confirm res://addons/your_plugin/export_plugin.gd path matches script=.

Success check: Custom preset visible; export dialog opens without errors.

Step 5 — Run one export smoke per platform you ship

Platform Smoke
Web Export folder contains index.html + .wasm; run MIME curl check before itch upload
Windows Binary launches from clean path
Steam demo Pair with save-path discipline if also using GDevelop—Godot has separate save maps

Step 6 — Pin patch in team docs

Add to repo root:

# .godot-version (team convention)
4.5.2-stable

Run patch upgrade smoke in CI: open headless or scripted check that addons/*/export_plugin.gd parses.

godot_export_plugin_receipt_v1.json

{
  "schema": "godot_export_plugin_receipt_v1",
  "engine_version": "4.5.2-stable",
  "plugin_name": "ItchHtml5SizeGate",
  "plugin_enabled": true,
  "custom_preset_visible_in_export_dialog": true,
  "editor_layout_cache_cleared": true,
  "web_export_smoke_ok": true,
  "captured_at_utc": "2026-05-24T00:00:00Z",
  "pass": true
}

Attach to BUILD_RECEIPT when custom gates block promotion.

Prevention

  1. Pin Godot patch in README and CI image tag.
  2. Treat addon breakages as release blockers on engine bump.
  3. Never .gdignore entire addons/ unless intentional.
  4. Keep standard Web preset as fallback if custom plugin fails mid-jam.
  5. Cross-link QA with 15 Free Godot 4.5 Web Export resources.

Troubleshooting

Symptom Fix
Plugin enables, preset still missing Step 3 cache + verify plugin.cfg script path
Errors only on one OS Line endings or case-sensitive path in plugin.cfg
Preset appears, export fails Size gate logic—fix _export_begin, not registration
Works in Editor, fails in CI CI uses different Godot patch—align versions
Multiple custom presets, one missing Name collision in plugin.cfg name field

FAQ

Should we fork Godot’s built-in Web preset?
Prefer EditorExportPlugin that wraps built-in flow—forking core presets breaks on every patch.

Does this affect exported games?
No—only editor export UI. Players are unaffected.

Can we skip plugins and export manually?
Yes for emergencies; you lose automated size/MIME gates tied to fest prep.

Is this related to GDExtension web export?
Separate lane—see web export resources for GDExtension + WASM pruning.

Related links

Re-open Plugins after every engine patch—the Export dialog will not tell you the addon failed until the preset is already gone.