Skip to main content
drupalreleases
Release: Cms 2.2.3 — Update released for Drupal core (2.2.3)! Release: Easy Breadcrumb 2.0.11 — Minor update available for module easy_breadcrumb (2.0.11). Release: Bootstrap 8.x-3.42 — Minor update available for theme bootstrap (8.x-3.42). Release: Editoria11y Accessibility Checker 3.0.10 — Minor update available for module editoria11y (3.0.10). Release: Editoria11y Accessibility Checker 2.2.24 — Minor update available for module editoria11y (2.2.24). Release: Leaflet 10.4.13 — Minor update available for module leaflet (10.4.13). Release: Flag 5.1.1 — Minor update available for module flag (5.1.1). Release: MCP Sentinel 2.33.0 — Minor update available for module mcp_sentinel (2.33.0). Module Revived: Bootstrap 8.x-3.41 — Theme bootstrap updated after 6 months of inactivity (8.x-3.41). Security Coverage: Component Library — Module component_library now has official Drupal security advisory coverage.

Page Swap

Security covered Drupal 10–11
View on drupal.org

Page Swap allows site editors to seamlessly promote a new version of a page to a live URL without affecting DNS or cache configurations. You can select an original page and a replacement, review the changes, and apply the swap with a single click, instantly transferring the URL, menu links, and optionally the published status. This is ideal for zero-downtime content updates, especially for landing and campaign pages.

Page Swap gives site editors a safe, structured way to promote a new version of a page to a live URL without touching DNS, cache configuration, or CMS infrastructure. Select an original page and a replacement, review a full execution plan, and apply the swap in a single click — the replacement instantly inherits the original's public URL alias, all menu items pointing to it, and optionally its published status. If the original page is configured as the site homepage, 403, or 404 error page, those system settings are updated as well.

This is particularly useful for content teams that build new landing pages or campaign pages alongside the live site and need a precise, zero-downtime handoff.

Features

  • Path alias swap — The original page's URL alias is moved to the replacement. The original can be assigned a new alias or left without one.
  • Menu link retargeting — All menu items pointing to the original page are updated to point to the replacement, preserving position, parent, and the full hierarchy of child links.
  • System page awareness — If the original page is configured as the site homepage, the 403 access denied page, or the 404 not found page (under Basic site settings), individual checkboxes let the editor update each of those settings during the swap.
  • Side-by-side visual preview — Before confirming, both pages are rendered in iframes so the editor can visually compare them.
  • Execution plan — A detailed summary of every action to be taken (alias movement, menu updates, system page changes, publish state) is shown before the swap is applied. Nothing happens until the editor clicks Apply Page Swap.
  • Publish state sync — Optionally, publish the replacement page during the swap execution (if not already published).
  • Redirect & Pathauto integration — When the Redirect module is present, automatic redirect creation is temporarily suppressed during the swap to prevent unwanted redirect chains. When Pathauto is present, it is prevented from overwriting the freshly swapped alias on the replacement node.
  • Support node revisions — Page swap adds new revision entries to both nodes being affected: the original being swapped, and the replacement, delivering a clear administrative indication that the change occurred.
  • Developer event — Dispatches a page_swap.executed event after every successful swap, giving other modules a clean integration point.
  • Swap History submodule — The optional page_swap_history submodule maintains a timestamped, per-user log of every swap operation in a dedicated administration tab.

Post-Installation

  1. Enable page_swap. Optionally enable the page_swap_history submodule if you want an audit log of past swaps.
  2. Go to People → Permissions and grant the Use Page Swap permission to the appropriate administrator roles. The permission is marked "restrict access" because the operation has irreversible effects on public URLs and site structure.
  3. Navigate to Configuration → Content authoring → Page Swap (/admin/config/content/page-swap).
  4. Type the title of the Original page in the first autocomplete field and the Replacement page in the second.
  5. Click Show Preview to load the side-by-side iframes and the Execution Plan.
  6. Review the plan. Configure the optional fields (new alias for the original, publish state sync, system page checkboxes if applicable).
  7. Click Apply Page Swap.

No additional configuration forms, content types, or text format changes are required.

Additional Requirements

  • Drupal 10 or 11
  • Core path_alias module (enabled by default in Drupal 10+)
  • Core menu_link_content module (enabled by default in Drupal 10+)

AI-Assisted Development

Parts of this module were developed with the assistance of AI coding tools — specifically Google Jules (Gemini 3 Flash) and GitHub Copilot (Claude Sonnet 4.5). All code produced by these tools was thoroughly reviewed by the author, tested, and edited as needed before being included in the module. AI assistance was used to accelerate implementation; architectural decisions, security review, and final code quality remain the responsibility of the human author.

Depends on

Dependencies of the latest stable release

  • menu_link_content Drupal core
  • path_alias Drupal core

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
6
Tracked since
May 2026
Latest release
2 weeks ago
Releases (12 mo)
6 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
1.0.5 Stable 10–11 Sep 20, 2026
1.0.4 Stable 10–11 Sep 3, 2026
1.0.3 Stable 10–11 Aug 24, 2026
1.0.2 Stable 10–11 May 30, 2026
1.0.1-beta1 Pre-release 10–11 May 24, 2026
1.0.0-beta1 Pre-release 10–11 May 9, 2026