Skip to main content


Install the Latest Version

npm install @prefab-cloud/prefab-cloud-node

Initialize a Client

import { Prefab } from "@prefab-cloud/prefab-cloud-node";

if (!process.env.PREFAB_API_KEY) {
throw new Error("PREFAB_API_KEY is not set");

const prefab = new Prefab({
apiKey: process.env.PREFAB_API_KEY,
enableSSE: true,
defaultLogLevel: "warn",

await prefab.init();

Feature Flags and Dynamic Config

After the init completes you can use

  • prefab.isFeatureEnabled('') returns true or false
  • prefab.get('') returns a raw value


Prefab supports context for intelligent rule-based evaluation of get and isFeatureEnabled based on the current request/device/user/etc.


const context = {
user: { key: "some-unique-identifier", country: "US" },
subscription: { key: "pro-sub", plan: "pro" },

You can pass this in to each call

  • prefab.get('', context, defaultValue)
  • prefab.isFeatureEnabled('', context, false)

Or you can set the context in a block (perhaps surrounding evaluation of a web request)

prefab.inContext(context, (pf) => {
const optionalJustInTimeContext = { ... }

console.log(pf.get("", optionalJustInTimeContext, defaultValue))
console.log(pf.isEnabled("", optionalJustInTimeContext, false))

Dynamic Logging

prefab.shouldLog(loggerName, desiredLevel, defaultLevel, contexts) returns true or false

Another option is to create a Prefab logger to use instead of console.log. We will create a Prefab logger with the name netlify.functions.hello and the default level of warn so we don't get too much output.

We can replace our console.log with some logger.debug and, and now it's safe to deploy. They won't emit logs until we turn them on.

const logger = prefab.logger("netlify.functions.hello", "warn");

// simple info logging`getting results for ${userId}`);

var sql = "SELECT * FROM table WHERE user_id = $1";

// more detailed debug logging
logger.debug(`running the following SQL ${sql} for ${userId}`);, [userId], function (err, rows) {
logger.debug("query returned", { rows: rows });
return new Response("200 Okey-dokey");

This logging will not show up in your Netlify logs yet, because the logger is warn but the logging here is info and debug. That means it's safe to go ahead and deploy.


Option Definitions

collectEvaluationSummariesSend counts of config/flag evaluation results back to Prefab to view in web apptrue
collectLoggerCountsSend counts of logger usage back to Prefab to power log-levels configuration screentrue
contextUploadModeUpload either context "shapes" (the names and data types your app uses in prefab contexts) or periodically send full example contexts"periodicExample"
defaultLevelLevel to be used as the min-verbosity for a loggerPath if no value is configured in Prefab"warn"
enableSSEWhether or not we should listen for live changes from Prefabtrue
enablePollingWhether or not we should poll for changes from Prefabfalse