This module allows you to integrate external JavaScript-rendered components, like those from Vue or React, into your Canvas pages. It stores component details within Drupal and then renders them using custom JavaScript or Custom Elements.
This module adds a new component source plugin to Canvas that allows you
to integrate external JavaScript-rendered components (like Vue, React, or
Nuxt components) into Canvas pages.
The External JavaScript component source works by:
- Storing component metadata (props, slots) within Canvas component configuration entities
- Rendering components using custom JavaScript, either provided as custom Javascript files or loaded via the Custom Elements previews.
Requirements
- Drupal 11.2+
- Canvas module
- Optional: Custom Elements module
Usage options
- JavaScript may be used to render client-side within Drupal, either via custom JavaScript or Custom Elements previews
- Fully decoupled - via Custom Elements and Lupus Decoupled pages are provided via API and can be rendered fully decoupled, with full server-side rendering support (when provided by the frontend framework)
Related modules
- The Custom Elements module provides a pluggable component-preview system that may be used to render components. Atm it comes with support for Nuxt. When paired with Lupus CE Renderer provides a full-page API for Canvas pages.
- Lupus Decoupled builds upon the Custom Elements and Lupus CE Renderer modules to provide an easy to use setup with fully-decoupled frontend rendering.
Useful frontend packages
- fullfatthings/drupal-canvas-react helps exposing React components to Canvas and generates a
component-index.jsonfile to use with this module. - The nuxt-component-preview Nuxt-module exposes Vue components to Canvas and generates a
component-index.jsonfile to use with this module.
Example frontend
- Nuxt example from DrupalCon Vienna 2025 session
馃挕Compatibility note
The Canvas External JavaScript Components module builds upon the
Canvas ComponentSource API, which is not yet declared stable. This is
mitigated by the following process:
- Each release of Canvas External JavaScript Components is only declared
compatible with the current Canvas minor version (e.g. 1.4.*), not with any
future versions. - When a new Canvas version is released, the module is updated and any
compatibility issues are checked and addressed before a compatible release is
published. - As a result, you may have to wait a few days before a compatible version for a new Canvas minor version is out. But this ensures updates are always safe and tested.
Depends on
Dependencies of the latest stable release
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.2.3 | Stable | 11 | Compatible with Canvas 1.5 to Canvas 1.10 | Aug 17, 2026 | |
| 1.2.2 | Stable | 11 | Compatible with Canvas 1.5 to Canvas 1.9 | Aug 6, 2026 | |
| 1.2.1 | Stable | 11 | Compatible with Canvas 1.5 to Canvas 1.8 | Jul 21, 2026 | |
| 1.2.0 | Stable | 11 | Canvas 1.5 compatible release, requiring Canvas 1.5 | Jun 12, 2026 | |
| 1.1.0 | Stable | 11 | Canvas 1.4 compatible release | May 18, 2026 | |
| 1.0.0 | Stable | 11 | adds realtime update support | Apr 14, 2026 | |
| 1.0.0-beta11 | Pre-release | 11 | Mar 26, 2026 | ||
| 1.0.0-beta10 | Pre-release | 11 | adds Canvas 1.3 compatibility | Mar 21, 2026 | |
| 1.0.0-beta9 | Pre-release | 11 | Mar 9, 2026 | ||
| 1.0.0-beta8 | Pre-release | 11 | supports Canvas 1.2.* | Mar 6, 2026 | |
| 1.0.0-beta7 | Pre-release | 11 | improved UI for managing ext-js components, canvas 1.1 compatibility | Feb 13, 2026 | |
| 1.0.0-beta6 | Pre-release | 11 | added a UI for managing ext-js components and registering sources | Feb 12, 2026 | |
| 1.0.0-beta5 | Pre-release | 11 | enables support for image and video props | Jan 14, 2026 | |
| 1.0.0-beta4 | Pre-release | 11 | Compatible with Canvas >1.0.2 and 1.0.3 | Jan 13, 2026 | |
| 1.0.0-beta3 | Pre-release | 11 | Compatible with Canvas >1.0.1 | Dec 18, 2025 | |
| 1.0.0-beta2 | Pre-release | 11 | Compatible with Canvas >1.0.0 | Dec 5, 2025 | |
| 1.0.0-beta1 | Pre-release | 11 | Compatible with Canvas 1.0.0-rc5. | Nov 27, 2025 | |
| 1.0.0-alpha3 | Pre-release | 11 | compatible with Canvas >1.0.0-rc4 | Nov 24, 2025 | |
| 1.0.0-alpha2 | Pre-release | 11 | fix canvas annotations to work in slots | Oct 29, 2025 | |
| 1.0.0-alpha1 | Pre-release | 11 | Oct 15, 2025 | ||
| 1.0.x-dev | Dev | 11 | development snapshot | Oct 12, 2025 | |
| 1.x-dev | Dev | 11 | Sep 30, 2025 |