TypeScript 7.1 beta, tested: it catches the import you forgot to label, and it moved the API
SummaryThe first feature release of the Go-based TypeScript compiler adds a stable API for tools and type rules for import attributes. We ran it on our own site and on small test projects next to 7.0.2 and 5.9.3. The fixes hold. If your tooling imported the 7.0 API, it breaks.
· MODEL Editors · 3 min read
Some links may be affiliate links. Disclosure

TypeScript 7.0, the rewrite of the TypeScript compiler in Go, shipped in the summer. Version 7.1 is its first feature release, and Microsoft put out the beta on October 20. You install it with npm install -D typescript@beta.
Two changes matter most if you build things. First, 7.1 ships an API that other tools can use to run the compiler: typescript/sync, a Promise-based typescript/async, and entry points for file systems and syntax trees. Second, TypeScript now understands import attributes in type declarations. That's the with { type: "text" } part of import readme from "./README.md" with { type: "text" }, which tells a runtime or bundler how to load a file.
The test. We installed TypeScript 5.9.3 (what our site uses), 7.0.2 (the current release) and 7.1.0-beta from npm on an 8-core Linux box with Node 20. We type-checked a copy of our own Next.js site five times with each, wrote small test projects for the import-attribute rules, and ran the blog's own API example. No editor, no AI model.
The forgotten attribute. The usual way to let TypeScript import a Markdown file is a declaration like declare module "*.md". With that, an import that leaves off with { type: "text" } passed with no error on all three versions, even though the runtime may load it differently or not at all. 7.1 lets you write declare module "*" with { type: "text" } instead. With that declaration, the same import failed with TS2307, "Cannot find module './README.md'", and the correct import came back typed as a string: assigning it to a number failed with TS2322. 5.9.3 and 7.0.2 can't read the new declaration at all; they stop with three syntax errors. One file of declarations covers every file type that uses type: "text".
Our site. All three versions found zero errors on the same 75 source files. 7.0.2 and 7.1 both took about 0.4 seconds (medians of 0.41 and 0.43), against 3.31 seconds on 5.9.3; that speedup came with 7.0, not 7.1. What 7.1 changed on our project is memory: TypeScript's own report said 105 MB on all five 7.1 runs, against 153 MB on all five 7.0.2 runs, about 31% less.
The API. We ran the blog's snapshot example, which type-checks an in-memory file, swaps in a fixed version and checks again. It printed what the blog says it should: one error before, zero after, and still one when asking the old snapshot again. The first check took 308 milliseconds in our one run.
The catch. 7.0.2 already shipped this API under paths marked typescript/unstable/*. 7.1 removes them. Importing typescript/unstable/sync on the 7.1 beta failed with ERR_PACKAGE_PATH_NOT_EXPORTED, so a tool built against 7.0 needs its imports changed before it runs. The new import-attribute declarations aren't built into TypeScript; you add them to your own project, and TypeScript doesn't check that the imported file exists. And it is a beta.
What we did not test. Source phase imports and WebAssembly, the new es2026 target and library methods, the async API, editor features, Windows and macOS, large monorepos, and compatibility with linters and other tools built on TypeScript.
The verdict. Try the beta in a branch if you import non-code files or build tools on the compiler. Add the attribute declarations to catch unlabeled imports. If anything you run imports typescript/unstable/*, move it to the new entry points before upgrading.
Disclosure: not sponsored. No affiliate links. MODEL has no relationship with Microsoft. Full test notes, commands and outputs are kept by MODEL Editors.
Sources
- Announcing TypeScript 7.1 Beta (Oct 20, 2026)
Microsoft TypeScript blog
- TypeScript v7.1-beta release
Microsoft (GitHub)
- typescript 7.1.0-beta
npm
See the MODEL tool card: TypeScript 7.1 beta
FREE · EVERY WEEK
The top AI tools this week, tested.
Every week MODEL's editors pick the AI tools worth your time, try them hands-on, and tell you what's good, what's not, and who it's for. Free, in your inbox.
Free. Unsubscribe anytime. Our picks are editorial and can't be bought.
The weekly three is editorial. A subscription does not buy a place in it.
Continue

Builder tip
Patched and unpatched Node both say brotli 1.1.0. Here's how to check for Node2Shell.
The Brotli decoder flaw known as Node2Shell (CVE-2026-111497) sits inside Node.js, the PyPI Brotli packages and plenty of HTTP clients. Your app doesn't have to import Brotli to be exposed. We checked Node and Python on a Linux box and found the version numbers you'd look at first can mislead you.
· MODEL Editors

The test
agent-browser 0.39.2, tested: it stopped telling your agent that dead clicks worked
Vercel Labs' browser tool for AI agents shipped a fix this week for clicks that reported success without ever reaching the page. We ran the old and new versions side by side on our own test pages, with no AI model and no API key. The fix holds. The catch is in the docs' own security example.
· MODEL Editors

Builder tip
Your type checker can't see a script's dependencies. uv check --script can.
One-file Python scripts, the kind coding agents write all day, usually get type-checked against the wrong environment, so bugs in third-party calls slip through. Astral's new experimental uv check reads the script's own dependency header first. We planted two bugs and ran it.
· MODEL Editors