@codemirror/autocomplete

Autocompletion engine for the CodeMirror 6 code editor, with fuzzy matching, snippets, and bracket closing.

Library
npm
v6.20.4
83 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
33 /100 Needs Attention
Development Activity 4
Maintenance 0
Community 48
Maturity 60
Momentum 20

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
78 /100 Good
Architecture 85
Code Quality 78
Innovation 82
Learning Curve 65

@codemirror/autocomplete is the official autocompletion package for CodeMirror 6, the in-browser code editor toolkit built by Marijn Haverbeke. It supplies the state, view, and tooltip logic needed to show a completion popup as users type, merging one or more registered completion sources into a single ranked list with fuzzy matching, sectioning, and configurable keybindings.

Beyond raw completion, the package ships snippet support (tab-through placeholder fields), automatic bracket and quote closing, and a small set of composable helpers (ifIn, ifNotIn, completeFromList) for scoping completion sources to specific syntax contexts. Language packages across the CodeMirror ecosystem — for JavaScript, Python, SQL, CSS, and more — depend on it to provide language-aware suggestions.

What You Get

  • An autocompletion() extension with configurable activation, keymap, and tooltip rendering
  • Fuzzy and strict matching engines that score and rank completions by relevance
  • A snippet system with tab-stop navigation and field editing
  • An automatic bracket and quote closing extension
  • Composable source helpers — completeFromList, ifIn, ifNotIn, completeAnyWord

Common Use Cases

  • Wiring language-aware code completion into a CodeMirror-based IDE or code playground
  • Providing word-based completion for plain-text or markdown editors
  • Building snippet-driven scaffolding for inserting boilerplate code
  • Adding bracket and quote auto-closing to any CodeMirror 6 editor instance

Under The Hood

Architecture — The package layers cleanly: state.ts owns the completionState StateField that tracks ActiveSource objects (one per completion source) through Inactive/Pending/Result transitions and rebuilds a CompletionDialog whenever a transaction requires it; tooltip.ts renders the popup via CodeMirror’s showTooltip facet; completion.ts defines the public Completion/CompletionContext/CompletionResult contracts and helpers like completeFromList, ifIn, ifNotIn, and insertCompletionText; filter.ts implements the FuzzyMatcher/StrictMatcher scoring engines consumed by state.ts’s sortOptions; snippet.ts and closebrackets.ts are self-contained sibling extensions composed into the top-level autocompletion() extension array in index.ts. Everything is threaded through CodeMirror’s Facet/StateField/StateEffect primitives rather than an autocomplete-specific event bus, so the package is really a set of pure reducers over EditorState/Transaction objects.

Tech Stack — Pure TypeScript (100% by GitHub’s language breakdown), compiled via the shared @codemirror/buildhelper devDependency into ESM (dist/index.js) and CJS (dist/index.cjs) builds with bundled .d.ts types. Runtime dependencies are exclusively sibling CodeMirror packages — @codemirror/state, @codemirror/view, @codemirror/language — plus @lezer/common for syntax-tree access, keeping the dependency graph entirely first-party with zero third-party runtime deps.

Code Quality — test/webtest-autocomplete.ts defines a purpose-built Runner class that spins up a real EditorView per test case and asserts against live completion state rather than mocking — a heavier-weight but higher-fidelity style of testing for editor behavior. Source files are consistently documented with /// doc comments consumed by CodeMirror’s own doc-generation tooling, naming is terse but consistent with the rest of the CodeMirror 6 codebase, and the code favors immutable value classes (ActiveSource, CompletionDialog, Option) updated via reducer-style .map()/.update() methods over mutation. No explicit try/catch is visible in the reviewed files; failures in async completion sources are expected to surface as rejected promises rather than being caught internally.

API Design — The public surface is small and deliberately composable: one extension factory (autocompletion(config)), a handful of pure helper functions (completeFromList, ifIn/ifNotIn, completeAnyWord) for building CompletionSource functions, and read-only accessors (completionStatus, currentCompletions, selectedCompletion) for host applications to introspect state. Wiring a working autocomplete requires only the autocompletion() extension plus a source via language data or the override config option. Every exported symbol carries a doc comment with cross-links, and the CompletionSource/CompletionResult contract cleanly separates synchronous simple cases (a fixed option list) from async/incremental ones (validFor, update, map) without forcing all consumers to deal with that complexity upfront.

Used by 54 apps in this directory

TypeScript
81%
AGPL 3.0

massCode

Code Editors · Developer Tools · Productivity

7,085

A free, local-first developer workspace unifying snippets, notes, HTTP requests, calculations, drawings, and dev tools in one desktop app.

View details
85
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 81%
Vue 17%
Updated 2 weeks ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

29,041

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated 6 days ago
Go
53%
MIT

memos

Note Taking

64,031

Open-source, self-hosted note-taking built for quick capture — Markdown-native, lightweight, and fully yours.

View details
91
Repo Health
78
Technical
65
Dependency
Built with
Go 53%
TypeScript 46%
Updated 6 days ago
Clojure
57%
Other

Metabase

Analytics

49,827

The open-source BI platform that lets anyone ask questions and build dashboards without writing SQL — with an embedded analytics SDK and AI-powered query assistant included.

View details
95
Repo Health
84
Technical
62
Dependency
Built with
Clojure 57%
TypeScript 38%
Updated 6 days ago
TypeScript
88%
MIT

Mistle

AI Agents · Developer Tools

95

Self-hostable platform for running autonomous coding agents in isolated, credentialless sandboxes with brokered credentials, reusable snapshots, and event-driven triggers.

View details
50
Repo Health
76
Technical
70
Dependency
Built with
TypeScript 88%
Rust 11%
Updated 4 weeks ago
TypeScript
92%
Other

n8n

Automation · No Code Platforms

208,437

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
TypeScript
98%
Other

Novu

Developer Tools

40,195

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated 6 days ago
Go
63%
MIT

Obot

AI Agents · Mcp

1,120

An open-source MCP platform for organizations — host MCP servers, run MCP registries, monitor usage, and build agents and chatbots on top of the Model Context Protocol from one self-hosted deployment.

View details
88
Repo Health
70
Technical
70
Dependency
Built with
Go 63%
Svelte 21%
TypeScript 15%
Updated 1 weeks ago
TypeScript
97%
GPL 3.0

OpenKnowledge

Code Editors · Knowledge Management · Note Taking

4,674

A beautiful, local-first markdown IDE that turns any git repo into a live collaborative workspace for humans and AI coding agents like Claude, Codex, and OpenCode.

View details
80
Repo Health
89
Technical
64
Dependency
Built with
TypeScript 97%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers