Skip to content

Releases: ultralytics/yolo-flutter-app

v0.6.14 - Reuse the UltralyticsYOLO label parser in iOS inspectModel (#591)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 27 Aug 20:42
4e99560

🌟 Summary

v0.6.14 improves YOLO26 model compatibility and reliability across iOS and Android, while strengthening package validation and documentation. 🚀

📊 Key Changes

  • iOS label parsing is now shared with the UltralyticsYOLO SDK (PR #591, @glenn-jocher) 🛠️

    • Removes the duplicated parser from YOLOPlugin.inspectModel.
    • Correctly handles model names metadata in list form, double-quoted key/value form, and inputs containing negative keys.
    • Prevents missing labels, incorrectly quoted class names, and potential crashes caused by invalid negative indexes.
    • Updates the iOS dependency to UltralyticsYOLO 8.9.14 or newer.
  • Improved LiteRT/TFLite output compatibility for current YOLO26 exports (PR #590, @cdeil) 📱

    • Android now recognizes output tensor names such as output0, output1, and so on.
    • Existing support for output_0 and Identity naming conventions remains unchanged.
    • This is especially important for depth, segmentation, semantic segmentation, and pose models, which depend on correctly resolved output shapes.
  • Depth estimation is now included in iOS app documentation (PR #583, @raimbekovm) 🌐

    • Updates the English and Chinese README files to list depth estimation alongside detection, segmentation, classification, pose, and OBB tasks.
  • Published packages now receive an additional validation check (PR #588, @raimbekovm)

    • Runs dart pub publish --dry-run immediately before publishing.
    • Verifies that the iOS Swift Package manifest is included in the package archive.
    • Helps prevent releases that cannot be consumed correctly through Swift Package Manager.
  • GitHub workflows and project formatting were standardized (PRs #585#587, @glenn-jocher) 🧹

    • Enables broken-link checks on macOS runners.
    • Updates the bug-report template for Flutter, Dart, and mobile-device details.
    • Restores consistent Dart formatting and excludes generated/platform directories from analysis.
  • Repository URLs and redirects were cleaned up (PR #589, @pderrenger) 🔗

    • Removes unnecessary trailing slashes and updates redirected Ultralytics links.
    • These are documentation-only changes with no runtime impact.

🎯 Purpose & Impact

  • More dependable iOS model inspection: Class labels should now load correctly for a wider range of exported models, including malformed or unexpected metadata cases. 🧾
  • Better YOLO26 Android support: Current TFLite exports are less likely to produce missing output dimensions, improving inference for advanced tasks such as depth estimation, segmentation, and pose.
  • Safer releases: Package validation catches missing iOS Swift Package files before users receive a broken publication.
  • Clearer feature discoverability: Users can now see that the Ultralytics YOLO iOS app supports depth estimation.
  • No new model architecture or inference algorithm is introduced: This release primarily improves compatibility, robustness, tooling, and release quality.
  • Upgrade note: The iOS integration now requires UltralyticsYOLO 8.9.14 or later. The release also depends on the corresponding Swift Package tag being available so example iOS projects can resolve their dependencies successfully.

What's Changed

New Contributors

Full Changelog: v0.6.13...v0.6.14

v0.6.13 - Bump release version to 0.6.13 (#582)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 11 Aug 15:32
9c52409

🌟 Summary

Version 0.6.13 delivers faster Android LiteRT CPU inference and aligns the Flutter plugin, iOS CocoaPods package, documentation, and example app under the new release version. 🚀

📊 Key Changes

  • Improved Android CPU performance: LiteRT inference can use up to four available processors, helping models run faster on compatible devices while preserving limits on lower-core hardware.
  • 📦 Package version updated: The Flutter package is now 0.6.13.
  • 🍎 iOS integration updated: The CocoaPods specification now reports version 0.6.13.
  • 📱 Example app updated: The example application version was bumped to 0.6.13+21.
  • 📚 Documentation refreshed: README dependency examples and the changelog now reference 0.6.13.
  • 🧪 Release validation completed: The package passed dart pub publish --dry-run.

🎯 Purpose & Impact

  • 🚄 Faster inference on Android: Devices with sufficient CPU resources may see improved LiteRT model performance, particularly for CPU-based workflows.
  • 🔄 More consistent release management: Package metadata, iOS distribution information, documentation, and the example app are synchronized.
  • 👩‍💻 Simpler upgrades for developers: Users can update their dependency to ultralytics_yolo: ^0.6.13 and receive the aligned release.
  • 🧩 No major model API or architecture changes: This release primarily focuses on performance and versioning rather than introducing new model types or user-facing features.

What's Changed

Full Changelog: v0.6.12...v0.6.13

v0.6.12 - Enable multi-threaded LiteRT CPU inference (#581)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 11 Aug 14:58
59ab9f0

🌟 Summary

🚀 Ultralytics YOLO Flutter v0.6.12 improves Android LiteRT CPU inference speed, strengthens inference validation, and updates package release metadata and documentation.

📊 Key Changes

  • ⚡ Faster LiteRT CPU inference@onuralpszr enabled multi-threading for the Android CPU fallback path.
    • Uses the number of available processors, capped at four threads.
    • Prevents low-core devices from exceeding their hardware capacity while avoiding regressions observed with eight threads.
    • Benchmark improvements on a Galaxy S26 Ultra included:
      • Detection: 29.4 ms → 23.6 ms
      • Segmentation: 40.0 ms → 28.8 ms
      • Depth: 72.4 ms → 38.7 ms
  • 🧪 Broader inference test coverage@glenn-jocher added task-specific checks for detection, segmentation, semantic segmentation, depth, classification, and pose estimation.
    • Tests now verify actual output content, including class names, masks, keypoints, and dense semantic/depth data.
    • Invalid platform responses are also checked against the expected error behavior.
  • 📈 Improved test confidence — Coverage increased from approximately 89.9% to 92.2% for the CI-filtered suite, with the test count increasing from 174 to 175.
  • 📦 Package and documentation updates
    • Updated the Flutter package version to 0.6.12.
    • Refreshed the README installation example and iOS podspec version.
    • Updated the example application version to match the release.
  • 🛠️ Development workflow maintenance
    • Restored standard guidance in AGENTS.md.
    • Simplified the formatting workflow while retaining macOS support required for Swift formatting.

🎯 Purpose & Impact

  • Faster CPU-only performance: Android devices that cannot use the GPU path, or fall back to CPU execution, should see noticeably lower inference latency—especially for segmentation and depth tasks. ⚡
  • More predictable device behavior: Limiting execution to four CPU threads balances speed and stability across different Android devices instead of assuming that more threads are always faster.
  • Greater reliability for applications: Stronger tests help detect broken output processing across the supported YOLO task types before changes reach users. ✅
  • Safer future development: Validation of dense outputs and invalid responses reduces the risk of silent inference errors or malformed results.
  • Straightforward upgrade: Flutter users can update to ultralytics_yolo: ^0.6.12 to receive the release improvements. 📱

What's Changed

Full Changelog: v0.6.11...v0.6.12

v0.6.11 - Bump UltralyticsYOLO to 8.9.13 (#577)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 28 Jul 23:03
4a753fc

🌟 Summary

🚀 Ultralytics Flutter plugin 0.6.11 updates the iOS YOLO engine to UltralyticsYOLO 8.9.13, improving safe float16 object-detection decoding while strengthening mobile model handling, Android resource cleanup, benchmarking, and release automation.

📊 Key Changes

  • iOS dependency update 🍎

    • Requires UltralyticsYOLO >= 8.9.13 through CocoaPods and Swift Package Manager.
    • Refreshes SwiftPM lockfiles to the published 8.9.13 commit.
    • Fixes safe float16 decoding for iOS object-detection outputs.
  • Android lifecycle and concurrency improvements 🤖

    • Adds explicit YOLO.close() resource cleanup.
    • Ensures LiteRT models and QNN sessions are disposed when instances are removed.
    • Serializes inference and configuration operations to reduce concurrency-related issues.
    • Replaces global coroutine usage with a plugin-owned coroutine scope that is cancelled when the plugin detaches.
    • Reports the runtime accelerator used, such as CPU, GPU, or NPU.
  • Standardized mobile model assets 📦

    • Uses fixed 224 × 224 inputs for classification and 640 × 640 for all other tasks.
    • Moves official QNN model references to the v0.6.6 asset release.
    • Stores official downloaded models in a dedicated mobile-standard-v1 cache directory and removes outdated legacy cache files.
  • Improved benchmarking 📊

    • Supports selecting one or more YOLO26 model sizes through MODEL_SIZES.
    • Adds depth models to the unified benchmark harness.
    • Records the model size and native runtime accelerator in benchmark output.
    • Rotates task, model-size, and backend order to reduce thermal and ordering bias.
    • Adds deterministic cleanup after each benchmark row and extends the full benchmark timeout to 60 minutes.
  • Export and documentation updates 🛠️

    • Verifies exported LiteRT models use the expected input dimensions.
    • Makes subprocess error handling explicit for Ruff 0.16.0 compatibility.
    • Updates English and Chinese documentation, examples, model URLs, export guidance, and physical-device performance tables.
  • CI/CD maintenance ⚙️

    • Updates GitHub Actions for Python, Slack notifications, and stale issue management.
    • Centralizes uv setup through Ultralytics’ shared action.
    • Queues publish workflows instead of replacing pending release runs.
    • Consolidates agent-development guidance around minimal, source-level fixes.

🎯 Purpose & Impact

  • iOS users receive more reliable float16 object-detection decoding by using the updated native YOLO engine.
  • Android applications benefit from safer model disposal, fewer concurrent-access risks, and clearer accelerator reporting.
  • Mobile deployments gain more predictable model inputs, downloads, caching, and cross-platform asset behavior.
  • Performance testing becomes easier to reproduce across YOLO26 sizes, tasks, and hardware backends.
  • 🔄 Existing Flutter applications should remain compatible, but developers should update to ultralytics_yolo: ^0.6.11 to receive the dependency and lifecycle fixes.
  • 🧪 The release was validated with 174 passing Flutter tests, static analysis, and a clean pub.dev dry run.

What's Changed

Full Changelog: v0.6.10...v0.6.11

v0.6.10 - Add depth model support (#562)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 14 Jul 20:08
34f595a

🌟 Summary

v0.6.10 adds complete YOLO26 monocular depth estimation to the Ultralytics Flutter plugin on Android and iOS, with fast typed depth maps, live visual overlays, and consistent model support across both platforms. 🌊📱

📊 Key Changes

  • Added depth estimation as a first-class task with YOLOTask.depth for both Android and iOS.
  • Added all five official YOLO26 depth models:
    • yolo26n-depth
    • yolo26s-depth
    • yolo26m-depth
    • yolo26l-depth
    • yolo26x-depth
  • Expanded the official model catalog to 35 models: seven tasks across five model sizes, with the same availability on Android and iOS. ✅
  • Introduced typed metric-depth results containing:
    • Dense per-pixel Float32List depth values
    • Map width and height
    • Minimum and maximum depth values
    • Transparent handling for invalid pixels
  • Added real-time depth overlays to YOLOView, allowing camera applications to visualize near-to-far distance information directly on the preview.
  • Implemented Android depth inference through the existing LiteRT GPU/CPU and optional QNN pipeline.
  • Updated iOS support to use UltralyticsYOLO version 8.9.12 or newer for depth inference.
  • Improved Android depth performance by moving colorization into the native C++ decoder:
    • Postprocessing dropped from roughly 50–54 ms to 8–10 ms on the tested Xiaomi 17.
    • Invalid, zero, negative, NaN, and infinite values remain transparent.
  • Added documentation, examples, unit tests, native colorizer tests, and physical-device benchmarks for all official depth models. 🧪
  • Simplified model and task management by removing platform-specific filtering, fallback availability logic, and duplicated task-label registries.
  • CI and workflow maintenance:
    • Codecov upload failures are now non-blocking.
    • CLA processing now uses the shared ultralytics/actions workflow.
    • Slack GitHub Actions were updated from v3.0.3 to v3.0.5.

🎯 Purpose & Impact

  • Enables mobile depth-aware applications such as spatial measurement, robotics, augmented reality, scene understanding, and accessibility tools. 🧭
  • Provides consistent behavior across Android and iOS, making cross-platform Flutter development simpler and reducing platform-specific workarounds.
  • Delivers both raw depth data and ready-to-display overlays, supporting advanced processing as well as quick visual prototypes.
  • Improves real-time usability on Android through much faster native postprocessing. iOS depth performance also benefits from Neural Engine acceleration on supported devices.
  • Makes the model catalog more predictable: every official YOLO26 task and size is exposed consistently instead of being hidden by platform-specific availability checks.
  • Requires an iOS dependency update to UltralyticsYOLO >= 8.9.12; applications using older versions should update their dependency configuration.
  • Existing detection, segmentation, classification, pose, and OBB workflows remain supported, while CI reliability and release automation are improved. 🚀

What's Changed

Full Changelog: v0.6.9...v0.6.10

v0.6.9 - Support custom pose keypoint counts on Android (#556)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 04 Jul 20:28
1dbccc6

🌟 Summary

v0.6.9 fixes Android pose inference for custom keypoint models, making non-COCO pose models like hand-landmark models work correctly in the Ultralytics YOLO Flutter plugin 🤖📱

📊 Key Changes

  • Custom Android pose keypoint support 🧍‍♂️✋
    Android pose parsing now detects the number of keypoints from the model output shape instead of assuming the standard 17-keypoint COCO pose format.

  • Improved pose output handling 🔧
    The Android PoseEstimator now supports both common pose output layouts more dynamically, including anchor-grid outputs and capped end-to-end outputs.

  • Better custom model compatibility 🚀
    Custom pose models, such as 21-keypoint hand landmark models, can now return all expected keypoints instead of being limited or rejected by a hardcoded output size.

  • Cleaner Play Store packaging 📦
    The Play Store asset build script now includes only the approved bundled YOLO26 Android models in release builds, while preserving any local custom or benchmark model files after the build.

  • Release workflow hardening 🔐
    Publishing is now restricted to the main branch, reducing the risk of accidental releases from feature branches.

  • Test and repository cleanup 🧹
    Redundant example tests were removed, constructor-focused tests were renamed and clarified, and new AGENTS.md guidance was added for AI coding agents working in the repository.

  • Version bump 🏷️
    Package surfaces were updated to 0.6.9, including Flutter, iOS podspec, example app version, and changelog entries.

🎯 Purpose & Impact

  • More flexible pose apps
    Developers can now deploy custom Android pose models with different keypoint counts, opening the door to use cases like hand tracking, face landmarks, sports-specific poses, and other specialized landmark models.

  • Fewer model-shape failures 🛠️
    By deriving keypoint counts dynamically, the plugin is less brittle and better aligned with real-world custom YOLO pose exports.

  • Safer app releases 🛡️
    Play Store builds are cleaner and more predictable, with only official YOLO26 bundled assets included in upload artifacts.

  • More reliable publishing 🚢
    The release workflow change helps ensure GitHub releases and pub.dev publishing happen only from trusted main branch commits.

  • Improved maintainability 📚
    Cleaner tests and contributor guidance make future development easier, while preserving confidence through formatting, analysis, Flutter tests, publish dry-runs, and Android debug APK validation.

What's Changed

Full Changelog: v0.6.8...v0.6.9

v0.6.8 - Speed up Android preprocessing

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 02 Jul 17:48
a894811

🌟 Summary

v0.6.8 improves Android preprocessing speed for LiteRT/QNN models and updates iOS to require UltralyticsYOLO >= 8.9.11, making mobile YOLO inference faster, cleaner, and better aligned across platforms 🚀

📊 Key Changes

  • Faster Android preprocessing for NCHW models ⚡

    • Android now writes RGB data directly in planar CHW layout for NCHW LiteRT and QNN models.
    • This removes the previous extra HWC-to-CHW transpose step before inference.
    • Applies across major tasks including detection, segmentation, semantic segmentation, classification, pose, and OBB.
  • Smarter letterbox padding cleanup 🧼

    • Instead of repainting the entire model input bitmap black, Android now clears only the actual letterbox padding areas.
    • This reduces unnecessary drawing work during preprocessing.
  • Backend layout awareness improved 🔁

    • The shared inference interface now exposes whether a model expects NCHW input.
    • LiteRT and ONNX Runtime QNN backends can tell predictors which input layout to write directly.
    • This keeps predictors runtime-agnostic while avoiding redundant CPU-side layout conversions.
  • Updated Android performance documentation 📊

    • Benchmark tables were refreshed with current Xiaomi 17 measurements.
    • Documentation now more clearly separates single-image predict() latency from sustained live-camera performance.
    • Notes were added explaining that Android live camera preprocessing still includes CameraX rotation and letterboxing every frame.
  • iOS dependency updated 🍎

    • The iOS plugin now requires UltralyticsYOLO >= 8.9.11 through both CocoaPods and Swift Package Manager.
    • Example iOS package resolution was updated accordingly.
  • Release metadata updated 📦

    • Flutter package version bumped from 0.6.7 to 0.6.8.
    • Example app version bumped to 0.6.8+16.
    • iOS podspec version updated to 0.6.8.

🎯 Purpose & Impact

  • Lower preprocessing overhead on Android 🚀

    • By writing NCHW input directly, the plugin avoids a full extra memory pass over the input tensor.
    • This is especially helpful for modern LiteRT exports and QNN/NPU models that use channel-first layouts.
  • Better real-world mobile performance 📱

    • Single-image Android predict() benchmarks show preprocessing reduced substantially on Xiaomi 17, with 640px tasks now around the low-millisecond range in the refreshed measurements.
    • Users should see faster end-to-end predictions, especially for workflows that repeatedly run image inference.
  • More efficient use of mobile hardware 🧠

    • The runtime now better adapts to CPU, GPU, and NPU model layouts.
    • This helps LiteRT and QNN models feed accelerators more directly, reducing CPU-side preparation work.
  • Clearer expectations for live camera users 🎥

    • The docs now explain why live camera preprocessing can still be higher than single-image benchmarks.
    • Portrait camera streams still require CameraX rotation and letterbox processing every frame, so the in-app HUD remains the best guide for real device performance.
  • Improved iOS compatibility and consistency ✅

    • Requiring UltralyticsYOLO 8.9.11 ensures iOS users receive the latest shared YOLO inference core supported by this plugin release.
  • Best for users deploying YOLO26 on mobile 🌟

    • This release is particularly useful for developers deploying current YOLO26 models on Android and iOS through the Ultralytics Flutter plugin.

What's Changed

Full Changelog: v0.6.7...v0.6.8

v0.6.7 - Simplify share overlay compositing to match upstream (#552)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 01 Jul 18:41
40d360c

🌟 Summary

v0.6.7 focuses on more reliable iOS sharing/capture overlays, faster Android postprocessing, and leaner Android app bundles 🚀📱

📊 Key Changes

  • iOS share/capture overlay fix 🖼️
    The main release fix updates renderShareImage so shared images use the actual live overlay layers instead of manually rebuilding masks, pose keypoints, and boxes.

  • Shared images now better match the live preview
    Segmentation masks, pose skeletons/keypoints, and oriented bounding boxes are captured with the same placement and appearance users see on screen.

  • Improved iOS alignment with upstream YOLO iOS 🍎
    The Flutter plugin now mirrors the upstream YOLO iOS implementation more closely, reducing duplicated custom logic and making future maintenance safer.

  • Android segmentation postprocessing speedups
    Segment decode was reorganized to access class scores and mask data in a more cache-friendly way, reducing unnecessary memory work while keeping outputs unchanged.

  • Sharper Android segmentation overlays 🎨
    Segment masks are now rendered at model-input resolution before being displayed, producing cleaner overlays compared with simply upscaling a low-resolution mask.

  • Reduced Android per-frame overhead 📉
    Classification top-5 selection, segmentation NMS grouping, semantic class-map handling, and native detection NMS were optimized to avoid extra sorting, copying, or scanning.

  • Semantic masks sent more efficiently to Flutter 🔁
    Android now passes semantic segmentation class maps as compact Int32List data instead of boxed integer lists, reducing per-frame serialization overhead.

  • Smaller Android builds 📦
    iOS Core ML model packages are now pruned from Android bundles, avoiding unused assets and reducing Play Store install size.

  • Updated iOS dependency 🔧
    The iOS dependency on UltralyticsYOLO was raised to >= 8.9.10, keeping the plugin aligned with the latest upstream iOS fixes.

🎯 Purpose & Impact

  • More trustworthy sharing experience 📸
    Users sharing or capturing YOLO results on iOS should now get images that accurately include masks, pose keypoints, and rotated boxes instead of missing or misaligned overlays.

  • Less fragile iOS rendering code 🧩
    By reusing real overlay layers rather than reconstructing them, the implementation is simpler and less likely to break when overlay behavior changes.

  • Better Android real-time performance 🚀
    Faster segmentation decoding and reduced postprocessing overhead can improve camera smoothness, especially for segmentation models with many classes.

  • Cleaner visual results for segmentation
    Higher-resolution mask rendering makes overlays look sharper and closer to the expected YOLO visualization quality.

  • Lower app download size on Android 📲
    Removing unused iOS model assets from Android builds reduces unnecessary bundle weight without changing functionality.

  • No expected output changes for optimized paths 🛡️
    Most Android performance improvements are designed to preserve the same detection, segmentation, and semantic results while doing less work internally.

What's Changed

Full Changelog: v0.6.6...v0.6.7

v0.6.6 - Switch export to LiteRT and make Android input layout-adaptive (#548)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 30 Jun 17:49
e0dfb65

🌟 Summary

🚀 v0.6.6 is a major Android model update: the app moves from legacy TFLite export tooling to LiteRT-based .tflite models, adds smarter Android runtime compatibility for both old and new model layouts, and trims the example app by making Snapdragon QNN/NPU support optional.

📊 Key Changes

  • Switched Android official model exports to LiteRT 📦
    The release now uses Ultralytics’ newer format=litert export flow instead of the older TFLite export path. Official Android assets now come from v0.6.6 and use the new _w8a32.tflite naming.

  • Android runtime now auto-adapts to different input layouts 🔄
    New LiteRT exports use a different tensor layout than older .tflite files. The Android code now detects this automatically, so it can run:

    • new LiteRT NCHW models
    • older legacy NHWC TFLite models
      without users needing to manually adjust anything.
  • Fixed support for more model types on Android
    Segment, semantic segmentation, and pose models exported with LiteRT now load and run correctly. The runtime was updated to recognize the newer LiteRT output tensor naming and shape conventions.

  • Official Android assets updated to w8a32 LiteRT
    The project now ships w8a32 LiteRT models for Android, chosen because they stay small, work with the GPU path, and do not require calibration data during export.

  • Export scripts were simplified and modernized 🛠️
    The Android export pipeline now targets LiteRT directly, uses the newer quantize setting, removes legacy conversion workarounds, and depends on ultralytics>=8.4.83.

  • Snapdragon QNN runtime is now opt-in in the example app 📉
    The example Android app no longer bundles the heavy Qualcomm QNN/NPU runtime by default. This dramatically reduces app size, while still allowing NPU testing when explicitly enabled.

  • Small release and workflow polish

    • Example app build number was bumped for store upload acceptance.
    • Slack release notifications were simplified and improved with clickable PR links.

🎯 Purpose & Impact

  • Better future compatibility for Android models 🤝
    Moving to LiteRT aligns the Flutter app with the current Ultralytics export path, making it easier to support newer YOLO models and export improvements going forward.

  • Smoother upgrades for existing users 🔐
    Because Android now auto-detects input layout and output conventions, older TFLite models should continue working, while new LiteRT models work out of the box too.

  • More reliable support across tasks 🎯
    Users working with segmentation, semantic segmentation, and pose should see better stability and fewer model-loading/runtime issues on Android.

  • Smaller downloads for Android app testers 📦
    Making QNN optional cuts the default example app size significantly, which helps with faster installs and easier testing. Users who want Snapdragon NPU acceleration can still enable it explicitly.

  • Practical performance-focused default for Android
    The new w8a32 LiteRT assets were selected as a balanced default: small file size, GPU-friendly, and easier export. For most users, that means a more dependable Android deployment path.

  • Cleaner maintenance for developers 👨‍💻
    The export and release flow is now simpler, with less legacy logic and clearer model packaging, which should reduce breakage and make future releases easier to manage.

What's Changed

Full Changelog: v0.6.5...v0.6.6

v0.6.5 - Add Swift Package Manager support for iOS (#542)

Choose a tag to compare

@UltralyticsAssistant UltralyticsAssistant released this 23 Jun 08:57
cc129c3

🌟 Summary

🚀 v0.6.5 is mainly an iOS compatibility and future-proofing release, adding Swift Package Manager support while fully preserving existing CocoaPods support.

📊 Key Changes

  • Major iOS upgrade: Swift Package Manager support added 📱
    The Flutter iOS plugin can now be integrated using Swift Package Manager (SPM) in addition to CocoaPods. This is the biggest change in the release and helps align the plugin with Flutter’s direction on iOS.

  • No breaking change for current iOS users
    Existing CocoaPods-based apps continue to work as before. The plugin now ships with both package manifests, so users can stay on their current setup or move to SPM when ready.

  • Shared iOS source layout reorganized 🧩
    The iOS plugin files were moved into a SwiftPM-friendly structure, but the actual functionality remains the same. This mainly improves packaging and maintenance rather than changing app behavior.

  • iOS package now pulls the shared UltralyticsYOLO core via SPM
    The new Swift package uses the same underlying iOS inference core as before, pinned to the same version range and resolving to UltralyticsYOLO 8.9.7, keeping behavior consistent across both package systems.

  • Example app now builds with SwiftPM by default on iOS 🛠️
    The example project was updated to test the new SPM flow first, while still checking CocoaPods as a regression guard.

  • iOS CI testing became more reliable 🧪
    The old Flutter-driven iOS smoke test was replaced with a more direct native simulator launch test, helping avoid CI hangs and making release validation more dependable.

  • Android CI was optimized 🤖
    The Android workflow now uses a smaller emulator image and runs steps in a more disk-efficient order, reducing CI failures.

  • Docs and packaging polish 📚

    • Installation docs now explain both SPM and CocoaPods on iOS
    • README files gained a CocoaPods badge
    • Several links were refreshed
    • The TFLite export script got clearer docstrings for easier maintenance

🎯 Purpose & Impact

  • Future-proofs iOS support 🔮
    Swift Package Manager is becoming increasingly important in the Apple and Flutter ecosystems. Adding SPM now helps prevent future integration issues as tooling evolves.

  • Makes iOS adoption easier for more developers 👨‍💻👩‍💻
    Teams that prefer modern Apple package workflows can now use the plugin more naturally, without needing to rely only on CocoaPods.

  • Reduces migration risk 🛡️
    Because CocoaPods support remains intact, current users should see little to no disruption. This is a safe upgrade for most projects.

  • Improves confidence in releases
    Better CI coverage for both SPM and CocoaPods means iOS packaging problems are more likely to be caught before release.

  • No major model behavior changes in this tag 🎯
    This release is mostly about packaging, build systems, and developer experience, not new YOLO model capabilities or inference features.

  • Small performance consistency improvement in the example app ⚙️
    The example app was updated to UltralyticsYOLO 8.9.7, which helps it better reflect real shipping performance during iOS testing.

If you'd like, I can also turn this into a shorter release note version or a more technical developer-focused summary.

What's Changed

Full Changelog: v0.6.4...v0.6.5