Skip to content

Incremental caching support for large codebases#285

Open
karoisuzvards wants to merge 9 commits intocucumber:mainfrom
karoisuzvards:incremental-cache
Open

Incremental caching support for large codebases#285
karoisuzvards wants to merge 9 commits intocucumber:mainfrom
karoisuzvards:incremental-cache

Conversation

@karoisuzvards
Copy link

@karoisuzvards karoisuzvards commented Feb 25, 2026

🤔 What's changed?

Implement incremental caching so extension can be used on large codebases / multi-root workspaces in VSCode / Cursor.

⚡️ What's your motivation?

Cucumber/VSCode Extension is unusable on large codebases / multi-root workspaces as sync keeps infinitely looping.

Usually single file is changed but full reindex is launched - it makes VSCode / Cursor frozen

Our repo stats:

image

🏷️ What kind of change is this?

  • 💥 Breaking change (incompatible changes to the API)

Replace Arrays with Maps where keys are file URIs so we can invalidate only changed files

Recalculate only changed items -

  • if glue changed -> rebuild existing expressionBuilderResult with updates
  • if glue and newExpressionLinks are added -> update suggestions to existing SuggestionsCache

♻️ Anything particular you want feedback on?

Does the used approach makes sense?

Should we keep the backwards compatibility or we can just go with major version bump instead ?

📋 Checklist:

  • I agree to respect and uphold the Cucumber Community Code of Conduct
  • I've changed the behaviour of the code
    • I have added/updated tests to cover my changes.
  • My change requires a change to the documentation.
    • I have updated the documentation accordingly.
  • Users should know about my change
    • I have added an entry to the "Unreleased" section of the CHANGELOG, linking to this pull request.

Related issues:

open issue - cucumber/vscode#152
cucumber/language-server - cucumber/language-server#125
cucumber/vscode - cucumber/vscode#304


This text was originally generated from a template, then edited by hand. You can modify the template here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant