Web Survey Widget Performance and Technical Characteristics
This article explains how the Pisano Web Survey Widget loads and behaves after it is embedded on a website. It also covers its performance characteristics, browser storage usage, implementation recommendations, and technical behavior.
What You Will Find Here
This article helps you:
- Understand the widget initialization process
- Review the widget's performance characteristics
- Follow implementation recommendations
- Review production assets
- Understand browser storage usage
- Review the widget's technical characteristics
What Can You Do Here?
Widget Initialization Process
The Pisano Web Survey Widget is initialized through a lightweight inline embed snippet that loads the widget runtime from the Pisano CDN. The loading process is designed to minimize the widget's impact on the host website by loading only the resources required during each stage of initialization.
Initialization Flow
- Add the lightweight inline Pisano embed snippet to your website.
- The embed snippet creates the
Pisano.qcommand queue. - The snippet injects the widget runtime from:
[https://web.pisano.com.tr/scripts/widget/widget.js](https://web.pisano.com.tr/scripts/widget/widget.js) - The downloaded
widget.jsfile loads:- Runtime configuration
- Asset path setup
- Initialization bundle
- Initialize the widget by executing:
Pisano('boot', 'PSN-xxx') - The widget creates a Redux store.
- A fixed position container is mounted on
document.body. - The Widget UI is loaded through lazy loading.
- The widget retrieves its configuration from the Pisano API.
- After the configuration is loaded, the survey trigger button is rendered.
- Survey questions, translations, and chat resources are downloaded only after a visitor interacts with the widget.
Initialization Characteristics
- The embed snippet is approximately 350 bytes.
- The widget runtime is loaded from the Pisano CDN.
- Code splitting reduces the amount of JavaScript loaded during initialization.
- Lazy loading postpones survey resources until they are needed.
- The widget runs inside an isolated DOM container to minimize its impact on the host page.
Performance Impact
The Web Survey Widget is designed to minimize its impact on the host website during initialization and normal operation. Most resources are downloaded only when they are required, and no unnecessary background activity occurs after the widget is loaded.
| Concern | Assessment |
| Host page rendering | Minimal. The widget runs inside an isolated #psn-widget-container. |
| Initial network transfer | Approximately 2.6 MB gzip during the first load. This includes widget.js, the widget chunk, CSS, and the configuration API request. |
| Survey UI transfer | Approximately 500 KB to 2.8 MB gzip. These resources are downloaded only after a visitor opens the survey. |
| Ongoing background activity | None. The widget performs no polling, analytics collection, or ad tracking. |
| Main thread blocking | Moderate during the initial script parsing process. No requestIdleCallback deferral is used. |
| Repeat visits | Significantly faster because hashed production assets remain cached for one year. |
The initial network transfer occurs only during the first load. Repeat visits benefit from long term browser caching, which significantly reduces download time.
Implementation Recommendations
Follow these recommendations when deploying the Web Survey Widget.
- Place the embed snippet before the closing
</body>tag. - Use the following method if you want to defer widget initialization:
Pisano('onLoad', ...) - Ensure your Content Security Policy allows requests to:
web.pisano.com.tr
These recommendations help ensure the widget loads correctly and behaves as expected across supported environments.
Production Assets
The Web Survey Widget downloads different assets throughout its lifecycle. Some assets are required during initialization, while others are loaded only after a visitor interacts with the widget.
| Asset | Gzip Transfer | Loaded When |
| Inline snippet | ~350 B | Immediately |
| widget.js | ~2.5 MB | Script injection |
| Widget chunk | ~131 KB | Widget boot |
| Widget configuration API | ~2 KB to 10 KB | Widget boot |
| Widget button CSS | ~11 KB | Widget boot |
| Flow, Translate, and vendor assets | ~500 KB to 2.8 MB | Survey open |
Loading assets on demand helps reduce the amount of data transferred during initialization. Survey resources are downloaded only when a visitor opens the widget.
Browser Storage Footprint
The Web Survey Widget stores a small amount of data in the browser to support sessions, widget state, channels, and incomplete surveys.
Typical browser storage usage is approximately 1 KB to 5 KB.
Storage usage may reach 50 KB when multiple widgets are present or several incomplete surveys are stored.
| Storage Key | Typical Size |
| PisanoCacher::PISANO_SESSION | ~80 to 120 B |
| PisanoCacher::DEVICE_ID | ~50 B |
| PisanoCacher::widgetStores | ~200 to 500 B per widget |
| PisanoCacher::linkChannels | ~100 to 300 B per channel |
| PisanoCacher::INCOMPLETE_SURVEYS | ~200 B to several KB |
Technical Characteristics
The Web Survey Widget is designed to operate independently from the host website. Its implementation avoids common tracking mechanisms and limits its impact on the surrounding page.
The widget:
- Does not create third party cookies.
- Does not perform cross site tracking.
- Does not use advertising or marketing pixels.
- Does not use analytics.
- Does not use ad trackers.
- Does not modify the host page layout outside the widget container.
Limits / Notes
Keep the following considerations in mind when planning an implementation:
- Survey resources are downloaded only after user interaction.
- Cached production assets significantly improve loading performance on repeat visits.
- Browser storage usage depends on the number of widgets and any incomplete surveys stored in the browser.
FAQs
Does the widget significantly affect host page performance?
No. The widget is designed to minimize its impact on the host website by using code splitting, lazy loading, and an isolated DOM container. Survey resources are downloaded only after a visitor interacts with the widget.
How can widget initialization be deferred?
Place the embed snippet before the closing tag and initialize the widget by using:
Pisano('onLoad', ...)
This delays widget initialization until your application is ready.
Does the widget create third party cookies, perform cross site tracking, or use advertising trackers?
No. The widget does not create third party cookies, perform cross site tracking, use advertising or marketing pixels, use analytics, use ad trackers, or modify the host page layout outside the widget container.