FAQ

Common questions

Which languages are supported?

JavaScript, TypeScript, Python, Go, Rust, Ruby, Java, C, C++, C#, Kotlin, SQL, Vue, and more. Use // or # or /* */ comments with @expiry. One expiry scan covers the whole repo. Watch the product video →

Does this work with our stack?

Install the npm CLI and run in GitHub Actions on every pull request. Dependency conditions (dep:) read npm packages; use issue:, date:, or env: in other languages.

What happens when a condition is met?

Free: the annotation moves to ready, CI can fail if overdue, and a PR comment summarizes findings. Pro: Expiry opens a draft PR that deletes the annotated lines or block, ready for your team's review.

Is this just a fancy TODO linter?

TODOs have no machine-readable deletion criteria. Expiry conditions are evaluated against live signals — issue state, dependency versions, flags — so "ready to delete" is a fact, not a meeting agenda item.

How do Pro licenses work in CI?

Keys are tied to your Stripe subscription and validated online in CI. Cancel billing and Pro commands stop working. Keys renew on payment — update EXPIRY_LICENSE_KEY in GitHub secrets when your dashboard shows a new key.

Do we need Pro to get value?

No. The free CLI and GitHub Action enforce deadlines, surface health scores, and block merges on overdue code. Pro pays for automation: cleanup PRs, Slack, Jira sync, SARIF, and policy rules at scale.