Servers
Environments
Environments provide structure and predictability when developing, testing, and deploying applications. By separating local development, staging, and production, we ensure that changes can be tested and validated before they reach end users.
Environment overview
We typically work with three main environments:
Local development – Used by developers on their own machines. This environment mirrors the production setup as closely as possible, often through Docker.
Staging – A shared environment where new features, fixes, and integrations are deployed for testing. This is where QA and client reviews happen before a release.
Production – The live environment where the application runs for end users. Only thoroughly tested and approved changes are deployed here.
Purpose of each environment
Each environment serves a specific role in the development and delivery process.
Local development is where individual developers work on new features and bug fixes. It is meant for experimentation and rapid iteration without affecting others. Local environments should mirror production as closely as possible, often through Docker or similar setups, so that what works locally will also work once deployed.
Staging is a shared environment where new code is deployed after development. It is used for testing, quality assurance, and client reviews. Staging is designed to closely replicate the production setup, which makes it the best place to catch issues before a release. Staging environments usually run on separate URLs, for example stage.itiden.se
compared to the production site at www.itiden.se
. It is important that staging is kept secure: access must be protected behind logins to prevent unauthorized visitors, and search engines must not be able to index staging sites. This ensures that unfinished work remains private and does not affect the public brand or SEO.
Production is the live environment, accessed by end users. Only thoroughly tested and approved code is deployed here. Production must be stable and protected from unverified changes. This is where uptime, performance, and security are most critical, since any issues directly impact users and business value.
Environments are also relevant when distributing mobile applications, where separate builds are used for development, staging, and production releases. For more details, see Distribution under the React Native section.
Together, these environments create a controlled path from idea to delivery: developers test locally, stakeholders review in staging, and users rely on the final, polished product in production.