Flutter / macOS / Open source

VulpShift and disk_kit: from an open source package to a macOS app

Flutter can also provide the interface for a desktop app using system features. In VulpShift, we connect it to our open source disk_kit package. This example shows what belongs in a library and what remains the finished product's responsibility.

1. One workflow instead of several separate tools

VulpShift was created for working with storage devices on a Mac: browsing disks and volumes, copying files, formatting and writing images. Its core workflow combines backup, formatting and data restoration. See VulpShift in our portfolio. VulpShift is available for free on macOS.

Users choose a device, backup location and target file system. The interface shows progress and the outcome of each stage. Underneath, the app must also check device state, backup integrity and the conditions for starting the next operation.

2. disk_kit connects the app to macOS

disk_kit is our Flutter package with a Dart API and a Swift macOS implementation. VulpShift's disk layer delegates device discovery, change monitoring, mounting, unmounting, ejecting, copying, formatting and image writing to it. The interface uses this layer instead of performing system operations directly.

This separation lets system integration evolve independently of product screens. The package does not need to know the device panel layout or wizard step order. The app can expose only selected library capabilities and decide which workflow uses them.

3. Backup verification belongs to the app

In its combined workflow, VulpShift prepares a backup outside the target device and checks its contents using SHA-256 before formatting. It can then restore files onto the prepared volume.

This is VulpShift's logic. disk_kit provides copying and formatting operations, but does not create backups automatically or organise the entire restoration workflow. This distinction clarifies where to test stage transition rules and where to test system communication errors.

Formatting confirmation must identify the correct target. Disconnecting a device, running out of backup space and verification failures are separate outcomes that the interface should explain. A checksum helps compare file contents; it is not a promise to recover data from a damaged disk.

4. Platform limitations are part of the project

Using Flutter does not mean every feature works on every system immediately. The current disk_kit implementation supports macOS 12 or later and requires execution outside App Sandbox. VulpShift distribution must account for these requirements; an announcement website alone does not confirm release availability.

Image writing also requires identifying the image type. Directly writing an IMG or USB-compatible hybrid ISO and preparing a Windows UEFI installer are different operations. VulpShift separates these tasks instead of treating every ISO file as a ready-to-write image.

5. An open foundation, a separate product

We release disk_kit under the MIT licence. Other developers can use the same integration, while we develop VulpShift as an app with its own interface and workflows. Find the package and documentation in Dark Fox's open source section.

The practical benefit of extracting a package comes when its responsibility is clear. Here, that means communicating with storage devices; the product adds workflows, verification and error handling. Such integrations are also part of Flutter app development.

Documentation for your next steps

Use installation instructions that match the versions in your project. The sources below cover these topics in more detail.

Have a project to build?

Describe the app you want to build or develop and its current stage. We will establish what information is needed to plan the work.

Let's talk about your project