Descripción
Tab Teaser is a lightweight engagement plugin that pulls visitors back when they switch to another browser tab. The moment your tab loses focus, Tab Teaser swaps the page title and favicon to a custom, attention-grabbing message. When the visitor switches back, everything is restored instantly.
It is especially effective on cart, checkout, signup, and long-form sales pages where every distracted visitor matters.
What it does (and doesn’t)
Tab Teaser is scoped on purpose. WordPress already owns your normal page title and favicon — the plugin doesn’t touch them. It only steps in once the visitor switches to another tab, and steps right back out when they return. That focused scope is what keeps the settings short, the frontend payload tiny, and the plugin friction-free to install alongside any theme or page-builder.
Key features
- Custom inactive title — show any message (emoji supported) when the visitor leaves the tab.
- Two flashing modes — Use site title + Site Icon alternates your inactive pair with the page’s normal title and favicon. Use a custom alternative pair alternates between two plugin-managed pairs (your inactive title/favicon a configurable Flash title/Flash favicon) so you can rotate two distinct messages.
- Trigger delay — wait N seconds after the tab is hidden before swapping. Visitors who tab back in time never see the change.
- 12 bundled SVG favicons — hand-crafted icons (Alert, Shopping Cart, Raised Hand, Bell, Fire, Broken Heart, Googly Eyes, Watching Eye, New Message, Clock, Gift, Sparkle) ship with the plugin, each in paired light + dark variants. Crisp at every size, zero HTTP overhead.
- Light / dark theme aware — the plugin detects the visitor’s OS color-scheme preference and picks the matching favicon variant automatically, updating live if the visitor toggles their theme. You can also upload your own light and dark inactive / flash favicon.
- Custom favicon upload — pick any image (PNG, JPG, ICO, SVG) from the WordPress Media Library.
- Live preview — see exactly how your tab will look as you edit settings. Includes a “Simulate Tab Switch” button.
- Rich page targeting — run on every page, on selected pages / posts / custom post types / taxonomy terms, or on URL patterns (
/checkout/*). Independent exclude rules always win over includes. - No external requests — every asset is local. No tracking, no telemetry, no third-party scripts.
- Accessible & lightweight — vanilla JavaScript on the frontend, ~3 KB minified payload, no jQuery dependency.
- Multisite-aware uninstall — every option is removed cleanly when the plugin is deleted.
Privacy
Tab Teaser does not collect, store, or transmit any visitor data. It does not make any external HTTP requests. It only reads the browser’s standard visibilitychange event to decide when to swap the tab title and favicon.
Performance
Tab Teaser is engineered for zero measurable impact on Core Web Vitals. Here is exactly how:
- Deferred bootstrap — the script waits for
window.load(i.e. after every image, stylesheet and render-blocking asset has finished) plus a configurable additional delay (default 2 seconds) before doing anything. It therefore never competes with LCP, FID/INP, or your critical resources. - Vanilla JavaScript, no dependencies — no jQuery, no framework, no polyfills. The entire frontend payload is one file, ~3 KB minified, ~1.5 KB gzipped.
- Loaded only where needed — the script is enqueued only on pages that pass your targeting rules. Run it on
/checkout/*only and the rest of your site ships zero extra bytes. - No external HTTP requests — every asset (icons, script) is served from your own origin. No CDN dependency, no third-party DNS, no privacy concerns.
- No injected CSS on the frontend — the plugin does not output any stylesheet on visitor-facing pages.
- Inert until the tab is hidden — once initialized, the script only attaches one passive
visibilitychangelistener. No timers run, no DOM mutations happen, until the visitor actually leaves the tab. - Cache-friendly — because everything runs in the browser, the plugin is fully compatible with full-page caching, CDN caching, and static-site exporters.
- SVG favicons — bundled icons are hand-authored SVG, so they’re a few hundred bytes each and stay crisp at any DPR.
In practice, this means a Lighthouse / PageSpeed Insights run against a page with Tab Teaser enabled measures identically to the same page without it.
Developer hooks
tab_teaser_should_load(filter) — final boolean override before frontend assets are enqueued.tab_teaser_settings_defaults(filter) — modify the default settings array.tab_teaser_localized_data(filter) — modify the data passed to the frontend script.tab_teaser_bundled_presets(filter) — register additional bundled favicon tiles.
Capturas
Instalación
Automatic
- In your WordPress dashboard, go to Plugins Add New.
- Search for Tab Teaser.
- Click Install Now, then Activate.
- Go to Tab Teaser in the admin sidebar to configure.
Manual
- Download the plugin ZIP.
- Upload the unzipped
tab-teaserfolder to/wp-content/plugins/. - Activate the plugin from Plugins in your WordPress admin.
- Go to Tab Teaser in the admin sidebar to configure.
Preguntas frecuentes
-
Will it slow down my site?
-
No. Tab Teaser is engineered for zero measurable impact on Core Web Vitals — see the Performance section under Description for the full breakdown. In short: the script defers itself until after
window.loadplus an additional configurable delay (default 2 seconds), is pure vanilla JavaScript (~3 KB minified), is loaded only on targeted pages, makes no external HTTP requests, and stays inert until the visitor actually leaves the tab. -
Does it work with caching plugins?
-
Yes. The plugin’s frontend logic runs entirely in the browser using JavaScript and the standard
visibilitychangeAPI, so it is unaffected by full-page caching, CDN caching, or static-site exporters. -
No. The plugin does not collect, store, or transmit any visitor data. It does not make any external HTTP requests. See the Description section for the full privacy statement.
-
No — by design. WordPress already owns your normal on-tab title (the page title) and favicon (Site Icon, set in Appearance Customize Site Identity). Tab Teaser intentionally keeps its scope to the inactive state so it stays a small, focused plugin you can install carefree alongside any theme. If you came here looking for a way to swap a dark-mode-aware brand favicon on the active tab, a dedicated favicon plugin is the right tool for that job.
-
Does it work on mobile browsers?
-
Yes. The
visibilitychangeevent is supported in every modern mobile browser, including iOS Safari (13+) and Android Chrome. -
Can I run it only on my checkout page?
-
Yes. Switch the targeting mode to “On selected content” and pick the checkout page in the include list, or use “On URLs that match patterns” with
/checkout/*. -
Can I exclude specific pages?
-
Yes. The targeting card has independent “Exclude” lists for content, taxonomy terms, and URL patterns. Exclusions always win over includes.
-
Does it work with WooCommerce / Easy Digital Downloads / membership plugins?
-
Yes. Targeting works with any registered public post type or taxonomy, including WooCommerce products, EDD downloads, BBPress topics, etc. They appear automatically in the targeting selectors.
-
How do I localize / translate the plugin?
-
The plugin uses the text-domain
tab-teaser. Translations are loaded automatically from/wp-content/languages/plugins/if available.
Reseñas
Colaboradores y desarrolladores
“Tab Teaser” es un software de código abierto. Las siguientes personas han colaborado con este plugin.
ColaboradoresTraduce “Tab Teaser” a tu idioma.
¿Interesado en el desarrollo?
Revise el código , eche un vistazo al repositorio SVN , o suscríbase al log de desarrollo por RSS .
Registro de cambios
2.0.0
- Added: deferred script loading. Tab Teaser now waits for
window.loadplus a configurable delay (default 2 seconds) before initializing, so it never competes with your page’s critical assets. - Added: light / dark favicon support. Bundled presets ship with paired light + dark SVGs, and the plugin live-detects the visitor’s OS theme (with live updates on theme switch). Custom uploads can opt-in to a separate dark variant.
- Added: nine new bundled SVG icons — Bell, Fire, Broken Heart, Googly Eyes, Watching Eye, New Message, Clock, Gift, Sparkle — in addition to the existing Alert, Cart, and Raised Hand presets (12 total, all with light + dark variants).
- Added: two flashing modes. “Use site title + Site Icon” alternates your inactive pair with the page’s normal title and favicon. “Use a custom alternative pair” alternates between two plugin-managed pairs (inactive title/favicon a configurable Flash title / Flash favicon).
- Added: new “Performance” settings card hosting the script load delay control.
- Added: explicit Performance section in the readme.
- Removed: Active title override and Normal favicon override. WordPress now owns the active-tab title and favicon (Site Icon) without any plugin interference — Tab Teaser is scoped strictly to the inactive state, keeping the settings page short and the plugin friction-free.
- Improved: preset favicon tiles use a clean single-icon look — the live preview’s Light/Dark theme switcher shows what each variant looks like in context.
- Improved: live preview auto-starts in the inactive state on page load, so visitors of the settings page see the effect immediately. Click “Stop Simulating” to view the active state.
- Improved: live preview always boots in the Light theme so the layout is recognizable on first load.
- Improved: the simulator’s “Another tab” placeholder appends “(ACTIVE)” while your tab is inactive, making the swap unmistakable.
- Improved: widened the live-preview sidebar so the simulator and its controls have more room.
- Improved: Performance card moved to the bottom of the settings page so the most common configuration stays above the fold.
- Improved: Tips card refreshed to reflect the new workflow (scope, light/dark favicons, flashing modes, e-commerce targeting) and converted to an accordion so the sidebar stays compact.
- Improved: when flashing animation is enabled, the simulator now keeps the tab visually inactive throughout and only flips the title / favicon — matching the real frontend behavior.
- Improved: live preview tabs use higher-contrast colors for the inactive (background) tab in both light and dark themes, so the title stays readable while the simulation runs.
- Improved: settings UI clarity and helper copy throughout. Settings split into a focused “General” card (inactive title, inactive favicon, trigger delay) and a dedicated “Flashing Mode” card with an inline help tooltip explaining each mode.
- Improved: “Zero impact on performance” tip now documents the 2-second post-load script delay and warns that switching tabs within 2 seconds of reload during testing may miss the init window — real visitors are never affected.
- Changed: default inactive title is now “Where Did You Go? 🤨” and the default inactive favicon is Googly Eyes — a friendlier, more attention-grabbing out-of-the-box experience.
- Fixed: original favicon is now reliably restored when the visitor returns to the tab. Uses a persistent managed
<link rel="icon">with href mutation — the only pattern Chromium honors for live tab-favicon refresh (element removals are ignored by the tab UI). - Fixed: tab title and favicon now swap in lockstep on every transition (entering inactive, every flash tick, returning to active). Favicons are pre-fetched, converted to inline
data:URIs, and pre-decoded at init, so swaps trigger zero network and land on the same paint as the title write. - Fixed: the “Site icon” tile in the inactive / flash favicon picker now resolves to the site’s actual favicon (WordPress Site Icon when configured, otherwise
/favicon.ico). Previously the tile saved an empty value and the favicon never changed on tab switch. - Fixed: admin simulation now shows the correct site favicon for both the “Site icon” tile and the active-state preview (it no longer falls back to the inactive favicon, which made the simulation misleading).
- Fixed: live preview no longer fails to auto-start on a hard page load — initialization is now deferred to the next animation frame.
- Fixed: toggling “Enable flashing” while the live preview is simulating now updates immediately — the simulator reconciles the flashing timer with the current setting instead of requiring a stop / start.
1.0.0
- Initial public release.


