Detect Pre-rendering Engine Requests in Meteor.js
April 20, 2026 ยท View on GitHub
When requests come from the pre-rendering engine they can be detected at JS runtime (e.g. front-end code).
See the non-Meteor version: Detect pre-rendering engine requests.
Detect that a request is coming from the pre-rendering engine
The pre-rendering engine sets window.IS_PRERENDERING to true. Because Meteor favors reactive state, bind it to a ReactiveVar:
import { ReactiveVar } from 'meteor/reactive-var';
import { Template } from 'meteor/templating';
const IS_PRERENDERING = new ReactiveVar(window.IS_PRERENDERING || false);
Object.defineProperty(window, 'IS_PRERENDERING', {
set(val) {
IS_PRERENDERING.set(val);
},
get() {
return IS_PRERENDERING.get();
}
});
// Expose a global Blaze helper.
// Omit this line if you are not using Blaze or if you prefer to handle
// the logic in plain JavaScript.
Template.registerHelper('IS_PRERENDERING', () => IS_PRERENDERING.get());
Note
window.IS_PRERENDERING may be undefined on initial page load and can change during runtime.
Detect the type of pre-rendering engine
Like browsers, crawlers and bots come as "mobile" (small-screen touch devices) or "desktop" (large screens without touch events). The pre-rendering engine exposes the same two types via window.IS_PRERENDERING_TYPE, set to either desktop or mobile:
import { ReactiveVar } from 'meteor/reactive-var';
import { Template } from 'meteor/templating';
const IS_PRERENDERING_TYPE = new ReactiveVar(window.IS_PRERENDERING_TYPE || '');
Object.defineProperty(window, 'IS_PRERENDERING_TYPE', {
set(val) {
IS_PRERENDERING_TYPE.set(val);
},
get() {
return IS_PRERENDERING_TYPE.get();
}
});
Template.registerHelper('IS_PRERENDERING_TYPE', () => IS_PRERENDERING_TYPE.get());
Use it in application code:
if (window.IS_PRERENDERING_TYPE === 'mobile') {
// Request is coming from a mobile crawler and mobile pre-rendering engine
} else if (window.IS_PRERENDERING_TYPE === 'desktop') {
// Request is coming from a desktop crawler and desktop pre-rendering engine
} else {
// Request is from a regular user
}