Deployment Lifecycle
Every deployment progresses through three statuses: Building → Ingesting → Ready. This lifecycle governs when your code is compiled, when data is indexed, and what changes re-trigger historical backfill.Building
After you push a commit, Sim IDX builds your app (equivalent to runningsim build
). If there is a problem, the build fails with clear logs to help you resolve it. Fix the issue locally, commit, and push again to start a new build.
Ingesting
When the build succeeds, the deployment begins ingesting. Two things happen in parallel:- Real‑time indexing from the chain tip begins immediately.
- Historical backfill starts for the data defined by your Listener Contract. The status percentage reflects the backfill progress until it reaches 100%.
Backfill is re-triggered only when you change your Listener Contract (including generated bindings that alter what the listener indexes). API-only or other non-listener code changes will create a new deployment but will not re-run historical backfill. The new deployment continues from the latest indexed state. To force a new backfill, modify your listener, commit, and push.
Ready
Backfill has completed (100%). Your app continues to index new onchain activity in real time.Incremental Deployments
Sim IDX optimizes your development workflow through incremental deployments, which avoid unnecessary reprocessing when you make changes that don’t affect data ingestion. First Deployment per Branch: When you make the first commit to any branch (includingmain
), Sim IDX triggers a complete build and ingestion process. Your code is compiled, a new database is provisioned, historical backfill begins from scratch, and new API endpoints are created.
Subsequent Deployments: For additional commits to the same branch, the deployment behavior depends on what you’ve changed.
Non-Listener Changes result in incremental deployments. This includes changes to your sim.toml
configuration, updates to API route logic, and modifications to non-listener application code. These changes result in incremental deployments where your code is rebuilt and redeployed, the same database instance is reused, API base URLs remain unchanged, no historical backfill occurs, and real-time indexing continues uninterrupted.
Listener Changes trigger a complete redeployment. Any modification to your listener contract requires a full build and ingestion cycle because they alter what data is indexed and how it’s processed. This includes adding or modifying ABIs, changes to generated code that affect indexing logic, adding new listener files, creating new triggers in your main listener file, and any code changes within existing listener functions.
Deployment Environments
Sim IDX operates with two types of environments based on your Git branching strategy:Production Environment
When you push commits to themain
branch, Sim IDX creates production deployments. Each production deployment receives:
- A dedicated PostgreSQL database
- A unique base URL for your APIs
- Full build and ingestion lifecycle processing
If you’re using database URLs or API endpoints during development, make sure you update them after every production push.

The Current Deployment section of your App Page represents your latest production deployment.
Preview Environments
When you push commits to any branch other thanmain
, Sim IDX automatically creates isolated preview environments. Each preview deployment gets:
- Its own isolated database
- A unique API URL separate from production
- Independent build and ingestion lifecycle

The Other Deployments section of your App Page is where you can find preview deployments.
PR Flow
For a more structured development process, you can use PRs on GitHub to trigger preview deployments. This allows for code review and collaborative testing before merging changes into themain
branch.
To start, create a new branch in your local repo and push it to GitHub.
Then, open a pull request from your new branch to the main
branch.

Open a new pull request on GitHub

The PR link in the deployment details.
main
branch.