Major Changes
-
#418
be53ccd- Support React 19 type definitions, add anexportsmap, dropengines, and raise the
output target.LivePreview's overloads referenced the globalJSXnamespace, which@types/react@19
removed. Because those types are emitted into the published declarations, consumers on React
19 types failed to compile. They now useReact.JSX, which resolves under both
@types/react@18and@types/react@19.The package also gains an
exportsmap with separate types for the ESM and CJS conditions.
Filenames are unchanged from 4.1.x (dist/index.js,dist/index.mjs,dist/index.d.ts), so
main,module, andtypesresolve exactly as before. Subpaths other than
./package.jsonare no longer importable; only the package root was ever documented.Output is now built for
es2022rather thanes6, so the bundle may contain syntax such as
optional chaining that previous releases transpiled away.The
enginesfield is gone, along with thenode: ">= 0.12.0"andnpm: ">= 2.0.0"it
declared. Both were years out of date, and neither constrained anything real: this is browser
code, so the Node version that installs it has no bearing on whether it runs. npm will no
longer print an engine warning against those bounds.None of this changes the public API -- same exports, same props, same
react >=18peer
range -- but theexportsmap and the raised output target are enough that a major release
is the honest way to ship them. -
#421
004b007- Type theliveprop thatwithLiveinjects, instead ofRecord<string, unknown>.Wrapped components saw
unknownfor every key, solive.elementcould not be
rendered andlive.errorcould not be read without casting first. The prop now
uses the same type the context is created with, which is the shape
the docs
have always described:code,error,element,onError,onChange.const Panel = withLive(({ live }) => { const Result = live.element; // was `unknown`, now a component return Result ? <Result /> : <pre>{live.error}</pre>; });
Types only, with no runtime change. It is a narrowing, so a wrapped component
that reads a key outside that shape offlivewill now fail to compile.
Patch Changes
-
#418
be53ccd- Forward theEditorprismprop toprism-react-renderer. It was typed but never passed through, so a custom Prism instance was silently ignored. -
#418
be53ccd- Stop emitting React's__selfand__sourcedebug props from transpiled code.Sucrase adds these props to every element it compiles. They describe a source file, and there
is no source file here -- the code comes from a live editor rather than from disk, so the
filename sucrase emitted was always the empty string. React ignores both props, and React 19
additionally treats__selfas the signature of an outdated JSX transform, logging
"Your app (or one of its dependencies) is using an outdated JSX transform" to the console of
every page rendering aLiveProvider.Transpiling with sucrase's
productionoption drops both props, and with them the
_jsxFileNameconstant that the transform pipeline used to splice out and re-add solely to
keep__sourceresolvable. -
#418
be53ccd- AddgetDerivedStateFromErrorto the internal error boundary, so a runtime error in live code no longer logs a React warning about it.