Main Header

Third-party libraries

Updated on July 30, 2026

SignalPress bundles most dependencies locally and isolates PHP packages with namespace prefixing so they do not collide with WordPress or other plugins.

Overview: Extending SignalPress. Pro architecture: Free and Pro architecture.

Design goals

GoalApproach
Avoid version conflictsPHP-Scoper prefix (SignalPressProVendor\...) in Pro
Work offline / without CDNAdmin UI assets bundled under assets/
Minimize globalsPro JS debug bundle compiles Consola privately — no window.consola
Load remote SDKs only when neededPostHog browser SDK from configured host when tracking is enabled

Bundled libraries (production)

LibrarySignalPress useWhere
[Tabulator](https://tabulator.info/)Paginated delivery logs, Local records, System Logs tablesFree plugin assets/
[Marked](https://marked.js.org/)Render Markdown README in Help tabsFree plugin assets/
[Highlight.js](https://highlightjs.org/)Syntax highlighting in Help code blocksFree plugin assets/
[Symfony VarDumper](https://symfony.com/doc/current/components/var_dumper.html)Pro PHP sp() formattingPro vendor-prefixed/
[Clockwork](https://underground.works/clockwork/)Pro DevTools PHP metadataPro vendor-prefixed/
[Consola](https://github.com/unjs/consola)Pro JavaScript sp() console APICompiled into Pro debug bundle

License files ship alongside bundled assets where required.

Pro PHP dependencies

SignalPress Pro loads:

PHP

require_once SIGNALPRESS_PRO_PATH . 'vendor-prefixed/autoload.php';

Use SignalPressProVendor\ namespaces in Pro code — never assume unprefixed Symfony or Clockwork classes exist globally.

Example from Pro debugging:

PHP

use SignalPressProVendor\Symfony\Component\VarDumper\Cloner\VarCloner;

Pro JavaScript debug bundle

Pro debugging ships a private compiled bundle (signalpress-debug.js) built with esbuild in development. Production WordPress loads only the compiled file — not Consola as a separate script handle.

Basic tier uses signalpress-basic-debug.js in the free plugin (simple console output).

Remote / conditional loads

AssetWhen loaded
PostHog JS SDKPostHog integration enabled with browser tracking — loaded from the configured PostHog host, not bundled
Clockwork Chrome extensionUser installs extension; PHP sends discovery headers — Clockwork
Hub OAuth flowsGoogle / Microsoft OAuth for Sheets and Excel — credentials via Pro filters

PostHog filters:

  • signalpress/posthog/load_browser_tracking
  • signalpress/posthog/load_web_analytics (legacy alias)

Build tooling (development only)

These tools are not loaded by WordPress in production:

ToolPurpose
[PHP-Scoper](https://github.com/humbug/php-scoper)Prefix Pro PHP vendor code
[esbuild](https://esbuild.github.io/)Bundle Pro JavaScript debug assets

Contributors rebuild vendor and JS bundles when upgrading dependencies — end sites receive prebuilt artifacts in the plugin zip.

Admin asset cache busting

SignalPress versions mutable admin and browser scripts using file modification time (filemtime) rather than plugin version alone, so deployments pick up new behavior immediately.

Service-specific payload filters

Many integrations expose signalpress/{service-id}/payload filters (and service-specific variants such as signalpress/sentry/envelope). These are documented on each integration Help tab — not duplicated here.

See Developer hooks reference for the global hook list.

Extension guidance

When building custom integrations:

  • Prefer wp_remote_* and WordPress APIs over bundling HTTP clients when possible.
  • If you must ship a PHP library, namespace-prefix or isolate it in your plugin — do not modify SignalPress vendor-prefixed/.
  • For browser SDKs, enqueue only when your service is enabled and configured — follow PostHog’s conditional load pattern.