Drupal Canvas is becoming more than a convenient visual editing interface. Its recent releases are establishing a new composition layer for Drupal: one where site builders can assemble pages, developers can ship reusable components, and editorial teams can work within controlled design and content boundaries.
That direction was prominent at DrupalCon Rotterdam, held from 28 September to 1 October 2026, where Drupal’s public demonstrations focused on multilingual experiences, React-based components, headless delivery, AI-assisted content operations and digital sovereignty. Canvas 1.12, released on 25 September, is a particularly useful milestone for teams evaluating how those ideas translate into production engineering practice. ([events.drupal.org](https://events.drupal.org/rotterdam2026))
What changed in Drupal Canvas 1.12?
Canvas 1.12 works with Drupal 11.3 and later and can be installed with Composer:
composer require 'drupal/canvas:^1.12'
The release introduces a central Brand Kit for managing site colours and fonts, adds SVG image support for components, improves the page-editing navigation, and fixes several publishing and cache-related problems. It also improves compatibility with Drupal 11.5 and addresses Canvas CLI synchronisation for page templates. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.12.0))
Those features may sound incremental, but they affect three different parts of a Drupal delivery model:
- Design governance: Brand Kit provides a central location for visual tokens rather than leaving every component to define its own values.
- Page architecture: Page templates allow the full page structure to be modelled as a reusable component tree.
- Engineering workflow: CLI and API improvements make it more realistic to move components and page structures between environments.
The important distinction is that Canvas does not replace Drupal’s structured content model. It builds on it. Content entities, fields, permissions, translations, cache metadata and access checks remain Drupal concerns. Canvas supplies a more flexible composition experience on top of those foundations.
Page templates are the significant architectural change
Before page templates, Canvas supported global regions that were associated with the active theme. A site might have a header region, a footer region and other reusable areas, with individual component trees assigned to those regions.
Canvas 1.11 introduced page templates as reusable full-page component trees. Canvas 1.12 continues to refine that model. A page template can contain a header, navigation, footer and other components, but it must contain exactly one page-content marker. Canvas inserts the page’s main content at that marker. ([drupal.org](https://www.drupal.org/node/3618546))
This is closer to a layout composition model than a traditional Drupal theme-region model. The page template owns the complete page structure, while the content page supplies the main content tree.
Why this matters to site builders
A marketing site may need several page types:
- a standard content page with a global header and footer;
- a campaign landing page with a simplified navigation;
- a product page with a product-specific header;
- a microsite page with a different visual treatment;
- a seasonal page with a temporary promotional banner.
With global regions, these variations tend to become conditional theme logic, block visibility rules or duplicated layouts. Page templates make the variation explicit. An editor or site builder can select a page template for a page, while administrators can define the site default.
The result is easier to reason about because the page’s structural dependency is visible as data rather than hidden in a theme’s Twig files.
Why this matters to developers
Page templates also change the integration contract for modules, recipes and distributions. Code that previously worked with Canvas page_region configuration should move towards page_variant. The site-wide default is stored in canvas.settings:default_page_variant. ([drupal.org](https://www.drupal.org/node/3618546))
For an existing site, inspect the current value before changing anything:
drush cget canvas.settings default_page_variant
The exact command output will depend on the site’s active configuration, but the important point is that the default is now a page variant rather than a collection of independent global-region definitions.
For new site templates and recipes, the recommended direction is to provide a complete canvas.page_variant.<id> configuration entity and set the corresponding default in canvas.settings. A page template must include one page-content marker. Providing multiple markers would make the insertion point ambiguous, while omitting the marker would leave Canvas with nowhere to render the page’s main content.
Planning a migration from global regions
Canvas includes an automatic migration path for existing global-region configurations. When database updates run during a Canvas update, or when a site template is installed, Canvas can convert the enabled global regions from the default front-end theme into a page template if the site does not already have a default page template.
The generated template preserves the theme’s page and region markup through the optional canvas_page_template_component module. Existing region component trees are moved into the corresponding template slots. Regions belonging to other themes, and disabled regions, are not migrated. ([drupal.org](https://www.drupal.org/node/3618546))
That migration is useful, but it should not be treated as a substitute for design review. Before updating a production site, create an inventory of:
- enabled themes and their global regions;
- Canvas components assigned to each region;
- pages that require a special header or footer;
- custom Twig templates that assume a particular region structure;
- recipes or deployment code that ships
canvas.page_regionconfiguration; - permissions controlling who can administer page templates.
Run the update in a disposable or staging environment first:
drush updatedb:status
drush updb -y
drush cr
After the update, verify the rendered output rather than only checking that the database update completed successfully. Page-template migrations can be technically successful while still exposing visual problems such as duplicated headers, missing slots, unexpected theme wrappers or incorrect component spacing.
A sensible migration sequence
- Commit the current code and configuration state.
- Export configuration before changing Canvas.
- Update Canvas in a development environment.
- Run database updates and rebuild caches.
- Review the generated default page template in the Canvas editor.
- Test representative pages, including translated pages and unpublished previews.
- Review custom themes and integrations that refer to Canvas regions.
- Promote the tested code and configuration through the normal deployment pipeline.
Do not manually edit active configuration on production as the primary migration strategy. If the page template is intended to be part of the site’s maintained architecture, export and version it so that the result is reproducible.
Using Brand Kit without losing design-system discipline
Brand Kit is one of the more strategically important additions in Canvas 1.12. It provides a central place to manage site colours and fonts, and the release adds support for synchronising Brand Kit colours through canvas.brand-kit.json in the Canvas CLI workflow. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.12.0))
A central visual token store can reduce a common failure mode in visual site builders: every component looks acceptable in isolation, but the site gradually accumulates slightly different blues, greys, font weights and spacing conventions.
However, a Brand Kit is not automatically a complete design system. Teams should still define how tokens are used.
Define semantic roles, not just raw colours
Instead of treating a palette as a list of unrelated hexadecimal values, document semantic roles such as:
- brand-primary;
- brand-secondary;
- surface-default;
- surface-muted;
- text-primary;
- text-muted;
- border-subtle;
- focus-visible;
- success, warning and error.
This allows a rebrand to change the visual value without changing the purpose. It also makes accessibility review more manageable because contrast requirements can be checked against roles rather than arbitrary component-level choices.
Separate global identity from component exceptions
Global colours and fonts should establish the site’s default identity. Components should not silently override those values unless there is a documented reason. A call-to-action component may require a strong contrast treatment, for example, but its use of a token should be intentional and reusable.
Where a component needs a variant, model the variant explicitly. Avoid creating a new colour value every time an editor wants a slightly different button. That approach produces visual drift and makes later brand changes expensive.
Review font loading and performance
Central font management also deserves operational attention. A font choice affects performance, rendering stability, licensing and accessibility. Keep the number of font families and weights small, use modern formats where appropriate, and verify that the production site does not request unused variants.
After changing Brand Kit values, test:
- first render and layout stability;
- headings and body text at narrow widths;
- keyboard focus indicators;
- high-contrast or forced-colour modes;
- translated text with longer strings;
- right-to-left layouts where supported;
- cached pages and authenticated previews.
SVG support is useful, but it is not risk-free
Canvas 1.12 adds SVG image support for SDC and code components. SVG is valuable for logos, icons, diagrams and responsive illustrations because it scales cleanly and can be smaller than a raster equivalent. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.12.0))
It also requires stricter governance than ordinary JPEG or PNG uploads. SVG is XML and can contain scripting or external references if it is not handled safely. Do not assume that a file is safe merely because its extension is .svg.
Review the following before enabling broad SVG uploads:
- which roles can upload SVG files;
- whether uploaded files are sanitised;
- where private and public files are stored;
- which web server MIME type is returned;
- whether the CDN or reverse proxy caches the response;
- whether SVGs are embedded, linked or rendered as image resources.
For many sites, the safest approach is to restrict SVG uploads to trusted roles or to manage approved SVG assets through the code repository. If editors need to upload them, use a well-maintained sanitisation process and test malicious or malformed samples in a non-production environment.
Canvas CLI and environment promotion
Canvas is most useful to development teams when visual work can be promoted consistently between environments. The release notes for 1.12 specifically mention improvements to page-template CLI synchronisation, external component handling and Brand Kit colour synchronisation. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.12.0))
That does not mean every editorial change should be committed to Git. Separate content from site architecture:
- Content: page instances, editorial copy, media and translations.
- Architecture: reusable components, page templates, Brand Kit definitions and recipes.
- Environment configuration: API keys, service endpoints, development settings and deployment-specific values.
A practical workflow is to build reusable components and templates locally, push them to a development site, test them with real content, and then promote the code or synchronised configuration through the normal release process.
Before promoting a component, check:
- its prop schema and required values;
- its responsive behaviour;
- its translation behaviour;
- its cache metadata;
- its access checks for referenced entities;
- its behaviour when optional media or links are empty;
- its compatibility with the supported Drupal core versions.
Canvas 1.11 tightened component-tree validation, including checks around duplicate UUIDs, parent cycles and invalid parent-child relationships. These validations are valuable because a broken component tree should fail validation rather than produce unpredictable rendering behaviour. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.11.0))
Headless and multilingual considerations
The direction presented at DrupalCon Rotterdam places Canvas within a broader Drupal architecture that includes headless delivery and multilingual content. Canvas 1.12 includes documentation work around multilingual Canvas headless implementations and headless entity previews. ([events.drupal.org](https://events.drupal.org/rotterdam2026))
For a multilingual project, do not validate only the default language. Check:
- whether the page template itself is translatable or intentionally shared;
- whether component props are marked as translatable;
- whether translated media is resolved correctly;
- whether optional links remain valid when a translation is incomplete;
- whether language negotiation behaves consistently in previews and production;
- whether the headless client receives the correct language context.
Page structure and content translation should be treated as related but separate concerns. A shared page template may be appropriate for all languages, while certain content components need translated values. In other cases, regional sites may require a different template altogether.
AI features need permissions and review controls
Canvas 1.12 improves Canvas AI chat history and prevents tool changes while a response is in progress. Earlier Canvas releases also introduced configurable agents and tools, including page-building capabilities. ([drupal.org](https://www.drupal.org/project/canvas/releases/1.11.0))
The engineering question is not simply whether an AI assistant can place a component. It is what that assistant is allowed to read, change and publish.
Apply the same governance principles used for any automation that operates on Drupal content:
- give AI-enabled roles only the permissions they need;
- separate layout drafting from publishing;
- avoid granting broad access to private media or sensitive entities;
- review generated component props before publication;
- log changes made through automated tools;
- test failure paths, including unavailable media and denied entity access.
An AI-assisted layout should be treated as a proposed change, not an automatically trusted one. Human review remains necessary for accessibility, brand compliance, legal copy, translation quality and information architecture.
Troubleshooting common Canvas update problems
The page renders the old header or footer
Check whether the page has an explicit page-template selection or is using the site default. Then clear Drupal caches and inspect whether the optional theme page-template component is preserving the old theme regions.
drush cget canvas.settings default_page_variant
drush cr
A component disappears after synchronisation
Check component metadata, prop schemas and dependencies. A component may be unavailable because its code was not deployed, its version metadata changed, or a referenced entity is not present in the target environment.
Brand changes do not appear immediately
Confirm that the change was published, then rebuild caches and inspect the generated page attachments. Canvas 1.12 includes fixes for stale published styles and cache tags, but reverse proxies and CDNs can still retain old responses if their invalidation rules are incomplete.
A translated page fails validation
Review optional links, entity references and component props with language-specific values. Empty optional values should be tested explicitly. Also verify that the component version used by the translated instance remains compatible with the current component definition.
A production-readiness checklist
- Drupal is running a supported core version compatible with the selected Canvas release.
- Canvas is installed and updated through Composer.
- Configuration is exported and committed where it represents site architecture.
- Global-region migration has been reviewed manually.
- Every page template contains exactly one page-content marker.
- Brand tokens have semantic names and documented usage.
- SVG upload permissions and sanitisation have been reviewed.
- Translated and unpublished pages have been tested.
- Headless consumers have been checked if they use Canvas output.
- AI tools are limited by permissions and publishing workflows.
- CDN and reverse-proxy invalidation has been tested.
- Rollback procedures have been rehearsed before production deployment.
Conclusion
Drupal Canvas 1.12 is significant because it connects visual editing with more formal site architecture. Brand Kit addresses design consistency, page templates provide a reusable full-page composition model, and improved CLI and API behaviour make Canvas more suitable for teams that maintain environments through code and controlled deployment.
The safest way to adopt it is not to treat Canvas as an isolated page-builder feature. Treat it as another layer of Drupal architecture. Define ownership, version reusable components, review migration output, protect SVG and AI workflows, and test translations and cached output as part of the release process.
That approach preserves the strengths Drupal has always offered—structured content, permissions, multilingual support and operational control—while giving site builders a more direct way to create and evolve complete page experiences.