# Plugins

Plugins are modular extensions that add capabilities to your AppKit application. They follow a defined lifecycle and have access to shared services like caching, telemetry, and streaming.

For complete API documentation, see the [`Plugin`](./docs/api/appkit/Class.Plugin.md) class reference.

## Using plugins[​](#using-plugins "Direct link to Using plugins")

Configure plugins when creating your AppKit instance:

```typescript
import { createApp, server, analytics, genie, files, jobs } from "@databricks/appkit";

const AppKit = await createApp({
  plugins: [
    server({ port: 8000 }),
    analytics(),
    genie(),
    files(),
    jobs(),
  ],
});

```

For complete configuration options, see [`createApp`](./docs/api/appkit/Function.createApp.md).

## Plugin phases[​](#plugin-phases "Direct link to Plugin phases")

Plugins initialize in three phases:

* **Core**: Reserved for framework-level plugins. Initializes first.
* **Normal**: Default phase for application plugins. Initializes after core.
* **Deferred**: Initializes last with access to other plugin instances via `config.plugins`. Use when your plugin depends on other plugins (e.g., Server Plugin).
