Skip to content
Prev Previous commit
Next Next commit
refactor: use early bails in logic deciding wether to enable skew pro…
…tection
  • Loading branch information
pieh committed Oct 2, 2025
commit edaa88ff5d741fe250cf3ea47ad47fa4b8260c60
27 changes: 19 additions & 8 deletions src/build/skew-protection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,17 @@ export function shouldEnableSkewProtection(ctx: PluginContext) {
process.env.NETLIFY_NEXT_SKEW_PROTECTION === 'false' ||
process.env.NETLIFY_NEXT_SKEW_PROTECTION === '0'
) {
enabledOrDisabledReason = EnabledOrDisabledReason.OPT_OUT_ENV_VAR
return {
enabled: false,
enabledOrDisabledReason: EnabledOrDisabledReason.OPT_OUT_ENV_VAR,
}
} else if (ctx.featureFlags?.['next-runtime-skew-protection']) {
enabledOrDisabledReason = EnabledOrDisabledReason.OPT_IN_FF
} else {
return {
enabled: false,
enabledOrDisabledReason: EnabledOrDisabledReason.OPT_OUT_DEFAULT,
}
}

if (
Expand All @@ -61,13 +69,16 @@ export function shouldEnableSkewProtection(ctx: PluginContext) {
) {
// We can't proceed without a valid DEPLOY_ID, because Next.js does inline deploy ID at build time
// This should only be the case for CLI deploys
enabledOrDisabledReason =
enabledOrDisabledReason === EnabledOrDisabledReason.OPT_IN_ENV_VAR && ctx.constants.IS_LOCAL
? // this case is singled out to provide visible feedback to users that env var has no effect
EnabledOrDisabledReason.OPT_OUT_NO_VALID_DEPLOY_ID_ENV_VAR
: // this is silent disablement to avoid spam logs for users opted in via feature flag
// that don't explicitly opt in via env var
EnabledOrDisabledReason.OPT_OUT_NO_VALID_DEPLOY_ID
return {
enabled: false,
enabledOrDisabledReason:
enabledOrDisabledReason === EnabledOrDisabledReason.OPT_IN_ENV_VAR && ctx.constants.IS_LOCAL
? // this case is singled out to provide visible feedback to users that env var has no effect
EnabledOrDisabledReason.OPT_OUT_NO_VALID_DEPLOY_ID_ENV_VAR
: // this is silent disablement to avoid spam logs for users opted in via feature flag
// that don't explicitly opt in via env var
EnabledOrDisabledReason.OPT_OUT_NO_VALID_DEPLOY_ID,
}
}

return {
Expand Down