NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #639 most downloaded on npm
Super-fast alternative to Babel for when you can target modern JS runtimes
Last release 10 months ago
19 Nov 2025
Ships unpredictably
gaps range from 9 days to 1.9 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
9 years old
83 releases · first in 2017
Switch from glob to tinyglobby to reduce transitive dependencies. ([#846]) (Ben McCann)
glob to tinyglobby to reduce transitive dependencies. ([#846]) (Ben McCann)Upgrade glob to fix a security vulnerability in the inflight package. ([#822]) (Patrick Nappa)
glob to fix a security vulnerability in the inflight package. ([#822]) (Patrick Nappa)
sucrase CLI no longer works in Node.js versions before 14.7.
sucrase CLI, you should pin to Sucrase 3.34.0 until you're able to upgrade
Node.js to a supported version. Note that all Node.js versions before 18 are end-of-life.sucrase CLI, you may need to silence errors related to package.json
engines, e.g. yarn --ignore-engines.One column per quarter.
Add CLI options for all remaining Sucrase options, e.g. --disable-es-transforms for disableESTransforms. (<<-ArS, Alan Pierce) ([#670], [#812])
--disable-es-transforms for
disableESTransforms. (<<-ArS, Alan Pierce) ([#670], [#812])SUCRASE_OPTIONS environment variable for configuring sucrase/register, sucrase-node,
and any programmatic require hook usages. The value must be a valid JSON object of Sucrase
options that will be merged with the usual options. ([#813])Add an option keepUnusedImports that disables all automatic import/export elision, equivalent to the TypeScript option verbatimModuleSyntax. ([#811],
keepUnusedImports that disables all automatic import/export
elision, equivalent to the TypeScript option verbatimModuleSyntax. ([#811], [#615]) (Kotaro Chikuba, Alan Pierce)await using proposal and the updated import attributes proposal.
Both are preserved in the output code, not transformed. ([#798])export {...} from statements. ([#806])
fn(x < y, x >= y) was incorrectly parsed as type arguments. ([#798])enableLegacyBabel5ModuleInterop: properly handle as default, and properly ignore type exports. ([#804], [#807]) (三咲智子 Kevin Deng, Alan Pierce)import {} and export {} statements were removed with the TypeScript transform disabled. ([#810])Improve source map quality by adding column information. This fixes several source map use cases, such as Jest inline snapshots, source map compositio
Add option to recognize and preserve JSX syntax. ([#788])
import() to import a plain CJS module.
For example, if foo.js has module.exports = 1;, then await import('foo.js') will now evaluate to {default: 1}
rather than just 1. Named exports behave the same as before.
This change matches the behavior of Node.js and other transpilers, so it is considered a bug fix rather than
breaking. If you relied on the old behavior, feel free to file an issue and it may be possible to roll back until the
next semver-major release. ([#789], [#790])Add support for new syntax in TypeScript 5.0:
export type *. ([#786])const on type parameters. ([#786])import module. ([#785])using. ([#785])export @foo class .... ([#786])<< within a type. ([#769])Add support for the TypeScript 4.9 satisfies operator. ([#766])
satisfies operator. ([#766])Add ts-node transpiler plugin, available as sucrase/ts-node-plugin. This makes it possible to use Sucrase with all ts-node features such as an ESM loa
sucrase/ts-node-plugin.
This makes it possible to use Sucrase with all ts-node features such as an ESM loader, a REPL, and configuration
via tsconfig.json. ([#729])Add support for assert {type: 'json'} in import statements. ([#746])
assert {type: 'json'} in import statements. ([#746])Add support for the JSX automatic runtime, also known as the React 17 transform. It can be enabled using jsxRuntime: true and configured using the pro
jsxRuntime: true and configured using the production and jsxImportSource
configs. ([#738], [#739], [#742], [#740])Add two new options to more closely match the module: nodenext option from TypeScript 4.7:
module: nodenext option from
TypeScript 4.7:
imports transform, the new flag preserveDynamicImport
will leave dynamic import() calls alone rather than compiling them to
promise-wrapped require. This makes it possible to load ESM modules from
CommonJS. ([#727])imports transform, the new flag injectCreateRequireForImportRequire
will compile import foo = require("foo"); to use createRequire so that
can work in a Node ES module. ([#728])disableESTransforms is enabled, remove abstract fields in the same
way that declare fields are removed. This matches TypeScript's behavior. ([#732])Add support for all new syntax in TypeScript 4.7: ([#719])
const NumberSet = Set<number>;extends on infer: T extends [infer S extends string, ...unknown[]] ? S : never;type Getter<out T> = () => T;accessor keyword in ES decorators. ([#716])a as b ?? c ([#721])const a: Array<number>=[]; ([#717])f<<T>() => void>() ([#716])Add support for TS 4.5 import/export type modifiers. ([#713])
Add support for Flow enums. ([#708], [#709])
Allow re-export after star export of same name. ([#698]) (Cameron Pitt)
Restructure package directory layout to better support ESM. ([#684]) (Neo Nie)
Allow the names true, false, and null as TS enum keys. ([#656], [#657]) (pushkine, Alan Pierce)
true, false, and null as TS enum keys. ([#656], [#657]) (pushkine, Alan Pierce)Fix ASI issue that broke function declarations immediately following a default export. ([#648]) (Ben Lambert)
Fix transformation of anonymous "export default" classes. ([#614]) (Matthieu Gicquel)
Various small bug fixes and upcoming JS feature support in the parser. ([#632], [#635], [#637])
Add option to disable ES transforms. ([#623], [#624], [#625]) (Denys Kniazevych, Alan Pierce)
Properly handle imports like import {default as myFunc} from './myFunc'; when importing from files that are not ES modules. ([#619]) (Patrik Oldsberg)
import {default as myFunc} from './myFunc';
when importing from files that are not ES modules. ([#619]) (Patrik Oldsberg)A = EnumInOtherFile.A didn't work.
([#621])Fix regression causing incomplete nullish coalescing and optional chaining in some cases. ([#610])
Add jest transform analogous to babel-plugin-jest-hoist. ([#540]) (Patrik Oldsberg)
jest transform analogous to babel-plugin-jest-hoist. ([#540]) (Patrik Oldsberg)register function or addHook, return a function that
reverts the hook. ([#604]) (Anthony Fu)Fix bug where TS method overloads in a class would cause later class fields to not be handled properly. ([#593])
Fix incorrect export removal when exporting a variable defined using a destructure declaration. ([#564])
as to remap keys in mapped types. Also add parsing
for static blocks and pass them through in the output. ([#567])pirates options matcher and ignoreNodeModules when
directly calling registerJS and related functions. ([#571], [#573])
(Gordon Leigh)declare. ([#575])Add support for TypeScript 4.0 type syntax: labeled tuples, catch clause unknown. ([#556]) (Patrik Oldsberg)
unknown. ([#556]) (Patrik Oldsberg)Add support for declare class fields in TypeScript. ([#537])
declare class fields in TypeScript. ([#537])Add support for export type {T} from './T'; type-only export syntax. ([#533]) (Patrik Oldsberg)
export type {T} from './T'; type-only export syntax. ([#533]) (Patrik Oldsberg)Add support for TypeScript 3.8 type-only imports and exports. ([#523], [#532])
--production flag to the CLI. ([#529]) (Matthew Phillips)+ or - in constructor parameter defaults. ([#531])Properly escape file paths in the react-hot-loader transform. ([#512]) (Jan Zípek)
Fix crash when parsing asserts b TypeScript return signatures. ([#504])
asserts b TypeScript return signatures. ([#504])Add support for TypeScript assertion signature syntax, other parser improvements. ([#485], [#487])
Add runtime validation for options. ([#468])
.tsx and .jsx options when running sucrase from the command line. ([#448]) (Ricardo Tomasi, Alexander Mextner)Fix parsing of a c in TypeScript. ([#438])
a<b>c in TypeScript. ([#438])import = statements that are only used as a type. ([#441])Fix bug where /*/ was being parsed incorrectly. ([#430])
/*/ was being parsed incorrectly. ([#430])Fix Flow bug where implements caused the class name to be incorrectly recognized. ([#409])
implements caused the class name to be incorrectly recognized. ([#409])!: in TS variable declarations. ([#410])Fix bug when processing a declaration that looks like an export assignment. ([#402])
Avoid false positive when detecting if a class has a superclass. ([#399])
Fix syntax error on arrow functions with multiline return types. ([#393])
Fix crash on optional arrow function params without type annotations. ([#389])
Fix react-hot-loader transform syntax error with some export styles. ([#384])
Add a react-hot-loader transform. ([#376])
import() syntax in TS types. ([#380])Fix infinite loop when a file ends with a short identifier ([#363])
Various simplifications in prep for compiling the project with AssemblyScript.
declare module parsing ([#359])Fix crash on empty export expressions ([#338])
declare global ([#339])Fix perf regression in TypeScript parsing ([#327])
Add CLI support for jsx pragmas ([#321]) (Josiah Savary)
Change class field implementation to use initializer methods ([#313])
Implement destructuring in export declarations ([#305])
Quote shorthand prop keys that contain a hyphen ([#292]) (Kevin Gao)
Add a sucrase-node CLI that wraps node. ([#288])
Add a --out-extension option to the CLI. ([#282])
Allow TS type parameters on object member methods. ([#276])
Fix crash when using JSX elements as props. ([#268]) (Erik Arvidsson)
Add basic support for source maps ([#257], [#261])
* Fix crash in getVersion.
getVersion.transform now returns an object ([#244]). You now should write transform(...).code instead of just transform(...). code is the only property for now,
transform now returns an object ([#244]). You now should write
transform(...).code instead of just transform(...). code is the only
property for now, but this allows Sucrase to return source maps and possibly
other values.dist folder has been restructured, so direct internal module
imports may break.Add support for JSX fragment syntax.
React.createElement and React.Fragment.Your coding agent can read these notes before it upgrades. Set up the MCP server →