Skip to content

Changelog - 2026-09-03

Deprecated boot API removed

Breaking Change

In one line. The deprecated runtime boot shims - boot(), bootOptions, IBootReport, IBootableApplication, BindingNamespaces.BOOTERS - are gone; nothing in the framework calls or exports them anymore.

The problem it solves

boot() became a no-op on 2026-09-02: every call still compiled and warned once, but did nothing. A shim that never fails hides the exact moment a caller should have switched to configs.artifacts. Removing it turns that silent no-op into a compile error, which is the point where a caller actually notices.

typescript
// Compiled and warned once, but did nothing, since 2026-09-02
await application.boot();
await application.start();

What changed

  • BaseApplication.boot() is removed, along with the private hasWarnedBootDeprecated flag it used to warn once per process. Call application.start() alone.
  • BaseApplication no longer implements IBootableApplication - only IRestApplication.
  • IApplicationConfigs.bootOptions is removed, in @venizia/ignis and in the kernel's structural mirror (IApplicationBootOptions, IApplicationArtifactOptions).
  • @venizia/ignis-boot no longer exports IBootOptions, IArtifactOptions, IBootReport, IBootPhaseReport, TBootPhase, BootPhases or IBootableApplication. packages/boot/src/common/ is deleted; the package now exports only the build-time artifact index generator.
  • BindingNamespaces.BOOTERS is removed - nothing has written to it since the runtime booters left on 2026-09-02.
  • The dead BaseCrudService placeholder is removed from @venizia/ignis-kernel (base/services/base-crud.ts was an empty export {} left over from an earlier rename).

Who is affected

  • Applications that call await application.boot(). Delete the line - initialize() and start() are unchanged.

  • Configs that set bootOptions. Delete the key; it has been ignored since 2026-09-02.

  • Classes that implements IBootableApplication or override boot(). Delete both - the interface and the base method no longer exist.

  • Everyone already on configs.artifacts. No action needed - see the 2026-09-02 changelog if you have not migrated yet.

  • Upgrading nx-seller? Follow the migration guide - it lists every file and the order to fix them.

  • Known internal call sites and overrides, for coordination (21 across BANA/nx-seller). Every row fails to compile until it's deleted. 3 call .boot(), 2 set bootOptions, and 16 declare override async boot() - none of the 16 calls super.boot() and every one returns the literal empty report, so the fix is to delete the whole method, not just the override keyword (keeping an override with no base method to override is TS4113):

    FileLineSite
    packages/search/src/migrations/bootstrap.ts104await app.boot();
    packages/core/src/helpers/bootstraps/migration.ts31await application.boot();
    packages/core/src/helpers/bootstraps/worker.ts34await application.boot();
    packages/core/src/helpers/bootstraps/migration.ts25bootOptions: {}
    packages/core/src/common/app-config.ts15bootOptions: {
    packages/search/src/migrations/bootstrap.ts61override async boot()
    packages/commerce/src/application.ts169override async boot()
    packages/finance/src/application.ts47override async boot()
    packages/helpdesk/src/application.ts204override async boot()
    packages/identity/src/application.ts100override async boot()
    packages/inventory/src/application.ts121override async boot()
    packages/invoice/src/application.ts113override async boot()
    packages/ledger/src/application.ts83override async boot()
    packages/licensing/src/application.ts36override async boot()
    packages/outreach/src/application.ts20override async boot()
    packages/payment/src/application.ts24override async boot()
    packages/pricing/src/application.ts66override async boot()
    packages/sale/src/application.ts161override async boot()
    packages/search/src/application.ts68override async boot()
    packages/signal/src/application.ts24override async boot()
    packages/taxation/src/application.ts76override async boot()

Breaking changes

WARNING

Anything that still calls boot(), reads bootOptions, or imports IBootReport, IBootableApplication, IArtifactOptions or IBootOptions from @venizia/ignis-boot no longer compiles.

Before:

typescript
// index.ts
await application.boot();
await application.start();

// application.ts
export const configs: IApplicationConfigs = {
  path: { base: '/api', isStrict: true },
  bootOptions: {},
};

export class Application extends BaseApplication implements IBootableApplication {
  override async boot() {
    return super.boot();
  }
}

After:

typescript
// index.ts
await application.start();

// application.ts
export const configs: IApplicationConfigs = {
  path: { base: '/api', isStrict: true },
  artifacts: GeneratedArtifacts,
};

export class Application extends BaseApplication {}

Migration:

  1. Delete every await application.boot(); call - start() already runs the full sequence.
  2. Delete bootOptions from the config, and any override boot() or implements IBootableApplication.
  3. If you have not already, set configs.artifacts to a generated index - see Registering artifacts.

Details

SymbolChangePackage
BaseApplication.boot(), hasWarnedBootDeprecatedRemovedcore-server
BaseApplication implements IBootableApplicationRemovedcore-server
IBootOptions, IArtifactOptions, IBootReport, IBootPhaseReport, TBootPhase, BootPhases, IBootableApplicationRemovedboot
IApplicationConfigs.bootOptionsRemovedkernel
IApplicationBootOptions, IApplicationArtifactOptions (kernel mirror)Removedkernel
BindingNamespaces.BOOTERSRemovedkernel
base/services/base-crud.ts (dead BaseCrudService placeholder)Removedkernel
ArtifactScanner.scan()'s ignore optionFixed - now merges with DEFAULT_IGNORE instead of replacing itboot

ArtifactScanner.scan()'s ignore option merging instead of replacing was a latent bug caught while touching this file - nobody passes --ignore today, in this repo or in BANA, so its blast radius is zero.