NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2634 most downloaded on pub.dev
A Dart library for seamless interaction with JavaScript using `dart:js_interop`, supporting deep transformations of objects, maps, and arrays.
Last release 8 days ago
30 Sep 2026
Release timing varies
gaps range from 3 weeks to 7 months
Nearly every release is documented
notes for 14 of 14 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
14 releases · first in 2025
JSArrayOfJSNumberExtension.toListNum / JSArrayExtension.toListOfInt :
JSArrayOfJSNumberExtension.toListNum / JSArrayExtension.toListOfInt:
±(2^53 - 1)) were converted with toInt(), which caps themdart2wasm (e.g. 1e20 became 9223372036854775807). toListNum now keeps them as double, andtoListOfInt skips them.isJSAny , asJSAny , isJSObject , asJSObject , objectDartify :
sdk: ^3.13.0
ObjectExtension:
isJSAny, asJSAny, isJSObject, asJSObject, objectDartify:
Object?.isA<T>() (Dart 3.12+), removing the is JSxxx checks andinvalid_runtime_check_with_js_interop_types ignores.JSAny with dart2js.null (ambiguous) is still returned for JS values that are also a Dart List/Map/Function (dart2js).isJSFunction and isJSExportedDartFunction.toJSDeep: Fix: TypedData (e.g. a Uint8List inside a Map) is converted to a JS typed array,Array.Fix: Int8List, Uint8ClampedList, Int16List, Uint16List, Int32List, Uint32List, Float32List and
Float64List .toJS returned a JS Array: the package Iterable<int>/Iterable<double> toJS extensions
shadowed the dart:js_interop ones. Added Int8ListExtension, Uint8ClampedListExtension,
Int16ListExtension, Uint16ListExtension, Int32ListExtension, Uint32ListExtension,
Float32ListExtension and Float64ListExtension (as Uint8ListExtension already did for Uint8List).
IterableExtension:
toJSIterableDeep: lazy JSIterable counterpart of toJSDeep (uses Iterable.toJSIterable, Dart 3.12+).Added JSIterableExtension with toIterable and toList.
JSIterable.toDartIterable failing for a JS string (Reflect.get called on non-object).JSObjectExtension:
prototype (JSObject.getPrototypeOf, Dart 3.13+) and isPlainObject.as<T>():
dart2wasm all interop types are erased to one runtime type, so dispatching on T returnednull for valid casts (e.g. JSObject().as<JSObject>()). It now only casts when T can't be inspected.as<JSObject>() returned null with dart2js.JSFunction check; removed duplicated JSInt8Array branch and unreachable JSPromise branch.JSArrayExtension:
push: uses JSArray.add.toListOfDouble now returns List<double> (was a List<int> of only the integer elements).toListOfInt returned an empty list with dart2wasm (JS numbers are dartified as double).JSArrayOfJSNumberExtension:
toListNum threw for non-integer numbers (e.g. 2.5) with dart2js.Tests:
test/js_integration_test.dart) exchanging values with real JS codeSet/Map/generators, callbacks, BigInt, Date, typed arrays, prototypes).test/js_interop_utils_api_test.dart).JSObjectUtil: added prototype (Object.prototype).
lints: ^6.1.0
test: ^1.32.0
dependency_validator: ^5.1.0
One column per month.
lib/src/js_interop_utils_extensions.dart :
lib/src/js_interop_utils_extensions.dart:
IterableStringNullableExtension with toJS returning JSArray<JSString?>.IterableNumNullableExtension with toJS returning JSArray<JSNumber?>.IterableIntNullableExtension with toJS returning JSArray<JSNumber?>.IterableDoubleNullableExtension with toJS returning JSArray<JSNumber?>.IterableBoolNullableExtension with toJS returning JSArray<JSBoolean?>.lib/src/js_interop_utils_extensions.dart:
IterableStringNullableExtension with toJS returning JSArray<JSString?>.IterableNumNullableExtension with toJS returning JSArray<JSNumber?>.IterableIntNullableExtension with toJS returning JSArray<JSNumber?>.IterableDoubleNullableExtension with toJS returning JSArray<JSNumber?>.IterableBoolNullableExtension with toJS returning JSArray<JSBoolean?>.IterableExtension , IterableOfIterableExtension , IterableStringExtension , IterableNumExtension , IterableIntExtension , IterableDoubleExtension , It
IterableExtension, IterableOfIterableExtension, IterableStringExtension, IterableNumExtension,IterableIntExtension, IterableDoubleExtension, IterableBoolExtension:
toJSDeep: removed intermediate .toList() call before .toJS.Optimize for Function : call self.jsify() .
ObjectExtension:
toJSDeep:
Function: call self.jsify().test: ^1.26.3
Added Uint8ListExtension with toJS method for JSUint8Array conversion.
Added Uint8ListExtension with toJS method for JSUint8Array conversion.
Updated isJSAny check to support JSTypedArray.
test: ^1.26.2
toIterable , toList : avoid return of <dynamic> and avoid issues with dynamic values.
JSArrayExtension:
toIterable, toList: avoid return of <dynamic> and avoid issues with dynamic values.dependency_validator: ^4.1.3
JSArrayExtension:
toIterable, toList: avoid return of <dynamic> and avoid issues with dynamic values.dependency_validator: ^4.1.3
DateTimeToJSDateExtension : toJSDate .
JSDate:
DateTimeToJSDateExtension: toJSDate.Improve isJSAny implementation for bool , num and String .
Improve isJSAny implementation for bool, num and String.
Improve isJSAny and asJSAny tests.
test: ^1.25.15
Improve isJSAny and isJSObject .
isJSAny and isJSObject.New StringExtension : Added toDartFix .
StringExtension:
toDartFix.JSObjectUtil : fix jsKeys mapping name.
JSObjectUtil: fix jsKeys mapping name.
ObjectExtension: added asJSAny.
Added extension Object.isJSAny and Object.objectDartify();
Added extension Object.isJSAny and Object.objectDartify();
CI: test with dart2js and dart2wasm (on Chrome).
- Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →