Harper 2.0

Hey all! We’re fi­nally re­leas­ing Harper 2.0. Why?

It is­n’t be­cause we have any new ground­break­ing fea­tures in this re­lease, be­cause we don’t let ma­jor ver­sion­ing stop us from push­ing those out as soon as they’re ready. It’s be­cause we have some break­ing changes.

The biggest one only ap­plies to you if you con­sume harper.js. From now on, in­stead of im­port­ing your bi­nary from the main Harper mod­ule, you’ll im­port it from one of four spe­cial­ized mod­ules.

Previously, you’d im­port the Harper WebAssembly bi­nary with:

import { LocalLinter, binary } from "harper.js";

As of Harper 2.0, you’ll im­port it like this:

import { LocalLinter } from "harper.js";
import { binary } from "harper.js/binary"; 

It’s that sim­ple! Thanks to this change, you’ll find that your ap­pli­ca­tions are more con­ducive to tree-shak­ing and there­fore might even be a bit smaller!

In ad­di­tion to that large break­ing change, we also have a bunch of smaller im­prove­ments rolling out. I won’t go through them one by one, but you’re free to read through any of the linked pull re­quests in the main re­lease notes.

Published April 9, 2026 at 6:00 AM

Proofread by Harper.

Comments