Configuration and initialization layer for Fusion applications.
Use this package to set up application modules, configure HTTP clients, integrate
with service discovery, enable bookmarks, and wire up telemetry — all with a
single configureModules call.
Most Fusion apps should use
@equinor/fusion-framework-react-appinstead. This lower-level package is for framework-agnostic or advanced scenarios.
| Topic | Description |
|---|---|
| Configure HTTP Clients | Named clients from app config, service discovery, and explicit registration, plus resolution priority |
| Enable Bookmarks | Registering the bookmark module via enableBookmark |
| Testing | The /mock entry point: mockAppModules, AppMockConfigurator, and enableAppManifestMock |
pnpm add @equinor/fusion-framework-appimport { configureModules } from '@equinor/fusion-framework-app';
// Create an initializer with custom configuration
const initialize = configureModules((configurator, { fusion, env }) => {
// Register a named HTTP client
configurator.configureHttpClient('myApi', {
baseUri: 'https://api.example.com',
defaultScopes: ['api://client-id/.default'],
});
});
// Bootstrap the application
const modules = await initialize({ fusion, env });| Concept | Description |
|---|---|
configureModules |
Factory function that creates an async initializer for application modules. |
AppConfigurator |
Internal configurator created by configureModules; registers default modules (event, http, msal) and reads endpoint config. |
IAppConfigurator |
Public interface for the configurator, used when typing configuration callbacks. |
AppModuleInitiator |
Callback signature accepted by configureModules for user-supplied setup. |
AppEnv |
Environment descriptor containing the app manifest, config, and optional basename. |
enableBookmark |
Helper to enable the bookmark module (import from @equinor/fusion-framework-app/enable-bookmark). |
mockAppModules |
Runs the real module pipeline against deterministic fakes for tests (import from @equinor/fusion-framework-app/mock). |
Returns an async initializer (args: { fusion, env }) => Promise<AppModulesInstance>.
The optional callback receives an IAppConfigurator and the Fusion/env args,
giving you access to:
configurator.configureHttpClient(name, options)— register a named HTTP client with explicit base URI and scopes.configurator.configureHttp(...)— low-level HTTP module configuration.configurator.useFrameworkServiceClient(serviceName, options?)— register a client resolved via Fusion service discovery.
| Export path | What it provides |
|---|---|
@equinor/fusion-framework-app |
configureModules, AppConfigurator, IAppConfigurator, all type aliases |
@equinor/fusion-framework-app/enable-bookmark |
enableBookmark function |
@equinor/fusion-framework-app/mock |
mockAppModules, AppMockConfigurator, enableAppManifestMock |
The AppConfigurator can register named HTTP clients from several sources —
application config endpoints, service discovery, or explicit registration —
and you retrieve one at runtime with framework.modules.http.createClient(name).
const initialize = configureModules((configurator) => {
configurator.useFrameworkServiceClient('people');
});See Configure HTTP Clients for auto-registration from
app.config.ts, explicit registration, and resolution priority when a client
is configured in more than one place.
The bookmark module allows applications to save and restore application state.
Important: Import
enableBookmarkfrom the app-level package, not from@equinor/fusion-framework-module-bookmarkdirectly.
import { enableBookmark } from '@equinor/fusion-framework-app/enable-bookmark';
const initialize = configureModules((configurator) => {
enableBookmark(configurator);
});See Enable Bookmarks for payload generator cleanup behavior.
Import from @equinor/fusion-framework-app/mock to run an application's real
module pipeline in tests — the real event/http/msal modules, the real
AppConfigurator configuration pipeline, and real lifecycle — while only the
boundaries that reach outside the process are substituted with deterministic
fakes. This entry point has no dependency on Vitest or any other test runner.
import { mockAppModules } from '@equinor/fusion-framework-app/mock';
const manifest = { appKey: 'my-app', displayName: 'My App', description: 'My app', type: 'standalone' } as const;
const modules = await mockAppModules(undefined, { manifest });See Testing for AppMockConfigurator, enableAppManifestMock,
and customizing the mocked parent's service discovery.
| Type | Purpose |
|---|---|
AppEnv |
Environment descriptor (manifest, config, basename, props) |
AppModuleInitiator |
Configuration callback signature for configureModules |
AppModuleInit |
Full factory type wrapping AppModuleInitiator |
AppModuleInitArgs |
Arguments passed to the returned initializer |
AppRenderFn |
Render function for mounting an app into a DOM element |
AppManifest |
Application manifest metadata (re-export) |
AppConfig |
Environment-specific config (re-export) |
AppModules |
Union of default application modules (re-export) |
AppModulesInstance |
Resolved module instances after initialization (re-export) |
- Fusion Framework documentation
@equinor/fusion-framework-react-app— React wrapper with hooks and providers