What is Optic?
Optic is an MIT-licensed OpenAPI tool that diffed specifications, applied lint rules, caught breaking changes between versions, and could generate or patch a specification from captured test traffic. It is no longer maintained. Optic Labs became part of Atlassian, the opticdev/optic repository was archived on January 12, 2026 and is now read-only, and useoptic.com redirects to that repository. The CLI still installs from npm as @useoptic/optic, but it receives no fixes, no new OpenAPI support and no security updates.
Why use it in the API Lifecycle?
New adoption is not recommended. If a pipeline already depends on Optic, this is what it was doing, and what each job needs to move to:
- Breaking change detection: Comparing the specification on a branch with the one on the main branch and failing the build on a removed field, a newly required parameter or a narrowed type. The maintained equivalent is oasdiff, an Apache-2.0 CLI whose
oasdiff breakingcommand does the same job and which has a GitHub Action. - Lint rules: Applying style and governance rules to the specification. vacuum and Spectral cover this, and both run Spectral-format rulesets.
- Specification from traffic: Capturing test traffic and proposing schema patches so the document matched the implementation. No direct drop-in replacement exists; validating responses against the specification in contract tests, for example with Schemathesis or Prism’s validation proxy, catches the same drift from the other direction.
Best Practices
- Plan a migration rather than pinning the last version indefinitely. An archived CLI will eventually fail on a newer OpenAPI version or a Node.js upgrade, and it fails in the job that is supposed to stop breaking changes reaching clients.
- Replace the breaking-change gate first, because it is the one with consequences. Run
oasdiff breaking base.yaml revision.yaml --fail-on ERRagainst the main branch’s specification on every pull request, which reproduces the core of what Optic’s CI check did. - Keep the rule that made the gate useful: additive changes pass, removals and new required inputs fail unless the change ships as a new version with a
DeprecationandSunsetperiod for the old one. Breaking Changes and Deprecation and Sunsetting cover what counts as breaking and how to retire the old behavior. - Move lint rules into a Spectral-format ruleset so they work with both vacuum and Spectral, and are no longer tied to a single tool’s configuration format.
- Remove
useoptic.comlinks and Optic badges from READMEs and internal docs; they now point at an archived repository and suggest a check that may no longer run.