.env File in mobiele ontwikkeling: wat is het, doel en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-05-31 Leestijd: 9 min

Het .env-bestand slaat omgevingsvariabelen op in een eenvoudig sleutel-waarde-formaat en scheidt configuratie van de broncode van de applicatie. Volgens The Twelve-Factor App (2011) moet configuratie strikt van code worden gescheiden, en .env-bestanden zijn de standaard van deze aanpak geworden. .env File maakt het mogelijk om verschillende waarden van API-sleutels, server-URL's en compilatievlaggen in te vullen zonder het project opnieuw te compileren.

Belangrijkste punten

  • .env File — tekstbestand met omgevingsvariabelen in KEY=VALUE-formaat, geplaatst in de hoofdmap van het project.
  • Twelve-Factor App beveelt aan configuratie in omgevingsvariabelen op te slaan, niet in code.
  • Veiligheid — .env mag nooit in Git terechtkomen; het bestand wordt toegevoegd aan .gitignore.
  • Laadbibliotheken — in Android wordt gradle-dotenv gebruikt, in iOS — Config.xcconfig, in Flutter — flutter_dotenv.
  • Uitvoeringsomgeving — waarden uit .env worden ingevuld tijdens de compilatiefase, niet tijdens het draaien van de applicatie.

Wat is .env File en waarom is het nodig

.env File is een configuratiebestand waarin omgevingsvariabelen worden opgeslagen in een eenvoudig tekstformaat KEY=VALUE. Elke regel bevat één variabele: de sleutelnaam en zijn waarde gescheiden door een gelijkteken.

.env-bestanden lossen een fundamenteel probleem van moderne ontwikkeling op: verschillende omgevingen (lokaal, test, productie) vereisen totaal verschillende instellingen. De URL van de API-server op de lokale machine is http://localhost:8080, op de productieserver — https://api.production.com. Als deze waarden rechtstreeks in de applicatiecode zijn ingebed, vereist elke compilatie voor een andere omgeving wijziging van de broncode.

De praktijk van het opslaan van configuratie buiten de hoofdcode van de applicatie werd gestandaardiseerd in het manifest The Twelve-Factor App (2011), dat omgevingsvariabelen aanwees als de enige juiste manier om een applicatie te configureren. Volgens het JetBrains Developer Ecosystem-onderzoek (2024) gebruikt meer dan 67% van de mobiele ontwikkelaars .env-bestanden in hun projecten.

Voor mobiele ontwikkeling biedt .env een extra voordeel: waarden worden ingevuld tijdens de compilatiefase via Gradle (Android) of xcconfig (iOS), waardoor afzonderlijke builds voor ontwikkeling, staging en productie kunnen worden gemaakt zonder de broncode te wijzigen.

.env is vooral nuttig bij teamwerk: elke ontwikkelaar maakt zijn eigen lokale .env met instellingen voor zijn omgeving (pad naar lokale database, debug-API-sleutels), en gemeenschappelijke instellingen worden vastgelegd in .env.example in de repository. Dit voorkomt de situatie waarin na een git pull de build van een ontwikkelaar breekt door een ontbrekende omgevingsvariabele waar hij niet van wist. Een nieuw teamlid kopieert eenvoudig .env.example naar .env en vult zijn lokale waarden in.

Syntaxis en structuur van .env File

Het .env-formaat is uiterst eenvoudig: elke regel is één variabele in de vorm KEY=VALUE. Spaties rond het gelijkteken worden meestal genegeerd, maar worden in de meeste bibliotheken als onderdeel van de waarde beschouwd, dus het is beter ze te vermijden.

Basisregels voor schrijven

Opmerkingen beginnen met het #-teken — de hele regel erna wordt genegeerd. Lege regels worden ook overgeslagen. Als de waarde spaties bevat, wordt deze tussen dubbele of enkele aanhalingstekens geplaatst.

env
# Belangrijkste omgevingsinstellingen
APP_NAME=MyMobileApp
APP_ENV=development

# API-configuratie
API_BASE_URL=http://localhost:3000/api
API_TIMEOUT=30000

# Gevoelige gegevens
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Waardetypen en escaping

Alle variabelen in .env zijn strings, maar laadbibliotheken kunnen ze naar het vereiste type converteren. Voor het escapen van speciale tekens worden backslashes en aanhalingstekens gebruikt. Als de waarde het #-teken als onderdeel van de tekst bevat, moet deze worden geëscaped als \#.

  • Strings — zonder aanhalingstekens of tussen aanhalingstekens: KEY=value of KEY="value with spaces"
  • Getallen — worden zonder aanhalingstekens geschreven: PORT=8080
  • Booleaanse waarden — true/false-strings: DEBUG=true
  • Meerregelig — backslash aan het einde van de regel: KEY=line1\
    line2
  • Substitutie — in sommige parsers: DB_URL=${DB_HOST}:${DB_PORT}

Tijdens het laden van .env kunnen bibliotheken variabele-interpolatie uitvoeren — waarden van de ene sleutel binnen de andere invullen. Bijvoorbeeld, de variabele DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db zal DB_USER en DB_PASS uit hetzelfde bestand openen.

Integratie van .env File in mobiele projecten

De manier om .env aan te sluiten hangt af van het platform. Android gebruikt Gradle-plugins, iOS — xcconfig-configuratiebestanden, en cross-platform oplossingen zoals Flutter — gespecialiseerde bibliotheken.

Android en Gradle: BuildConfig instellen

In Android wordt .env geladen via de gradle-dotenv-plugin. De plugin leest .env uit de hoofdmap van het project en voegt waarden toe aan BuildConfig, waarna ze beschikbaar zijn in Kotlin- of Java-code via gegenereerde velden.

kotlin
// build.gradle.kts (app level)
plugins {
    id("co.uzzu.dotenv") version "4.0.0"
}

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Toegang in code: BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS en Xcode: Config aansluiten

In iOS worden omgevingsvariabelen meestal geconfigureerd via xcconfig-bestanden. Voor het laden van .env in Swift wordt de DotEnv-bibliotheek of het ingebouwde Info.plist-mechanisme met aangepaste sleutels gebruikt.

swift
// .env laden in Swift-project
import DotEnv

struct AppConfig {
    static func load() {
        let env = DotEnv(Bundle.main)
        env.load()

        let apiURL = ProcessInfo.processInfo
            .environment["API_BASE_URL"] ??
            "https://default.api.com"
    }
}

Flutter en Dart: flutter_dotenv-bibliotheek

Voor Flutter bestaat het pakket flutter_dotenv dat variabelen uit .env laadt tijdens de initialisatie van de applicatie. Het .env-bestand wordt in de hoofdmap van het project geplaatst en variabelen worden beschikbaar via de klasse dotenv.

dart
// pubspec.yaml
dependencies:
  flutter_dotenv: ^5.1

// main.dart — laden bij opstarten
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  await dotenv.load(fileName: '.env');
  var apiUrl = dotenv.get('API_BASE_URL');
  runApp(MyApp(baseUrl: apiUrl));
}

Alle drie benaderingen delen een gemeenschappelijk principe: .env wordt tijdens de compilatiefase of bij het starten van de applicatie geladen, waarden worden gecacht en gebruikt in code via gegenereerde constanten. Dit voorkomt dat gevoelige gegevens in de repository terechtkomen.

Voor React Native wordt het pakket react-native-config gebruikt, dat tijdens de compilatiefase automatisch de BuildConfig-klasse voor Android en constanten in Info.plist voor iOS genereert uit één .env-bestand in de hoofdmap van het project. Dit is vooral handig voor startups die Expo of bare workflow gebruiken: één .env op hoofdniveau is voldoende en alle platforms ontvangen dezelfde omgevingsvariabelen zonder configuratieduplicatie.

Veiligheid en beste praktijken van .env File

Ondanks alle voordelen is .env geen volwaardige oplossing voor het opslaan van geheimen in een productieomgeving. Het biedt een basisbeschermingsniveau, maar bij verkeerd gebruik kan het leiden tot lekkage van vertrouwelijke gegevens.

Bescherming via .gitignore

De belangrijkste regel — .env mag nooit in het versiebeheersysteem terechtkomen. Het bestand wordt direct na aanmaak aan .gitignore toegevoegd, en alleen het voorbeeldbestand .env.example met lege of fictieve waarden wordt in de repository gecommit.

env
# .env.example — gecommit in repository
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — zelfs niet in voorbeeld vermelden!
# JWT_SECRET — zelfs niet in voorbeeld vermelden!
env
# .gitignore
# Dotenv-bestanden
.env
.env*.local

Alternatieven voor productieomgeving

Voor productieprojecten wordt aangeraden professionele oplossingen voor geheimbeheer te gebruiken. .env in productie is alleen toegestaan als het bestand zich buiten de document-root van de server bevindt en strikte toegangsrechten heeft.

  • AWS Secrets Manager — cloudopslag van geheimen met sleutelrotatie en toegangscontrole
  • Google Secret Manager — Google Cloud-service voor het opslaan van API-sleutels en wachtwoorden
  • HashiCorp Vault — tool met dynamische geheimen en encryptie aan serverzijde
  • Firebase Remote Config — cloudconfiguratie met A/B-testen voor mobiele applicaties
  • GitLab CI/CD Variables — ingebouwde geheimenopslag voor compilatiepijplijnen

Volgens Snyk State of Open Source Security (2024) was lekkage van .env-bestanden via repositories de oorzaak van meer dan 12% van alle incidenten met blootstelling van API-sleutels bij ondervraagde bedrijven. Het gebruik van een aparte geheimenmanager kan dit risico tot nul terugbrengen.

Extra bescherming wordt bereikt door het implementeren van pre-commit hooks met tools zoals husky en lint-staged, die controleren of een ontwikkelaar per ongeluk .env aan een commit heeft toegevoegd. Tools zoals git-secrets (AWS) en talisman scannen elke commit op patronen van API-sleutels, tokens en wachtwoorden, en blokkeren de commit bij detectie. Voor CI-pijplijnen wordt aangeraden een detect-secrets-controle toe te voegen — een automatische scanner die geen .env-bestand in de repository laat komen, zelfs niet bij een ontwikkelaarsfout.

Veelgestelde vragen

Moet ik .env committen in Git?

Nee, .env mag niet in Git worden gecommit. Het bestand bevat gevoelige gegevens en moet worden toegevoegd aan .gitignore. In plaats daarvan wordt .env.example met een sjabloon van alle benodigde variabelen in de repository geplaatst.

Wat is het verschil tussen .env en .env.example?

.env — het echte bestand met productiewaarden dat nooit wordt gecommit. Het bestand .env.example bevat dezelfde sleutels, maar met lege of fictieve waarden — het wordt als voorbeeld voor nieuwe ontwikkelaars in de repository gecommit.

Kan .env in productie worden gebruikt?

Ja, maar wordt niet aanbevolen zonder extra bescherming. Als .env op de productieserver wordt gebruikt, moet het bestand zich buiten de document-root van de webserver bevinden met toegangsrechten 600 (alleen eigenaar). Voor kritieke projecten hebben geheimenbeheerders de voorkeur.

Hoe laad ik .env in een Android-project?

Via de gradle-dotenv-plugin (co.uzzu.dotenv). De plugin leest .env uit de hoofdmap van het project en exporteert waarden naar BuildConfig. Variabelen worden beschikbaar in code als BuildConfig.VARIABLE_NAME tijdens de compilatiefase.

Ondersteunt .env variabele-interpolatie?

Ja, veel parsers ondersteunen interpolatie in het formaat ${VAR_NAME}. Bijvoorbeeld, URL=${HOST}:${PORT} vult de waarden van HOST en PORT uit hetzelfde bestand in. Deze functionaliteit hangt echter af van de specifieke laadbibliotheek.

Samenvatting

  • .env File — eenvoudig tekstformaat voor het opslaan van omgevingsvariabelen, dat configuratie van applicatiecode scheidt.
  • Twelve-Factor App heeft het opslaan van configuratie in omgevingsvariabelen onderbouwd als standaard voor moderne applicatieontwikkeling.
  • Integratie in mobiele projecten gebeurt via de gradle-dotenv-plugin (Android), xcconfig (iOS) of flutter_dotenv (Flutter).
  • Veiligheid wordt gewaarborgd door .env aan .gitignore toe te voegen en .env.example in de repository te gebruiken.
  • Productie vereist professionele oplossingen — AWS Secrets Manager, Google Secret Manager of HashiCorp Vault.
  • Waarde-substitutie vindt plaats tijdens de compilatiefase via BuildConfig in Android of Info.plist in iOS, zonder wijziging van de broncode.
  • Lekrisico — 12% van de incidenten met API-sleutels houdt verband met het committen van .env in repositories (Snyk, 2024), daarom is automatische controle in CI verplicht.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook