A Release Candidate (RC) is a pre-release software build that is considered feature-complete and code-frozen, meaning no new features are added and only critical bug fixes are permitted. It represents the final stage of testing before a stable public release, often labeled as v1.0 or a general availability (GA) version. The primary goal of an RC is to identify any last-minute, show-stopping bugs in an environment that closely mirrors production, often involving a broader audience of beta testers or early adopters.
Release Candidate
What is a Release Candidate?
A Release Candidate (RC) is a near-final version of a software product that is considered stable and feature-complete, intended for final testing before general release.
In development workflows like GitFlow, a release candidate is typically branched from the develop branch and enters a final stabilization phase. During this phase, the focus shifts entirely from development to quality assurance (QA), performance testing, and security auditing. Any bugs discovered are fixed in the RC branch, and these fixes may be merged back into the main development line. This process creates a clear separation between ongoing feature development and the final steps to ship a stable product.
The release candidate process is crucial for mitigating risk. It allows developers to gather feedback on installation, upgrade paths, and documentation. A common practice is to issue Release Candidate 1 (RC1), RC2, etc., with each iteration incorporating fixes from the previous round. Only when no critical issues (Priority 1 or 'P1' bugs) are found is the build deemed ready for official release. In blockchain contexts, RCs for protocol upgrades or new client software are especially critical, as they require extensive testing across diverse network conditions before a mainnet deployment.
Key Features of a Release Candidate
A Release Candidate (RC) is a near-final build of software considered stable enough for final testing before general release. It is a critical phase in the development lifecycle, distinct from earlier alpha or beta versions.
Feature Complete & Code Frozen
A Release Candidate is feature complete, meaning all planned functionality is implemented. The codebase enters a code freeze, where no new features are added. Development focuses solely on fixing critical bugs, security vulnerabilities, and performance regressions identified during testing.
Final Stage of Testing
This phase involves rigorous, production-like testing to uncover any remaining critical issues. Testing focuses on:
- Integration testing of all components.
- Performance and load testing under expected traffic.
- Security audits and penetration testing.
- User Acceptance Testing (UAT) by a limited group of end-users or stakeholders.
Potential for Multiple Iterations
It is common to have sequential releases (e.g., RC1, RC2). Each iteration addresses bugs found in the previous one. The cycle repeats until no showstopper bugs (critical defects) are found, at which point the RC is declared the Gold Master or final release version.
Stable API & ABI
For libraries, frameworks, and developer tools, a Release Candidate signifies that the Application Programming Interface (API) and Application Binary Interface (ABI) are stable. Developers can safely build against the RC with confidence that their integrations will not break in the final release.
Distinction from Beta
Unlike a beta version, which is often feature-complete but expects many bugs, an RC is expected to be stable enough for production use. The goal shifts from gathering feedback on features to ensuring absolute reliability. A beta asks "Is it usable?" An RC asks "Is it shippable?"
Release Readiness & Go/No-Go Decision
The RC phase culminates in a formal go/no-go decision. Stakeholders review test results, bug metrics, and quality reports. If criteria are met, the RC is signed off as the final release. If not, another RC iteration is initiated, delaying the public launch.
How the Release Candidate Process Works
A detailed breakdown of the final testing and stabilization phase before a major software release, explaining its purpose, stages, and key participants.
A Release Candidate (RC) is a pre-release software build that is considered feature-complete and potentially shippable, intended for final testing by a wider audience to identify any remaining critical bugs. This phase follows beta testing and precedes the General Availability (GA) or final production release. The primary goal is to achieve code freeze, where no new features are added, allowing the development team to focus exclusively on stability, performance, and fixing showstopper bugs that would block the official launch.
The process typically involves multiple iterative RC builds, numbered sequentially (e.g., RC1, RC2). Each candidate is distributed to quality assurance (QA) teams, internal stakeholders, and sometimes a select group of external users or partners. Rigorous testing—including regression testing, integration testing, and load testing—is performed. If critical issues are found, they are patched, and a new RC build is issued. The cycle repeats until a predetermined quality threshold is met, often defined by a period with zero open P0 or P1 (critical/high-priority) bugs.
Key participants in this phase include developers for hotfixes, QA engineers for validation, product managers for go/no-go decisions, and devops engineers managing the build pipeline. A successful RC process culminates in a release candidate sign-off, where all stakeholders approve the build for production deployment. This methodical, gate-kept approach, central to many blockchain client and enterprise software release cycles, minimizes the risk of introducing major defects into live environments and builds confidence in the software's reliability.
Ecosystem Usage & Examples
A Release Candidate (RC) is a near-final software version considered stable for final testing before official release. In blockchain, it's a critical phase for network upgrades and protocol changes.
Final Security & Economic Audits
The RC phase triggers the final round of security reviews and economic modeling. Key activities include:
- Fuzzing and formal verification of the new code.
- Economic stress tests to model validator incentives and slashing conditions.
- Bug bounty programs are often intensified, offering rewards for critical vulnerabilities discovered in the RC. This stage is the last line of defense against exploits that could threaten network security or user funds.
Governance & Community Signaling
For decentralized networks, a Release Candidate serves as a tangible artifact for on-chain or off-chain governance signaling. Token holders or validators can signal readiness or approval by:
- Upgrading their nodes to the RC version on testnet.
- Participating in governance votes that reference the specific RC build.
- This creates a clear, auditable checkpoint for community consensus before irrevocable mainnet deployment.
Developer Tooling & Infrastructure
Infrastructure providers and dApp developers use the RC period to ensure compatibility. This involves:
- Updating JSON-RPC API clients and libraries (e.g., ethers.js, web3.py).
- Testing indexers, oracles, and bridges with the new protocol rules.
- Deploying and testing smart contracts on the forked testnet to verify behavior changes (e.g., new opcodes, gas costs). This prevents service disruptions post-upgrade.
Release Candidate vs. Other Pre-Release Versions
A comparison of key characteristics across major pre-release software stages, from initial builds to final candidate.
| Feature / Stage | Alpha | Beta | Release Candidate (RC) |
|---|---|---|---|
Primary Goal | Internal feature validation & core testing | External user feedback & bug hunting | Final stabilization & bug-fix verification |
Audience / Testers | Internal developers & QA team only | Limited external, trusted users or public | Broad public or all stakeholders |
Feature Completeness | Core features implemented; unstable | All planned features implemented | Feature freeze; no new features added |
Code Stability | Highly unstable; frequent crashes expected | Moderately stable; major bugs present | Highly stable; only critical bug fixes allowed |
Release Readiness | Not for public use | Potentially shippable, but with known issues | Intended to be the final version if no critical bugs |
Feedback Focus | Architecture, performance, core logic | Usability, compatibility, edge-case bugs | Showstopper bugs, last-minute regressions |
Typical Duration | Weeks to months | 1-3 months | Weeks to 1 month |
Version Naming Convention | v0.1.0-alpha.1, v1.0.0a1 | v1.0.0-beta.1, v1.0.0b2 | v1.0.0-rc.1, v1.0.0rc2 |
Security & Operational Considerations
A Release Candidate (RC) is a pre-release software build considered feature-complete and potentially shippable, pending final testing and bug fixes. This phase is critical for hardening security and ensuring operational stability before mainnet deployment.
Definition & Purpose
A Release Candidate (RC) is a version of software that is feature-complete and has passed initial quality assurance, deemed ready for final testing before a stable release. Its primary purpose is to serve as a final proving ground for security audits, performance testing, and community validation, minimizing the risk of critical bugs reaching production.
Security Implications
The RC phase is the last opportunity for security researchers and auditors to conduct penetration testing and vulnerability assessments on a near-final codebase. Discovering a critical vulnerability at this stage can prevent catastrophic exploits post-launch, such as reentrancy attacks, governance takeovers, or fund loss. It is standard practice to run a bug bounty program concurrently with the RC release.
Operational Testing
Teams deploy the RC in a staging environment that mirrors mainnet conditions to test:
- Network upgrades and hard fork compatibility
- Node operator deployment scripts and configurations
- Monitoring and alerting systems under load
- Disaster recovery and rollback procedures This validates operational readiness and ensures a smooth, coordinated mainnet launch.
RC vs. Testnet vs. Mainnet
Understanding the deployment pipeline is key:
- Testnet: Used for early development and integration testing with valueless tokens.
- Release Candidate (RC): A candidate for mainnet, often deployed on a long-running testnet (e.g., Goerli, Sepolia) with final code, but still using test ETH.
- Mainnet: The live production blockchain where transactions have real economic value and consequences. An RC must pass all gates before promotion to mainnet.
Community & Ecosystem Coordination
A successful RC launch requires ecosystem-wide coordination. This includes:
- Wallet providers (e.g., MetaMask) updating support.
- Block explorers (e.g., Etherscan) indexing the new chain.
- Bridge and oracle operators deploying upgrades.
- DApp developers testing integrations. Clear communication channels and a defined release timeline are essential to synchronize these parties.
Exit Criteria & Promotion
A Release Candidate is promoted to a stable release only after meeting strict exit criteria, which typically include:
- Zero critical or high-severity bugs open for a defined period.
- Successful completion of a final security audit round.
- Stress test results meeting performance benchmarks (e.g., TPS, finality time).
- Community consensus from core developers, client teams, and major stakeholders via governance processes.
Common Misconceptions About Release Candidates
In blockchain and software development, a Release Candidate (RC) is a critical phase often misunderstood. This glossary clarifies the precise meaning, purpose, and lifecycle of an RC, separating fact from common industry fiction.
A Release Candidate (RC) is a pre-release software build that is considered feature-complete and potentially shippable, intended for final testing before general availability. It is not a beta version; the core assumption is that no new features will be added, and the focus shifts entirely to identifying and fixing critical bugs, regressions, and performance issues. The 'candidate' designation means it is a candidate to become the final release if no showstopper bugs are found. In blockchain protocols like Ethereum, an RC for a network upgrade (e.g., Ethereum 2.0's Altair or Shanghai upgrades) undergoes rigorous testing on testnets by node operators and developers before mainnet deployment.
Frequently Asked Questions (FAQ)
Common questions about the final testing phase before a major software or protocol upgrade is deployed to the main network.
A release candidate (RC) is a pre-release version of software, such as a blockchain client or protocol upgrade, that is considered feature-complete and potentially ready for final production deployment. It is the last stage of testing before a mainnet launch or hard fork. The primary goal is to identify any critical bugs or issues that were not caught in earlier alpha or beta testing phases. Developers and the community are encouraged to test the RC extensively on testnets to ensure stability and security. If no major issues are found, the RC becomes the final release version.
Get In Touch
today.
Our experts will offer a free quote and a 30min call to discuss your project.