Magento 2

To integrate the partytown library functionality into your Magento 2 project, you can use the integration module for Magento2 :

Module for integrating BuilderIO/partytown library functionality into Magento 2 project

Requirements

  • PHP 8.1 or higher
  • Magento 2.4.4 or higher
  • Node.js v16 or higher
  • configured https for the domain ( for correct work of service wokers )

  • Optional : configured reverse proxy for correct loading of some scripts ( see below )

Install

composer config repositories.perspective-magento2-partytown git [email protected]:rostilos/perspective-partytown.git
composer require perspective/magento2-partytown dev-master
php bin/magento setup:upgrade
bin/magento setup:di:compile
php bin/magento setup:static-content:deploy

Next, clear all the cache

Updating partytown lib npm packages

The library files provided by the npm package @qwik.dev/partytown are already added to the module files, but in case you want to update them, it is recommended to do the following :

cd <magento-root>/vendor/perspective/magento2-partytown
npm install ( node v16+ required )
npm run partytown

Configure

In order for scripts to be loaded and executed in a separate thread of the webworker - you need to set the appropriate type ( text/partytown ) when connecting them. Using the example of GMT :

<!-- Google Tag Manager -->
<script type="text/partytown">
  (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer','GTM-XXXXXXXX');
</script>
<!-- End Google Tag Manager -->

Configuration of the module is managed through the admin panel, where you can select the list of available analytics services that will be allocated for execution in the webworker, as well as specify other configurations that affect the functionality of the library

You can find the configurations at the following path :

Stores -> Configuration -> Perspective -> Partytown

Optional: reverse-proxying scripts

Given the peculiarities of the partytown library, you may encounter CORS errors when using certain scripts whose resources do not give the required headers. To avoid this, use reverse-proxying, the peculiarities and possible implementations are described here:

Proxying Requests

You can also try using a self-hosted reverse-proxy solution ( see example here Node.js reverse-proxy example for partytown library and here Nginx reverse-proxy example for partytown library ( for warden ) ).

Troubleshooting

If you encounter errors when using the integration module for Magento 2 - you can also create an issue in the source repository