Skip to content

Commit 6f5537a

Browse files
committed
fix: feature flags fallback behavior
1 parent 9e628f5 commit 6f5537a

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

packages/commandkit/src/flags/feature-flags.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -328,18 +328,25 @@ export class FeatureFlag<R, T> {
328328
// Get provider configuration if global provider is available
329329
let providerConfig: FlagConfiguration | null = null;
330330
if (flagProvider) {
331-
providerConfig = await flagProvider.getFlag(this.options.key, entities);
332-
333-
// If provider says flag is disabled, return early with default behavior
334-
if (providerConfig && !providerConfig.enabled) {
335-
// For boolean flags, return false; for others, let decide function handle it
336-
if (typeof decide === 'function') {
337-
const decisionResult = await decide({
338-
entities,
339-
provider: providerConfig,
340-
});
341-
return decisionResult as R;
331+
try {
332+
providerConfig = await flagProvider.getFlag(this.options.key, entities);
333+
334+
// If provider says flag is disabled, return early with default behavior
335+
if (providerConfig && !providerConfig.enabled) {
336+
// For boolean flags, return false; for others, let decide function handle it
337+
if (typeof decide === 'function') {
338+
const decisionResult = await decide({
339+
entities,
340+
provider: providerConfig,
341+
});
342+
return decisionResult as R;
343+
}
342344
}
345+
} catch (error) {
346+
Logger.error(
347+
`Error fetching flag provider configuration for "${this.options.key}": ${error}`,
348+
);
349+
// continue with local decision if provider fails
343350
}
344351
}
345352

0 commit comments

Comments
 (0)