Environment variables

Per-stage public config injected into your app at runtime.

Environment variables are the everyday settings your app reads when it runs — things like a label, a public web address, or a feature switch. They're plain text, not encrypted, so they're meant for values that aren't sensitive. The big win: you set them separately for each stage, so your test settings can never leak into production.

Annotated screenshot of the Environment Variables panel with a per-stage selector (Production / Development / Preview) highlighted at the top and a table of key/value rows, callout: "Set values separately for each stage — your test settings never leak into production."

What it's for

Use environment variables for the non-sensitive knobs your app needs to behave a little differently depending on where it's running. Good examples:

  • Public web addresses — the URL your frontend points at, or the link in a notification email.
  • Labels and names — a "Staging" banner, an app name, a support email shown to users.
  • Feature flags — simple on/off switches like "show the new checkout."

These are values that are fine for anyone to see. If a setting must stay private — an API key, a password, a token — it does not belong here. That's a secret.

How it works

Per-stage isolation

A stage is a separate copy of your app — typically Production, Development, and Preview. Each stage keeps its own set of values. You pick a stage at the top of the panel, set a value there, and that value applies only to that stage.

So if you set a value in Development, it stays in Development. It does not flow into Production unless you set it there too. This is exactly what keeps a test address or a half-finished feature from accidentally reaching your real users.

Injected at runtime

The values you set are handed to your app while it's actually running — that's what "at runtime" means. Each stage already has its own values waiting for it, so the same code behaves correctly in each place without you changing anything.

Setting a value here doesn't put anything live on its own. Like all configuration in Pikku Studio Cloud, your changes take effect on your next deploy.

Which one do I use?

If the value isn't sensitive and can differ between stages, it's an environment variable. The quick rule:

  • Could a stranger see it without harm? → Environment variable — you're in the right place.
  • Is it a key, password, or token that must stay private? → Use a secret instead, where it's encrypted.
  • Is it a login to an outside service like Google or Stripe? → Use a credential, which connects securely on your behalf.

Where to go next

  • Secrets — the encrypted place for API keys, passwords, and anything that must stay private.
  • Stages — how Production, Development, and Preview each keep their own settings.
  • Credentials — connect outside services like Google or Stripe without copying keys by hand.