12k
All articles

5 GitHub Repos Worth Starring Right Now

Five GitHub repos for JavaScript and TypeScript developers: Biome, ast-grep, Zod, Tauri, and Ollama for linting, codemods, validation, desktop apps, and local AI.

OpenReplay Team
OpenReplay Team
5 GitHub Repos Worth Starring Right Now

The most useful GitHub repositories for working JavaScript and TypeScript developers in 2026 aren’t the giant learning lists everyone already stars — they’re the tools that quietly replace a whole category of your daily workflow. This is a deliberately short, opinionated shortlist: five repos that consolidate frontend/JS-TS work — linting, codemods, validation, desktop packaging, and local AI — picked for what they do this week, not how many stars they’ve accumulated. The usual canon (freeCodeCamp, developer-roadmap, awesome, public-apis) is excluded on purpose; you already know those.

Treat every popularity figure here as approximate, and check each repo on GitHub for live numbers — star and download counts go stale faster than anything else in a post like this.

Key Takeaways

  • Biome is a single Rust binary that replaces the ESLint + Prettier pair; npx @biomejs/biome check --write formats and autofixes a repo in one pass with zero config.
  • ast-grep matches and rewrites code by AST pattern that looks like the code itself ($VAR wildcards), making it the durable codemod primitive for cleaning up large, AI-generated refactors.
  • Zod lets you write one schema that gives you both runtime validation and the inferred TypeScript type, killing drift between validators and types.
  • Tauri builds desktop and mobile apps from a web frontend using the OS-native WebView instead of bundling Chromium, so binaries are a fraction of Electron’s size.
  • Ollama’s ollama launch command points Claude Code, Codex, or OpenCode at a local open-weight model with no config — coding work at $0 per token, code never leaving the machine.

Biome: one Rust binary for formatting and linting

Biome is a single Rust binary that does the job of ESLint and Prettier together, with no config required. The problem it solves is the brittle, slow, multi-package toolchain most JS/TS repos still carry — a Prettier install, an ESLint install, a .eslintrc, a plugin graph, and the constant friction between formatter and linter rules. Biome collapses that into one fast executable with sensible defaults.

Run this on an existing repo to format and apply safe fixes in a single pass:

npx @biomejs/biome check --write

--write applies safe fixes; add --unsafe (--write --unsafe) when you want Biome to apply fixes it can’t guarantee preserve behavior.

The “why now” is maturity. As of mid-2026 Biome is on the v2.5 line, has crossed 500 lint rules, and has surpassed 15 million monthly downloads. It’s also shipping Vercel-sponsored type-aware lint rules that don’t depend on the TypeScript compiler — the first toolchain to infer types for linting without invoking tsc. Star Biome if you maintain a JS/TS codebase and are tired of babysitting an ESLint + Prettier config.

ast-grep: structural search and codemods by AST pattern

ast-grep is an abstract-syntax-tree-based tool that searches code by pattern — think of it as grep, but matching AST nodes instead of text, where you write patterns as if you are writing ordinary code and it matches all code with the same syntactical structure. That makes it the durable codemod primitive for the kind of large, repeatable refactor that AI-generated code now produces constantly.

You use the $ sign plus uppercase letters as a wildcard — for example, $MATCH — to match any single AST node. To find every fetch() call and rewrite it to a client method across a codebase, with an interactive review step:

ast-grep run -p 'fetch($URL)' -r 'apiClient.get($URL)' -l ts -i

The pattern must be enclosed in single quotes to prevent the shell from interpreting the $ sign. Drop the -i and add -U to apply every change non-interactively once you trust the pattern.

Be honest about maturity: ast-grep is still pre-1.0 (v0.44 as of mid-2026, marked alpha), but it ships frequent releases and is widely used. It’s tree-sitter based and multi-language — supported languages include C, C++, Rust, Go, Java, Python, C#, JavaScript, TypeScript, HTML, CSS, and more. It also ships an official MCP server, so coding agents can run structural search directly. Star ast-grep if you do migrations or enforce code conventions at scale.

Zod: one schema for runtime validation and TypeScript types

Zod is TypeScript-first schema validation with static type inference: you write one schema and get both runtime validation and the inferred TypeScript type, which eliminates the drift that creeps in when validators and type declarations are maintained separately. It’s zero-dependency, roughly 2kb gzipped on the core, and on the v4 line with approximately 31M+ weekly downloads as of mid-2026 (check npm for the live figure).

Validate an API response and infer its type in one place:

import * as z from "zod";

const User = z.object({
  email: z.email(),
  website: z.url(),
});

type User = z.infer<typeof User>;

const result = User.safeParse(await res.json());
if (!result.success) {
  console.error(result.error.issues);
}

Get the v4 API right, because it changed: import with import * as z from "zod", and string formats are now top-level functions like z.email() and z.url(). The older method forms — z.string().email()still work but are deprecated and slated for removal in the next major. v4 also added z.fromJSONSchema() for converting JSON Schema into Zod schemas, though that one is explicitly experimental and not part of the stable API yet. Star Zod if you touch API boundaries, forms, or env parsing.

Tauri: desktop and mobile apps without bundling Chromium

Tauri builds cross-platform desktop and mobile apps from a web frontend (any framework) with a Rust backend, using the operating system’s native WebView instead of bundling Chromium. That architectural choice is why the binaries are small: a minimal Tauri app can be under 600KB, and real-world apps with a full frontend typically land in the single-digit megabytes. By comparison, Electron bundles Chromium and Node.js, which produces larger installers in the 80–150MB range and higher memory usage, while Tauri’s native WebView approach produces installers under 10MB.

Scaffold a project and wrap an existing web UI into a native window:

npm create tauri-app

Tauri v2 has been stable since October 2024 and added first-class build targets for iOS and Android on top of desktop. One honest caveat: the team frames mobile as production-capable rather than fully first-class — you can ship real mobile apps, but the desktop story is the more mature one. For a deeper trade-off analysis, OpenReplay’s Electron vs. Tauri comparison is the counterpoint worth reading before you commit a stack. Star Tauri if you build internal tools, utilities, or anything where a 100MB+ Electron download is overkill.

Ollama: run open-weight LLMs locally with one command

Ollama is the de-facto runtime for running open-weight LLMs locally with one command and an OpenAI-compatible API, with GPU and Apple-Silicon acceleration handled automatically. The “why now” is that local models now cover real coding, RAG, and summarization work at $0 per token, with your code and data staying on-device. Its ollama launch command sets up and runs coding tools like Claude Code, OpenCode, and Codex with local or cloud models, with no environment variables or config files needed.

Point Claude Code at a local coding model:

ollama launch claude --model qwen3-coder

This requires Ollama v0.15+ and a model you’ve already pulled. Ollama exposes an OpenAI-compatible endpoint at http://localhost:11434/v1, so existing OpenAI-client code can be pointed at localhost with a base-URL change; it also connects Claude Code through its Anthropic-compatible API, which is what lets agentic tools talk to local models without a proxy. Star Ollama if you want to cut API spend, work offline, or keep proprietary code off third-party servers.

Picking the best GitHub repositories for your stack

The thread connecting these five is consolidation: each replaces a noisier, heavier, or more expensive part of a frontend workflow with a single sharp tool. Pick the one that maps to your nearest friction — a tangled lint config, a refactor you’ve been dreading, a validator that drifts from your types, an Electron bundle that’s too fat, or an API bill that’s too high — star it, and run its one-line command before the week is out. That’s the fastest way to find out whether a repo earns a permanent place in your toolchain or just a star.

FAQs

Can Biome run alongside an existing ESLint and Prettier setup, or does it fully replace them?

Biome can run alongside ESLint and Prettier during a migration, but its purpose is to replace both with a single Rust binary. A common path is to adopt Biome for formatting first, disable Prettier, then progressively move lint rules over as Biome's rule set covers your needs. As of mid-2026 Biome has crossed 500 lint rules and ships type-aware rules that do not invoke the TypeScript compiler, which closes much of the gap that previously required keeping ESLint around.

What is the difference between ast-grep and a regular find-and-replace or regex codemod?

ast-grep matches code by abstract syntax tree structure rather than by text, so a pattern like 'fetch($URL)' matches that call regardless of whitespace, line breaks, or formatting, where a regex would break. The dollar-sign wildcards bind to whole AST nodes, making rewrites structurally aware instead of string-based. This makes ast-grep reliable for large refactors and AI-generated cleanup, since it understands code grammar across languages like TypeScript, Python, Go, and Rust instead of treating source as plain characters.

Do I need to rewrite my Zod v3 schemas to upgrade to v4?

Most Zod v3 schemas keep working in v4 because the method forms like z.string().email() still function, but they are now deprecated and slated for removal in the next major version. The recommended v4 approach imports with 'import * as z from zod' and uses top-level format helpers such as z.email() and z.url(). Plan to migrate the deprecated method forms over time rather than treating them as permanent, and note that z.fromJSONSchema() is experimental and not part of the stable API.

Does running models locally with Ollama require a dedicated GPU?

A dedicated GPU is not required, since Ollama runs on CPU and automatically uses available acceleration including NVIDIA GPUs and Apple Silicon. Larger models run noticeably faster with a GPU or on Apple Silicon, while smaller open-weight models remain usable on CPU-only machines for coding, summarization, and RAG tasks. Performance scales with available memory and hardware, so model size should be matched to the machine rather than assuming a GPU is mandatory to get useful local inference.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.