Skip to main content

Migrating to v7

v7 realigns the package names so that dockview is the framework-agnostic JavaScript package and each framework has a matching dockview-<framework> package. There are also a handful of breaking API changes that affect every consumer.

Packagev6v7
dockview-coreJavaScript core (public)JavaScript core — internal implementation detail
dockviewReact bindingsJavaScript (re-export of dockview-core) — recommended
dockview-reactRe-export of dockviewReact bindings
dockview-vueVue bindingsVue bindings (now consume dockview)
dockview-angularAngular bindingsAngular bindings (now consume dockview)

React users — action required

The React bindings moved from dockview to dockview-react. In v7 the dockview package is the JavaScript library (a re-export of dockview-core), so it no longer exports the React components.

The React names are simply gone — core names like DockviewComponent still resolve from dockview, but the React components do not:

  • TypeScript: error TS2305: Module '"dockview"' has no exported member 'DockviewReact'
  • Runtime (JS): React throws "Element type is invalid … got: undefined" when rendering <DockviewReact />, because the import resolves to undefined.

Install and import from dockview-react:

- npm install dockview
+ npm install dockview-react
- import { DockviewReact } from 'dockview';
+ import { DockviewReact } from 'dockview-react';
- @import 'dockview/dist/styles/dockview.css';
+ @import 'dockview-react/dist/styles/dockview.css';

A one-shot codemod for a source tree (uses perl for cross-platform in-place editing — works on macOS and Linux):

grep -rl "from 'dockview'" src | xargs perl -pi -e "s/from 'dockview'/from 'dockview-react'/g"

dockview-core is now considered an internal implementation detail. Install the dockview package instead — it re-exports the entire core API.

- npm install dockview-core
+ npm install dockview
- import { DockviewComponent } from 'dockview-core';
+ import { DockviewComponent } from 'dockview';
- import 'dockview-core/dist/styles/dockview.css';
+ import 'dockview/dist/styles/dockview.css';

dockview-core continues to be published and will keep working, but new code should depend on dockview.

dockview-core no longer bundles every feature

In v6, dockview-core shipped with all built-in features registered. In v7 some built-in features are no longer part of bare dockview-core:

  • tab group chips (chip rendering + the onDid*TabGroup events)
  • context menus (the built-in tab / chip right-click menus)
  • advanced drag-and-drop (onWillDragPanel / onWillDragGroup / onWillDrop hooks, custom drag ghost / drop overlay)
  • keyboard accessibility (keyboard navigation / focus management / screen-reader announcements)

These now live in the dockview package, which enables them automatically. dockview-core is an internal package — use dockview (or a framework package — dockview-react / -vue / -angular, which all consume dockview). Nothing throws if you stay on bare dockview-core — the affected features simply do nothing — and a one-time console.warn steers you to dockview.

Removed and changed APIs

These affect every consumer regardless of framework.

rootOverlayModel removed

The rootOverlayModel option has been removed. It was a single static overlay model applied to the root drop target. Drop-overlay shaping is now driven by dropOverlayModel and dndEdges:

- new DockviewComponent(el, {
- rootOverlayModel: { size: { value: 100, type: 'pixels' } },
- });
+ new DockviewComponent(el, {
+ dropOverlayModel: (params) => ({ size: { value: 100, type: 'pixels' } }),
+ });

dropOverlayModel shapes the overlay per drop target; return undefined to keep the default for that target. It does not dispatch the 'edge' target — if you used rootOverlayModel purely to size the outer edge overlay, use dndEdges instead.

onDidActivePanelChange payload changed

onDidActivePanelChange now emits an event object instead of the panel directly, so it can also report whether the change came from a user interaction or an API call.

- api.onDidActivePanelChange((panel) => {
- console.log(panel?.id);
- });
+ api.onDidActivePanelChange((event) => {
+ console.log(event.panel?.id);
+ console.log(event.origin); // 'user' | 'api'
+ });

The event shape is:

interface DockviewActivePanelChangeEvent {
readonly panel: IDockviewPanel | undefined;
readonly origin: 'user' | 'api';
}

The handler argument is now an object, so panel.id / panel.api read as undefined (no error is thrown). Replace panel with event.panel.

The group-level group.api.onDidActivePanelChange is scoped to a single group; it keeps emitting the panel and additionally carries origin (its payload type is DockviewGroupActivePanelChangeEvent). This is additive — handlers reading event.panel keep working.

Renamed types and events

These are pure renames — the shape is unchanged, only the identifier moved.

v6v7Notes
onUnhandledDragOverEventonUnhandledDragOverEvent on the Dockview / Paneview API — dropped the redundant Event suffix
PaneviewDropEventPaneviewDidDropEventNow matches DockviewDidDropEvent
DockviewMaximizedGroupChangedDockviewMaximizedGroupChangeEventNow matches every other …ChangeEvent payload type
DockviewGroupPanelFloatingChangeEventDockviewGroupPanelLocationChangeEventPayload of onDidLocationChange — name now reflects the event
AddComponentOptionsAddGridviewComponentOptionsNow matches AddSplitviewComponentOptions / AddPaneviewComponentOptions
ContraintsConstraintsTypo fix (this type also feeds AddPanelOptions)
- api.onUnhandledDragOverEvent((event) => event.accept());
+ api.onUnhandledDragOver((event) => event.accept());

Removed APIs

RemovedUse instead
IDockviewGroupPanelPublicIDockviewGroupPanel (it was a dead alias of it)
DockviewComponent.contextMenuControllerDockviewComponent.contextMenuService, or the documented context-menu options
DockviewAngularComponentOptions (Angular)DockviewAngularOptions
AngularComponentFactory.createComponent() (Angular)createDockviewComponent()

Vue / Angular users

No source changes required — keep installing dockview-vue / dockview-angular and importing from them. Internally these now depend on dockview rather than dockview-core; this is transparent to consumers.

CDN / UMD users

The React global moved from the dockview UMD bundle to the dockview-react bundle:

- https://cdn.jsdelivr.net/npm/dockview@7/dist/dockview.js
+ https://cdn.jsdelivr.net/npm/dockview-react@7/dist/dockview-react.js

The dockview UMD bundle now contains the JavaScript API only.


See What's new in v7 for the full list of new features in this release.

Newsletter