NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #2570 most downloaded on pub.dev
Create long-lived isolates for single or multiple functions, with support for Web Workers (via an efficient generator) and WASM compilation.
Last release 5 months ago
12 Apr 2026
Release timing varies
gaps range from 9 days to 5 months
Most releases are documented
notes for 44 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
134 releases · first in 2022
* Improve README.
Nothing published for this version
* Improve README.
One column per quarter.
Update the package web version to support a wider range (">=0.5.1 <2.0.0").
web version to support a wider range (">=0.5.1 <2.0.0").* Bump the web to v1.0.0. * Update README.
web to v1.0.0.README.* Stable now.
* Improve README.
Add IsolateManagerShared to be able to compute the multiple Functions.
Add IsolateManagerShared to be able to compute the multiple Functions.
Generate the shared Workers by using the @isolateManagerSharedWorker annotation.
Able to generate a custom Worker from a customFunction by using the @isolateManagerCustomWorker annotation.
Improve the README.
Various improvements and optimizations.
The generator:
dart run isolate_manager:generate command will generates both single and shared Workers.dart run isolate_manager:generate --single to generate only the single functions (@isolateManagerWorker and @isolateManagerCustomWorker annotations).dart run isolate_manager:generate_shared --shared to generate only the shared functions (@isolateManagerSharedWorker annotation).This is an rc version because the various improvements may affect some edge cases so I want to make sure it's fully backward-compatible
* Improve README.
Avoid using static function for the log printer.
Update the log printer to increase the performances.
* Improve pub score.
Nothing published for this version
Update some comments and fix some TYPO.
benchmarks to benchmark.Change the default generated js to level O4 (Default level when using flutter build web).
O4 (Default level when using flutter build web).* Re-organize the README. * Update the description.
Add --omit-implicit-checks flag when compiling to js to avoid type check issues.
--omit-implicit-checks flag when compiling to js to avoid type check issues.IsolateException.BREAKING CHANGE: All isolate functions MUST be updated and all Workers MUST be recompiled. See the migration guide at the bottom of the README or at t…
^3.3.0.IsolateManagerWorker and isolateManagerWorker annotations (See more in README).call method to the IsolateManager.IsolateManager.create behavior (use a new custom function).customFunction and workerFunction.autoInitialize parameter.isolate_contactor to this package to make it lighter and easier to maintain.5.0.0-rc.1.Able to generate to WASM with --wasm flag (But unusable right now).
call method.--wasm flag (But unusable right now).Fix issue with null initialParams in createCustom.
initialParams in createCustom.autoMarkAsInitialized and related code in the base.Able to generate static functions (Classs.function => Class.function.js).
Add a generator to generate the Worker JS by adding the IsolateManagerWorker and isolateManagerWorker annotations.
IsolateManagerWorker and isolateManagerWorker annotations.* Update to improve the score.
Update the CHANGELOG to show the migration guide.
Update the CHANGELOG to show the migration guide.
IsolateState.Bring the isolate_contactor to this package and make it lighter and easier to maintain.
isolate_contactor to this package and make it lighter and easier to maintain.Improve the IsolateManager.create behavior (use a new customFunction).
IsolateManager.create behavior (use a new customFunction).customFunction and workerFunction.Update homepage for beta version.
Remove autoInitialize parameter.
^3.3.0.autoInitialize parameter.IsolateManagerFunction.workerFunction, you need to re-generate the JS for the Web Worker (compile from Dart to JS). The IsolateManagerFunction.customFunction will be automatically applied.initialized signal from an Isolate and a Worker:
Custom function of an Isolate: add the controller.initialized(); to the end of the function.
Before:
void customFunction(dynamic params) {
final controller = IsolateManagerController(params);
controller.onIsolateMessage.then((value){
// ...
});
}
After:
void customFunction(dynamic params) async {
// Do something sync or async here
final controller = IsolateManagerController(params);
controller.onIsolateMessage.then((value){
// ...
});
controller.initialized(); // <--
}
On the Web Worker: add jsSendMessage(IsolateState.initialized.toJson()); to the end of the main method.
Before:
void main() {
callbackToStream('onmessage', (MessageEvent e) {
return js_util.getProperty(e, 'data');
}).listen((message) {
// ...
});
}
After:
void main() async {
// Do something sync or async here
callbackToStream('onmessage', (MessageEvent e) {
return js_util.getProperty(e, 'data');
}).listen((message) {
// ...
});
jsSendMessage(IsolateState.initialized.toJson()); // <--
}
* Export the IsolateState.
IsolateState.Deprecate the IsolateFunctionHelper in favor of the IsolateManagerFunction.
WASM.IsolateFunctionHelper in favor of the IsolateManagerFunction.IsolateManagerFunction.workerFunction.initialized signal from the isolate to the main app to ensure that the isolate is ready to receive the messages from the main app. The Migration Steps:
If you're using the IsolateManagerFunction.workerFunction, you need to re-generate the JS for the Web Worker (compile from Dart to JS). The IsolateManagerFunction.customFunction will be automatically applied.
If you're using the old method, you need to send a initialized signal from an Isolate and a Worker:
Custom function of an Isolate: add the controller.initialized(); to the end of the function.
Before:
void customFunction(dynamic params) {
final controller = IsolateManagerController(params);
controller.onIsolateMessage.then((value){
// ...
});
}
After:
void customFunction(dynamic params) async {
// Do something sync or async here
final controller = IsolateManagerController(params);
controller.onIsolateMessage.then((value){
// ...
});
controller.initialized(); // <--
}
On the Web Worker: add jsSendMessage(IsolateState.initialized.toJson()); to the end of the main method.
Before:
void main() {
callbackToStream('onmessage', (MessageEvent e) {
return js_util.getProperty(e, 'data');
}).listen((message) {
// ...
});
}
After:
void main() async {
// Do something sync or async here
callbackToStream('onmessage', (MessageEvent e) {
return js_util.getProperty(e, 'data');
}).listen((message) {
// ...
});
jsSendMessage(IsolateState.initialized.toJson()); // <--
}
Step 2: Update the create and createCustom method:
final isolate = await IsolateManager.create(
function,
workerName: 'function',
);
final isolate = await IsolateManager.create(
function,
workerName: 'function',
autoInitialize: false, // <--
);
Nothing published for this version
Nothing published for this version
Nothing published for this version
Deprecate the createOwnIsolate in favor of the createCustom.
isolate_contacter to v4.1.0.IsolateFunctionHelper contains customFunction and workerFunction.createOwnIsolate in favor of the createCustom.isolateWorker in favor of the IsolateFunctionHelper.workerFunction.Fixed the issue that causes the sendMessage to be unable to throw the Exception when the callback is set.
sendMessage to be unable to throw the Exception when the callback is set.isolateWorker method (Detail in README).IsolateManagerController.Nothing published for this version
Nothing published for this version
* Improved README.
Update README to fetchAndDecode.
fetchAndDecode example.fetchAndDecode.Add more complex examples (also for Worker).
Worker).* Add example for Worker. * Update README.
Worker.* Update homepage URL.
Add queuesLength to get the number of the current queuing elements.
queuesLength to get the number of the current queuing elements.ensureStarted to able to wait for the start method to finish when you want to call the start method manually without await and wait for it later.isStarted to check if the start method is completed or not.Mark isolateManager.onMessage as deprecated.
callback parameter to compute method to fully control the final result (Useful when you need to send something like the progress value before sending the final result in the same compute).isolateManager.onMessage as deprecated.callback parameter to build a progress bar before getting the final result.Add sendResultError to IsolateManagerController to make it easier to send the Exception from the Isolate to main app.
sendResultError to IsolateManagerController to make it easier to send the Exception from the Isolate to main app.IsolateException parameters are now Object and StackTrace.P and change return type to R.void to onDispose method.isolateParams from dynamic to Object?.Nothing published for this version
[Fixes]: The compute method will be failed if user tap on a button that calling it multiple times continuously.
compute method will be failed if user tap on a button that calling it multiple times continuously.Bumped Dart sdk to >=2.18.0 <4.0.0.
>=2.18.0 <4.0.0.Improve README for catching exception with createOwnIsolate.
createOwnIsolate.Use new worker.dart in testing.
worker.dart imports.worker.dart in testing.Nothing published for this version
Add IsolateManager.debugLogPrefix to set the prefix debug logs.
IsolateManager.debugLogPrefix to set the prefix debug logs.* Add isolates_helper to README.
isolates_helper to README.Support try-catch block for all platforms including Worker on Web.
try-catch block for all platforms including Worker on Web.worker.dart to support try-catch block.[Isolate Mangager].try-catch.Nothing published for this version
* Improve pub scores.
The method .start() is now optional, the plugin will automatically call this method when using .compute for the first time, so you have 3 way to creat
The method .start() is now optional, the plugin will automatically call this method when using .compute for the first time, so you have 3 way to create the instance:
IsolateManager<int> isolateManager = IsolateManager.create(
fibonacci,
concurrent: 4,
);
await isolateManager.start();
start without await:IsolateManager<int> isolateManager = IsolateManager.create(
fibonacci,
concurrent: 4,
);
isolateManager.start();
start when creating the instance:IsolateManager<int> isolateManager = IsolateManager.create(
fibonacci,
concurrent: 4,
)..start();
On Flutter >3.3.0 - @pragma('vm:entry-point') annotation must be added to all methods that you want to use for isolation. Read README for more informa
@pragma('vm:entry-point') annotation must be added to all methods that you want to use for isolation. Read README for more information.[BREADKING CHANGE]: Change the parameter name from numOfIsolates to concurrent.
numOfIsolates to concurrent.Your coding agent can read these notes before it upgrades. Set up the MCP server →