TROUBLESHOOTING · EXTENSIONS · GRADIO

Find the extension that broke Forge—without deleting your install

Launch one controlled baseline, decide whether the fault is third-party, built-in, or core, then reduce the active set until one extension or one pair reproduces the first error.

EXTENSION LOAD BOUNDARYVERIFIED
Current Forge
dfdcbab
Pinned UI engine
Gradio 4.40.0
First isolation
Disable extra
Success proof
Minimum failing set
01 · DIRECT ANSWER

Disable code before changing code

01Preserve

Keep the failing folder, both consoles, commits, launch arguments, and extension list.

02Separate

--disable-extra-extensions tests third-party code; --disable-all-extensions also removes built-ins.

03Reduce

Restore half, restart, reproduce, and keep halving—or test cross-group pairs when both halves pass.

04Prove

Name the smallest failing extension or pair on exact Forge and extension commits.

STALE SNAPSHOT

The maintainer’s “about 70%” compatibility result belongs to one test on 26 July 2024. It is not a current success rate, and the temporary replacement list from 9 September 2024 is a directory of candidates—not certification.

02 · SYMPTOM ROUTER

Start where the failure first becomes visible

Similar-looking missing tabs can fail at discovery, installer, preload, tab callback, browser script, or access policy.

VERIFIEDRegistration or visibility

An installed extension has no tab or script entry

First safe test
Restart Forge and preserve the first ui_tabs_callback or script-loading error. If there is no callback error, confirm that the tab is not listed under Settings → User interface → Hidden UI tabs.
Proof
The extension loads on its own, its callback completes, and the expected tab or script appears after a full restart—not merely after a browser refresh.
Stop condition
A folder under extensions and an entry under Installed prove discovery only. They do not prove that the extension registered a Gradio 4-compatible interface.
03 · CLEAN BASELINE

Eight steps from “something broke” to one named boundary

Every enable or disable change gets a full restart. Browser refresh alone does not rerun installers, preload hooks, imports, or tab registration.

  1. 01

    Preserve the incident

    Copy the console from launch through the first failure. Record Forge commit, launch arguments, browser, extension remotes/branches/commits, and any package edits.

  2. 02

    Choose the narrow clean mode

    Start with --disable-extra-extensions: current code prevents non-built-in extensions while retaining built-ins. Use --disable-all-extensions only to test the built-in boundary too.

  3. 03

    Prove core Forge

    Open the exact local URL printed in the console and make one simple fixed-seed generation with no LoRA, Hires. fix, ControlNet, postprocessor, or script.

  4. 04

    Restore the failure class

    Use the same action that failed: startup, tab registration, UI click, generation, save, or update. Do not switch tasks while isolating the cause.

  5. 05

    Enable one half

    From the Installed tab, enable half of the third-party set, choose Apply and restart UI, and run the identical reproduction. Preserve the result.

  6. 06

    Shrink the failing set

    If the half fails, split that half again. If both halves pass alone, restore the confirmed full set and test cross-half pairs instead of declaring the problem random.

  7. 07

    Prove the minimum

    Run the suspected extension alone. For a pair conflict, run A alone, B alone, then A+B. Restart between states because preload, install, and registration happen before the UI is built.

  8. 08

    Escalate with evidence

    Report the smallest failing set, exact commits, first traceback, package versions, disabled-extra and disabled-all results, and a clean-install comparison.

VERIFIED

Done means: you can state whether the first failure belongs to extra, built-in, or core code and reproduce it with one extension or one minimal pair. “It works after reinstalling” is recovery, not diagnosis.

04 · ISOLATION PLANNER

Estimate the halving rounds—then watch for pair conflicts

This calculator gives the maximum rounds for one faulty extension. It does not pretend that every conflict is singular.

ACTIVE THIRD-PARTY EXTENSIONS16
MAXIMUM HALVING ROUNDS4 rounds

After the disabled baseline and full-set reproduction, a single fault among 16 extensions can be narrowed in at most 4 halving rounds.

COMMUNITY-REPORTED

If both halves pass alone but the full set fails, restore the full set and test cross-half pairs. That result points to interaction, dependency, callback-order, or duplicate-identity behavior.

05 · ERROR DECODER

Read the first failing stage, not the loudest last line

Exact strings below are either present in inspected code or preserved in dated original-repository reports.

01Error running preload() for …/extensions/…EXTENSION STARTUP

The extension failed before normal UI construction. Preserve its path and the first nested import, argument, or dependency error.

02Error executing callback ui_tabs_callbackTAB REGISTRATION

The extension reached its tab callback but did not return a usable interface. The tab can be absent even though the extension folder was discovered.

03AttributeError: 'Row' object has no attribute 'style'STALE GRADIO API

Issue #919 records this exact Deforum/Gradio 4 traceback. Match the extension and commit before treating it as your cause.

04TypeError: cannot unpack non-iterable OutputPanel objectFORGE API MISMATCH

Issue #96 records an older Deforum extension expecting a different create_output_panel return contract. A maintained Forge-specific fork is a separate project and still needs current testing.

05KeyError: 'extension-script-name.py'COMPONENT SUBCLASS

Issue #1605 reports a component-class initialization failure across multiple extensions. It remains an open report, not a universal patch instruction for users.

06Duplicate canonical name … Former will be discardedDUPLICATE IDENTITY

Current extension loader code discards one of two extensions that declare the same canonical name. Remove the duplicate from the active test, but preserve both remotes and commits.

07Extension “A” requires “B” which is not installed / disabledDECLARED REQUIREMENT

Current code reads metadata requirements and reports missing or disabled dependencies. Restore the exact declared dependency before evaluating the extension itself.

08No Python error; tab is absentVISIBILITY OR BROWSER

Check Hidden UI tabs, extension documentation, browser console, and whether the extension registers a tab, a script dropdown entry, or settings only.

09Running on local URL appears, then a click failsRUNTIME CALLBACK

Startup passed. Reproduce one click with the browser and Python consoles visible; isolate the first callback or JavaScript error instead of reinstalling the launcher.

06 · COMPATIBILITY PROOF

Installed is not the same as compatible

Compatibility is a chain of progressively stronger evidence tied to exact commits.

UNKNOWN

Folder exists under extensions

Discovery only. The installer, imports, callbacks, UI registration, and target action can still fail.

UNKNOWN

Listed under Extensions → Installed

Forge read extension metadata. This is not a compatibility certificate for the current Gradio, Forge backend, model family, or another extension.

VERIFIED

Starts alone and exposes its expected control

This exact Forge commit, extension commit, environment and launch mode pass startup and registration. The target action still needs proof.

VERIFIED

Target action passes alone

The extension completes the user job in this recorded environment. Do not generalize that result across updates.

VERIFIED

A alone + B alone pass; A+B fails

The minimal pair proves an interaction. Report both remotes, commits, installer dependency changes, callback order and the first error.

STALE SNAPSHOT

Named in the temporary replacement list

The list was opened in September 2024 to help users find Forge-specific replacements. Recheck the linked repository and current issues before installing.

07 · DEPENDENCY BOUNDARY

Do not turn one extension failure into environment drift

Enabled extension installers run before the main UI. Their dependency changes share Forge’s Python environment.

EXTENSIONinstall.py / requirementsMay request shared packages
→
SHARED ENVPython site-packagesUsed by Forge and other extensions
→
UI BUILDPreload and callbacksFirst visible break may be later
PINNED SNAPSHOTGradio 4.40.0

The inspected requirements file pins this version. A manual upgrade is a new environment, not a neutral repair.

CURRENT UIBackup / Restore

The Extensions interface exposes saved config states and creates a pre-update state for selected updates. Keep a separate working-folder backup for consequential work.

SECURITYRemote access is different

Extension management can execute code. Do not weaken access controls simply because the tab is unavailable over a non-local connection.

08 · REPRODUCTION RECEIPT

Capture the state an extension maintainer can reproduce

A tab screenshot without repositories, commits, the first traceback, and disabled-mode results cannot separate old code from a current regression.

Extension conflict receipt
RECORDED0 / 12 recorded
09 · QUESTIONS

Forge extension and Gradio troubleshooting FAQ

Answers stay narrow: original Forge, inspected code, dated reports, and one reproducible environment at a time.

Why is an extension tab missing in Stable Diffusion WebUI Forge?

The extension may have failed during preload or ui_tabs_callback, registered somewhere other than a top-level tab, been hidden under Hidden UI tabs, or targeted another Gradio/Forge generation. Restart, preserve the first console error, and prove the extension alone.

How do I start Forge without third-party extensions?

Add --disable-extra-extensions temporarily to the launch arguments and fully restart. Current code keeps built-in extensions but prevents extra extensions and their installers from loading. Remove the flag after the isolation test.

What is the difference between --disable-extra-extensions and --disable-all-extensions?

--disable-extra-extensions retains built-ins; --disable-all-extensions prevents built-in and third-party extensions. Compare them to distinguish an extra-extension failure from a built-in or core failure.

Do I need to delete the extensions folder?

No. Disable extensions first so the broken state remains reproducible. Deleting folders destroys commit and configuration evidence and is unnecessary for the two official isolation modes.

Why does Forge still fail with --disable-extra-extensions?

A built-in extension, core Forge, browser state, configuration, or runtime may be responsible. Compare --disable-all-extensions. If both modes fail identically, follow the first core error instead of continuing third-party binary search.

Why does the extension appear under Installed but not work?

Installed proves metadata discovery, not successful installer execution, imports, callbacks, Gradio components, or the target action. Use the console to find the first failed stage.

Why does an A1111 extension fail in Forge?

Original Forge changed backend behavior and moved to Gradio 4. An A1111 extension can depend on older UI methods or different helper contracts. Require a current Forge-specific claim from that extension repository and test its exact commit.

Does Forge support all AUTOMATIC1111 extensions?

No current official source provides that guarantee. The maintainer estimated about 70% in one July 2024 test, but that number is a stale snapshot tied to that moment and sample.

What does ui_tabs_callback mean in the error?

The extension was asked to register a UI tab and its callback raised an exception or returned an incompatible result. The missing tab is a consequence; the first nested traceback line identifies the useful failure.

What does “Row object has no attribute style” mean?

It is an obsolete Gradio UI call in the exact Deforum report #919. If your traceback and extension commit match, use that extension’s current Forge-specific repository guidance; do not patch every extension from this one error string.

Why are buttons blank, disabled, or not responding?

Capture both consoles. A Python component-construction error, extension JavaScript error, stale browser asset, or interaction with another extension can produce similar UI symptoms. Prove the extension alone before changing packages.

Should I manually upgrade or downgrade Gradio?

Not as a first diagnostic step. The inspected original Forge commit pins Gradio 4.40.0. Manual package changes create dependency drift and can hide the original extension boundary. Compare a clean pinned environment first.

Should I reinstall Pydantic, FastAPI, or Torch for an extension error?

Only after evidence shows the clean pinned environment itself fails and the extension publisher documents the required change. Extension installers share Forge’s environment, so random package edits can break unrelated tools.

How do I find which of many extensions is broken?

Prove the failure with the full set, then enable half after a clean baseline and restart. Recurse into the failing half. If both halves pass alone, test cross-half pairs because the problem is an interaction.

How many tests does binary search need for 32 extensions?

A single-extension fault can be narrowed in at most five halving rounds after the disabled baseline and full-set reproduction. Pair conflicts may need extra cross-group tests.

Why do two extensions work alone but fail together?

They may share dependencies, register competing callbacks, patch the same function, reuse a canonical name, or assume an order. Prove A, B, and A+B with full restarts and report the first divergent error.

Do I need to restart Forge after enabling or disabling an extension?

Yes for a reliable isolation test. Extension installers, preload hooks, imports, callback registration, and UI construction happen during startup. A browser refresh is not equivalent.

Can a browser hard refresh fix an extension?

It can replace stale JavaScript or CSS after the server has restarted, but it cannot repair Python import, dependency, preload, or callback failures. Check the Python console first.

Why is the Extensions tab itself missing?

Current code builds that core tab and then filters labels selected in Hidden UI tabs. Also inspect whether extension management is restricted by the launch mode. Do not expose a remote instance merely to restore the tab.

Should I use --enable-insecure-extension-access?

Not as a generic fix. Current code explicitly describes it as insecure. Only an operator who understands and controls the instance’s network exposure should evaluate that access decision.

Is the official Forge extension replacement list current?

Treat it as a September 2024 temporary index. It helps locate candidate repositories, but each linked extension needs a fresh commit, issue, security, and compatibility review.

Does Deforum work in original Forge?

Do not answer universally. Old A1111 Deforum produced documented callback errors, while separate Forge-specific Deforum repositories describe themselves as experimental. Test the exact repository and commit against the exact Forge build.

Does SuperMerger work in original Forge?

The local research contains community reports about missing tabs and multi-install behavior, not a current original-Forge guarantee. Check the extension’s own repository and reproduce it alone before relying on it.

Why did an extension stop working after an update?

Freeze both versions and separate the boundary: same extension commit across two Forge commits, or two extension commits on one Forge commit. Keep models, settings, action and environment identical.

Can I update every extension at once and roll back if needed?

That destroys the first-bad boundary. Update one extension at a time after a passing receipt. Current UI has backup/restore controls, but do not assume they replace a complete copy of your working installation.

What should I include in an extension bug report?

Include both repositories and commits, install route, launch arguments, OS, Python, Torch, Gradio, enabled extensions, exact action, first traceback, browser error if relevant, disabled-extra and disabled-all results, minimal set, and clean-install comparison.

When is this no longer an extension problem?

When the same first error survives --disable-all-extensions on a clean original-Forge install. Continue through startup, Python/Torch, memory, model, output, or update diagnostics according to the first failed stage.

10 · EVIDENCE LEDGER

What this guide can—and cannot—claim

Checked 28 August 2026 against original Forge commit dfdcbab. No third-party extension matrix was runtime-tested in this workspace.

VERIFIED Current code and maintainer statements
  • Command arguments define disable-extra, disable-all, and insecure extension access.
  • Extension loader separates built-ins/extras, disabled state, metadata requirements, and duplicate canonical names.
  • Extensions UI exposes Installed, Apply and restart UI, disable modes, Install from URL, and Backup/Restore.
  • Launch preparation runs installers for enabled extensions before the main application.
  • UI construction appends extension tabs and filters labels configured under hidden tabs.
  • Shared options defines Hidden UI tabs and preserved disabled-extension state.
  • Requirements snapshot pins Gradio 4.40.0.
STALE SNAPSHOT Dated compatibility evidence
COMMUNITY-REPORTED Reproductions and user symptoms
UNKNOWN

Current compatibility of an arbitrary extension, its security, supported model families, and interaction with every other extension remain unknown until the exact repositories, commits, environment, and target action pass the baseline above.

PRODUCTOriginal Forge only
TEST STATUSSource-audited; no Forge runtime here
AUTHORForge Field Guide team
REVIEW / REFRESHRecheck on Forge, Gradio, or extension update
NEXT SAFE STEP

Keep the minimal failing folder. Report the boundary.

If the same first error survives --disable-all-extensions, return to the symptom hub and follow the core branch. If one extension or pair owns the failure, report it to that extension repository with the receipt.