When changing a user-facing interface (API/config/grammar or externally consumed resources), treat it as a versioned contract:
1) Classify change severity and reflect it in release artifacts
2) Isolate breaking changes from releases you can’t roll back
3) Explicitly version external interface/resource URLs
Example patterns:
htmlLabels config value whenever possible‘my-feature’: minor
—
feat: Deprecate flowchart.htmlLabels in favor of root-level htmlLabels
- Staged syntax release (don’t mix breaking syntax):
```text
Release N: ship only `@{ ... }` syntax (no additional simplified grammar)
Release N+1: add simplified syntax under separate ticket/version
// Prefer an URL that includes a major version segment
fetch('https://cdn.example.com/mermaid@3/icons/icons.json')
Apply this standard to ensure clients get predictable behavior, deprecations are actionable (not vague), and breakage risk is contained through semantic change classification and explicit versioning.
Enter the URL of a public GitHub repository