# Avoid Reading Feature Flags Inside Functions

DevFeed: [Avoid Reading Feature Flags Inside Functions](<https://devfeed.tech/articles/a-feature-flag-psa-25671.md>)

Original publisher: [Read original article](<https://adambennett.dev/2023/09/a-feature-flag-psa/>)

Published: 2023-09-29T22:45:18Z

Content type: opinion

Language: en

Sources: [Posts on Adam Bennett](<https://devfeed.tech/sources/posts-on-adam-bennett.md>)

Topics: [feature flags](<https://devfeed.tech/topics/feature-flags.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [advice](<https://devfeed.tech/tags/advice.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [android](<https://devfeed.tech/tags/android.md>), [blog](<https://devfeed.tech/tags/blog.md>), [career](<https://devfeed.tech/tags/career.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [feature-flags](<https://devfeed.tech/tags/feature-flags.md>), [finance](<https://devfeed.tech/tags/finance.md>), [firebase](<https://devfeed.tech/tags/firebase.md>), [functional](<https://devfeed.tech/tags/functional.md>), [growth](<https://devfeed.tech/tags/growth.md>), [java](<https://devfeed.tech/tags/java.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [money](<https://devfeed.tech/tags/money.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [performance](<https://devfeed.tech/tags/performance.md>), [remote-config](<https://devfeed.tech/tags/remote-config.md>), [server](<https://devfeed.tech/tags/server.md>), [software](<https://devfeed.tech/tags/software.md>), [startup](<https://devfeed.tech/tags/startup.md>), [startups](<https://devfeed.tech/tags/startups.md>), [state](<https://devfeed.tech/tags/state.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [training](<https://devfeed.tech/tags/training.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

## AI overview

This article argues that feature flags should be read once and passed into functions or constructors rather than looked up repeatedly. It cites performance costs in hot code paths and unpredictable behavior when flag values change during synchronization with a server.

## Source excerpt

I Threaded - made a thread? Posted? Tweeted (can we use that again now)? Whatever - about this earlier but I thought I'd elaborate a little. You do use feature flags, right? You should. If you work with trunk-based development, like everyone does now, you must use feature flags to hide upcoming features. Side note: this is why release notes are so boring now, because features aren't really tied to releases.