Swup plugin for auto re-running of included scripts.

Downloads in past


391.1.03 years ago4 years agoMinified + gzip package size for @swup/scripts-plugin in KB


Swup Scripts Plugin
This plugin re-runs any scripts in head/body on swups contentReplaced event. This can be helpful when the scripts included in the page are outside of the control of the developer and needs to be re-evaluated after content replace.
Plugin will ignore any script tags with attribute data-swup-ignore-script. It is also necessary to add this attribute to any scripts loading and enabling swup, to prevent creating of multiple instances of swup and prevent unnecessary swup class evaluation.
Warning: This plugin is only intended as last resort for projects with little control over what scripts are included. Re-running your scripts without destroying remains of previous run can lead to memory leaks and breaking of the page. Use at own risk.


This plugin can be installed with npm
npm install @swup/scripts-plugin

and included with import
import SwupScriptsPlugin from '@swup/scripts-plugin';

or included from the dist folder
<script src="./dist/SwupScriptsPlugin.js"></script>


To run this plugin, include an instance in the swup options.
const swup = new Swup({
  plugins: [new SwupScriptsPlugin()]


head and body

Plugin has two boolean options - head and body. Both are by default set to true. Options can be used to disable re-running of scripts globally in head or body of the page.
new SwupScriptsPlugin({
  head: true,
  body: true


In some situations, you might not have control over inserted scripts into the page (through GTM for example). In that case, switching optin option to true will only reload the scripts explicitly marked with data-swup-reload-script attribute.
new SwupScriptsPlugin({
  optin: false