{"id":15293155,"url":"https://github.com/vegardit/dart-hotreloader","last_synced_at":"2026-03-07T13:32:39.611Z","repository":{"id":37598807,"uuid":"253838225","full_name":"vegardit/dart-hotreloader","owner":"vegardit","description":"Automatic hot code reloader for Dart projects.","archived":false,"fork":false,"pushed_at":"2025-11-24T14:47:23.000Z","size":125,"stargazers_count":54,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-28T03:40:31.479Z","etag":null,"topics":["dart","dart-library","dart-package","dart-vm","dartlang","hot-reload","hotreloader"],"latest_commit_sha":null,"homepage":"https://buymeacoffee.com/vegardit","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vegardit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-07T15:39:04.000Z","updated_at":"2025-11-24T14:47:22.000Z","dependencies_parsed_at":"2022-09-09T17:00:40.467Z","dependency_job_id":"8958bcac-6451-4406-b9ce-b2c561656388","html_url":"https://github.com/vegardit/dart-hotreloader","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/vegardit/dart-hotreloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegardit%2Fdart-hotreloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegardit%2Fdart-hotreloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegardit%2Fdart-hotreloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegardit%2Fdart-hotreloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vegardit","download_url":"https://codeload.github.com/vegardit/dart-hotreloader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vegardit%2Fdart-hotreloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30215678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T13:25:55.541Z","status":"ssl_error","status_checked_at":"2026-03-07T13:25:38.596Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","dart-library","dart-package","dart-vm","dartlang","hot-reload","hotreloader"],"created_at":"2024-09-30T16:40:00.905Z","updated_at":"2026-03-07T13:32:39.576Z","avatar_url":"https://github.com/vegardit.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hotreloader (Dart)\n\n[![Build Status](https://github.com/vegardit/dart-hotreloader/workflows/Build/badge.svg \"GitHub Actions\")](https://github.com/vegardit/dart-hotreloader/actions?query=workflow%3ABuild)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE.txt)\n[![Pub Package](https://img.shields.io/pub/v/hotreloader.svg)](https://pub.dev/packages/hotreloader)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.1%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)\n\n1. [What is it?](#what-is-it)\n1. [Requirements](#requirements)\n1. [How to use](#how-to-use)\n1. [Logging](#logging)\n1. [Alternatives](#alternatives)\n1. [Changelog / Version History](#changelog)\n1. [License](#license)\n\n\n## \u003ca name=\"what-is-it\"\u003e\u003c/a\u003eWhat is it?\n\nThis [Dart](https://dart.dev) library provides a code reloading service that monitors the source files of a Dart project on the local file system for changes\nand automatically applies them using the Dart VM's [hot reload](https://github.com/dart-lang/sdk/wiki/Hot-reload) capabilities to the running Dart process.\n\n\n## \u003ca name=\"requirements\"\u003e\u003c/a\u003eRequirements\n\nhotreloader 4.x requires [Dart SDK](https://dart.dev/get-dart) **3.0.0** or higher.\n\nhotreloader 3.x requires [Dart SDK](https://dart.dev/get-dart) **2.12.0** or higher.\n\nhotreloader 1.x-2.x requires [Dart SDK](https://dart.dev/get-dart) **2.6.0** or higher.\n\n\n## \u003ca name=\"how-to-use\"\u003e\u003c/a\u003eHow to use\n\n1. Add hotreloader to your dev dependencies using this command\n\n   ```sh\n   dart pub add --dev hotreloader\n   ```\n\n   or by adding this to your `pubspec.yaml`:\n\n   ```yaml\n   dev_dependencies:\n     hotreloader: ^4.3.0\n   ```\n\n1. Enable hot reloading in your entry point dart file, e.g. `bin/main.dart`\n\n   ```dart\n   import 'package:hotreloader/hotreloader.dart';\n\n   Future\u003cvoid\u003e main(List\u003cString\u003e args) async {\n\n     // instantiate a reloader that by monitors the project's source code folders for changes\n     final reloader = await HotReloader.create();\n\n     // ... your other code\n\n     // cleanup\n     reloader.stop();\n   }\n   ```\n\n1. Run the dart program using the Dart VM with the `--enable-vm-service` flag enabled, e.g.\n\n   ```bash\n   dart --enable-vm-service bin/main.dart\n   ```\n\n1. You can now change dart files under the `lib` and the changes should be applied to the running process.\n\nThe reloader service can be further customized, e.g.\n\n```dart\nimport 'package:hotreloader/hotreloader.dart';\n\nFuture\u003cvoid\u003e main(List\u003cString\u003e args) async {\n\n  final reloader = await HotReloader.create(\n    debounceInterval: Duration(seconds: 2), // wait up to 2 seconds after file change before reloading\n    onBeforeReload: (ctx) =\u003e\n      ctx.isolate.name != 'foobar' \u0026\u0026 // never reload the isolate named 'foobar'\n      ctx.event?.path.contains('/mymodel/')) ?? true, // only perform reload when dart files under ../mymodel/ are changed\n    onAfterReload: (ctx) =\u003e print('Hot-reload result: ${ctx.result}')\n  );\n\n  // ... your other code\n\n  await reloader.reloadCode(); // programmatically trigger code reload\n\n  // ... your other code\n\n  // cleanup\n  reloader.stop();\n}\n```\n\n\n## \u003ca name=\"logging\"\u003e\u003c/a\u003eLogging\n\nThis library uses the [logging](https://pub.dev/packages/logging) package for logging.\n\nYou can configure the logging framework and change the [log-level](https://github.com/dart-lang/logging/blob/master/lib/src/level.dart) programmatically like this:\n\n```dart\nimport 'dart:io' as io;\nimport 'dart:isolate';\nimport 'package:hotreloader/hotreloader.dart';\nimport 'package:logging/logging.dart' as logging;\n\nFuture\u003cvoid\u003e main() async {\n  logging.hierarchicalLoggingEnabled = true;\n  // print log messages to stdout/stderr\n  logging.Logger.root.onRecord.listen((msg) =\u003e\n    (msg.level \u003c logging.Level.SEVERE ? io.stdout : io.stderr)\n    .write('${msg.time} ${msg.level.name} [${Isolate.current.debugName}] ${msg.loggerName}: ${msg.message}\\n')\n  );\n\n\n  HotReloader.logLevel = logging.Level.CONFIG;\n\n  final reloader = await HotReloader.create();\n\n  // ... your other code\n\n  // cleanup\n  reloader.stop();\n}\n```\n\n\n## \u003ca name=\"alternatives\"\u003e\u003c/a\u003eAlternatives\n\n- https://pub.dev/packages/angel_hot (last update 05/2019)\n- https://pub.dev/packages/jaguar_hotreload (last update 02/2019)\n- https://pub.dev/packages/recharge (last update 04/2022)\n- https://pub.dev/packages/reloader (last update 01/2019)\n\n\n## \u003ca name=\"changelog\"\u003e\u003c/a\u003eChangelog / Version History\n\nThis project maintains a [changelog](CHANGELOG.md) and adheres to [Semantic Versioning](https://semver.org) and [Keep a CHANGELOG](https://keepachangelog.com)\n\n\n## \u003ca name=\"license\"\u003e\u003c/a\u003eLicense\n\nAll files are released under the [Apache License 2.0](LICENSE.txt).\n\nIndividual files contain the following tag instead of the full license text:\n```\nSPDX-License-Identifier: Apache-2.0\n```\n\nThis enables machine processing of license information based on the SPDX License Identifiers that are available here: https://spdx.org/licenses/.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvegardit%2Fdart-hotreloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvegardit%2Fdart-hotreloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvegardit%2Fdart-hotreloader/lists"}