A VS Code extension that brings Google's Baseline browser compatibility data directly into your editor with intelligent recommendations powered by algorithmic similarity matching. Built for the Baseline Tooling Hackathon.
I got tired of the constant context-switching. See a cool CSS feature → check Can I Use → check MDN → check if Safari supports it → forget what I was building. Repeat 20 times a day.
Google's Baseline initiative finally standardized what "production-ready" means across browsers, but the data lived on websites, not where I actually code. So I built this.
Then I made it smart. Instead of just showing compatibility data, it now recommends alternatives, discovers upgrade paths, and learns relationships between features automatically. No more guessing what to use instead of that experimental feature.
Most compatibility tools are basically glorified lookups. You ask "can I use X?" and they say "yes/no". This extension does that, but also:
- Discovers alternatives algorithmically using 6 similarity metrics (name, description, category, browser support, temporal, baseline status)
- Finds upgrade paths from legacy features to modern equivalents automatically
- Configurable for your project - set target browsers and get personalized warnings
- Works for ALL features - not just the 50 hardcoded mappings, but all 1000+ features in the database
Think of it as "IntelliSense for web compatibility".
When you hover over or click a feature with limited support, you get:
Algorithmic Alternatives (85% confidence):
- Finds features in the same category with better support
- Calculates similarity using name matching, description analysis, and browser overlap
- Works for features I've never seen before
Curated Alternatives (95% confidence):
- Hand-picked replacements for critical features
- e.g.,
@container→@media queries+clamp()
Upgrade Paths (90% confidence):
- Detects legacy patterns and suggests modern equivalents
- e.g.,
float→flexbox→grid - Uses temporal similarity to find "what came after this?"
Complementary Features (75% confidence):
- Features that work well together
- e.g., Using
grid? Considergap,subgrid,aspect-ratio
Each recommendation shows:
- Confidence score (how sure the algorithm is)
- Reason (why it's being suggested)
- Baseline status (safe to use or not)
- Click to navigate to that feature
Run Baseline: Analyze Project Compatibility to scan your entire codebase.
Detects 60+ patterns across CSS and JavaScript:
- CSS: Grid, Flexbox, Container Queries,
:has(), Nesting, Cascade Layers, Custom Properties,clamp(), Backdrop Filter, Scroll Snap, and more - JavaScript: Fetch, Promises, Async/Await, Optional Chaining, Intersection Observer, Web Components, ES6 Modules, and more
You get:
- Compatibility score (0-100)
- Feature breakdown (safe vs risky)
- Usage frequency per feature
- File-by-file locations
- Actionable suggestions with alternatives
Force-directed graph showing 100+ web features with their relationships.
Features:
- Color-coded by status: Green (widely available), Yellow (newly available), Red (limited/unknown)
- Shows relationships: Dashed lines = alternatives, Arrows = upgrade paths, Solid lines = related features
- Interactive exploration: Click any node → see smart recommendations
- Search & filter: Type to highlight matching features
- Multiple layouts: Compatibility view, Category grouping, Timeline view
- Live stats: See CSS vs JS breakdown, support distribution
Discovery mode: Start with what you know (e.g., "flexbox") → explore alternatives and upgrades → learn about complementary features. It's like a Wikipedia rabbit hole for web features.
Set your target browsers and risk tolerance. The extension adapts to your needs.
Run Baseline: Configure Browser Targets for an interactive wizard, or edit settings:
{
"baseline-navigator.targetBrowsers": ["chrome", "firefox", "safari", "edge"],
"baseline-navigator.minimumBrowserVersions": {
"chrome": "90",
"firefox": "88",
"safari": "14"
},
"baseline-navigator.riskTolerance": "moderate"
}What this does:
- Hover info shows only your target browsers
- Diagnostics warn only about features unsupported by your targets
- Recommendations prioritize features that work in your browser set
- Risk tolerance controls warning strictness:
strict- Warn about newly available featuresmoderate- Warn about limited support (default)permissive- Warn only about completely unsupported
Status bar shows your current mode: Baseline [moderate]
Real-time warnings in your editor:
- Squiggly underlines for risky features
- Hover to see why it's flagged
- Configurable severity (Error/Warning/Info)
Quick fixes via lightbulb:
- Click to see alternatives
- One-click refactoring (where applicable)
- Links to documentation
Works in: CSS, SCSS, LESS, JavaScript, TypeScript, JSX, TSX, HTML
- Download the latest release
.vsixfile - In VS Code: Extensions →
...menu → Install from VSIX - Select the downloaded file
- Reload VS Code
- Run
Baseline: Configure Browser Targetsto set up (optional but recommended)
Try hovering over display: grid or @container to see it in action.
git clone https://github.com/AnchitSingh/baseline-navigator.git
cd baseline-navigator
npm install
npm run compile
# Press F5 in VS Code to launch Extension Development HostBaseline: Configure Browser Targets- Interactive setup wizardBaseline: Analyze Project Compatibility- Full project scanBaseline: Show Feature Graph- Open interactive visualizationBaseline: Quick Compatibility Check- Fast project overviewBaseline: Check File Compatibility- Analyze current file only
Open Settings (Ctrl+,) and search for "Baseline Navigator". Key options:
{
// Master toggle
"baseline-navigator.enabled": true,
// Auto-check on save
"baseline-navigator.checkOnSave": true,
// Target browsers
"baseline-navigator.targetBrowsers": ["chrome", "firefox", "safari", "edge"],
// Warning strictness
"baseline-navigator.riskTolerance": "moderate", // strict | moderate | permissive
// Recommendations
"baseline-navigator.showRecommendations": true,
"baseline-navigator.maxRecommendations": 5,
// UI toggles
"baseline-navigator.enableHoverInfo": true,
"baseline-navigator.enableCodeActions": true
}VS Code Extension
├─ ConfigurationManager (user settings & browser targets)
├─ FeaturePatternRegistry (60+ detection patterns)
├─ InvertedIndex (fast feature lookups)
├─ SimilarityEngine (6 algorithmic metrics)
│ ├─ Name similarity (Jaccard + Levenshtein)
│ ├─ Description similarity (text analysis)
│ ├─ Category matching
│ ├─ Browser support overlap
│ ├─ Baseline status correlation
│ └─ Temporal similarity (release dates)
├─ RecommendationEngine (hardcoded + algorithmic)
├─ ProjectAnalyzer (regex-based code scanner)
├─ Providers (Hover, Diagnostics, CodeActions)
└─ GraphView (D3 force-directed visualization)
└─ web-features data (1000+ features bundled)
Hover Flow:
User hovers over "grid"
→ FeaturePatternRegistry resolves aliases
→ InvertedIndex fetches feature data
→ SimilarityEngine finds related features
→ RecommendationEngine ranks by confidence
→ HoverProvider shows formatted tooltip
Recommendation Algorithm:
For any feature, the engine:
- Checks hardcoded mappings (curated alternatives, 95% confidence)
- Runs similarity analysis against all features:
- Name matching: "grid-template-columns" → "subgrid" (high similarity)
- Category: Both in "layout" category (+0.4 score)
- Browser support: Similar version requirements (+0.15 score)
- Temporal: Released around same time (+0.1 score)
- Composite score: 0.85 → included as recommendation
- Filters by baseline status (only suggest widely supported)
- Ranks by confidence (hardcoded > algorithmic > contextual)
- Returns top N (configurable, default 5)
Why this works: Most features don't have hardcoded alternatives, but similarity metrics can discover "oh, you're using experimental @container? Here are 3 features in the same category with widely support that do similar things."
Uses centralized FeaturePatternRegistry with regex patterns:
// Example: Container Queries
{
id: 'container-queries',
aliases: ['css-container-queries', 'container'],
patterns: [
/@container(?:\s+[\w-]+)?(?:\s*\([^)]+\))?/gi,
/container-(?:type|name):/gi
],
category: 'css',
alternatives: ['media-queries', 'clamp'],
complementary: ['clamp', 'aspect-ratio']
}60+ patterns covering CSS layout, selectors, functions, visual effects, animations, scroll, and JavaScript APIs.
Pre-builds indices for:
- Baseline status → feature IDs
- Browser + version → feature IDs
- Category → feature IDs
- Tags → feature IDs
- Name → feature ID
Enables instant lookups like "all features with baseline: 'limited'" or "all features Safari 14+ supports".
Uses D3 force simulation with:
- Repulsion between nodes (avoid overlap)
- Attraction along edges (show relationships)
- Center gravity (keep it bounded)
Edges connect:
- Alternatives (dashed blue lines)
- Upgrades (green arrows)
- Related features in same category (thin white lines)
Layouts reorganize by compatibility status, category, or timeline.
Optimizations:
- Caching with configurable timeout (default 5min)
- Lazy graph initialization
- Debounced diagnostics
- Incremental file scanning
Current limitations:
- Regex pattern matching has gaps (e.g., CSS-in-JS, dynamic feature usage)
- Graph limited to 100 nodes for performance
- No framework-specific detection (React hooks, Vue composition API)
- Recommendations don't consider project dependencies
Roadmap:
- AST parsing for more accurate detection
- Framework adapters (React, Vue, Angular, Svelte)
- Integration with real usage analytics (MDN, Chrome UX Report)
- AI-powered recommendations (fine-tuned on migration patterns)
- Team sharing (export/import configuration)
- CI/CD integration (fail builds on risky features)
- Historical trend tracking ("your compatibility score over time")
- Language: TypeScript
- Platform: VS Code Extension API
- Data source:
web-featuresnpm package (official Google Baseline data) - Visualization: D3.js force-directed graphs, custom Canvas rendering
- Build: Webpack 5
- Testing: VS Code Extension Test Suite
Built for the Baseline Tooling Hackathon (Sept-Oct 2025).
Innovation
- First tool (that I know of) to use algorithmic similarity matching for web feature recommendations
- Most compatibility checkers just lookup data; this one discovers relationships and suggests alternatives automatically
- Novel approach: inverted index + knowledge graph + machine learning-style scoring
- Works for features that don't have hardcoded mappings (scales to 1000+ features)
Usefulness
- Integrates with VS Code (14M+ developers worldwide)
- Zero configuration required (works out of the box)
- Configurable for real projects (set your browser targets, not generic advice)
- Saves hours of context-switching (no more "let me check Can I Use")
- I'm already using it daily in production projects
Use of Baseline Data
- Uses
web-featuresnpm package as single source of truth (1000+ features) - All compatibility info, status labels, browser versions, and dates come from official Baseline data
- Inverted index enables novel queries (e.g., "what became baseline in 2023?")
- Graph visualization makes Baseline data explorable and discoverable
- Respects Baseline philosophy: "widely available" = safe to use
Impact Potential
- Reduces time developers spend on compatibility research
- Encourages use of modern, well-supported features
- Educates developers about upgrade paths (e.g., "you can stop using floats now")
- Makes Baseline data actionable (not just informational)
- Open source - other tools can build on this approach
This started as a hackathon project but I'm maintaining it long-term.
Areas that need work:
- Framework detection (React, Vue, Svelte)
- AST parsing (better than regex)
- Performance optimization (large projects)
- Test coverage (currently minimal)
- Similarity algorithm tuning
How to contribute:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Submit a PR
See CONTRIBUTING.md for detailed guidelines.
MIT - see LICENSE
- Google Baseline Team for standardizing browser compatibility
- web-features maintainers for the excellent data package
- VS Code team for the extension API
- D3.js community for visualization tools
Built by @AnchitSingh
Report bugs: GitHub Issues
Join discussion: GitHub Discussions
⭐ If this extension saved you time, consider starring the repo!
"Stop switching tabs. Start shipping features." - Baseline Navigator



