When evolving public APIs, prioritize backward compatibility and avoid breaking changes to existing interfaces. Support both legacy and new syntax when standards evolve, and clearly document any deprecations.
Key practices:
Example from import syntax evolution:
// Support both new and legacy syntax
const importAttributesPlugins = ["importAttributes", "importAssertions"];
// Or use parser options to handle both
const keyword = property === "assertions" || node.extra?.deprecatedAssertSyntax ? "assert" : "with";
This approach ensures that existing code continues to work while allowing adoption of newer standards, reducing friction for API consumers and maintaining ecosystem stability.
Enter the URL of a public GitHub repository