Releases and roadmap
What each release brought, in a few lines, and what's planned next. For every change, including the small ones, see the changelog.
Coming in 4.0
Coming in 4.0
The biggest release so far, documented here already:
- Five new places to store files: PostgreSQL, SQLite, a directory on a disk or file share, Amazon S3 or another S3-compatible store and Azure Blob Storage, each with every feature, so moving from your own servers to the cloud takes changing one line.
- Uploading in parts: a large file arrives over several requests, and what's arrived survives a dropped connection or a restart.
- Upload links that let someone without an account send you files, until they expire.
- A dashboard for browsing containers, usage and limits while you develop.
- Stricter names, the same with every provider.
- Copy, move and rename files, within a container or between containers. Each copy remembers where it came from.
- Container policies: per-container limits on file size, total size and file count, allowed file types, and read-only containers, which your application can change while it runs.
- Expiring files that delete themselves, with a hook to audit everything Resourcefull deletes.
- Signed links that let anyone download one file, without signing in, until they expire.
- Backups and moves: export a container, every version of every file, to a zip, and import it into another store.
- Range downloads, so videos can seek and downloads can resume.
- Inspecting uploads before they're stored, to scan them for malware or check their type.
- Changing metadata and content type without uploading again, and changing a container's metadata.
- Slow uploads that hold nothing up: with SQL Server, an upload's content goes in about a MiB at a time, each batch committed on its own, so a slow client ties up no lock or connection while it sends.
- Health checks and telemetry for every operation, through OpenTelemetry.
- Safer downloads by default: files aren't kept by shared caches, and only safe types display in the browser.
- Fixes: with expiry turned on, a download in progress finishes even when the file is replaced; creating or deleting a container on SQL Server no longer reports failure after succeeding.
4.0 also changes the API, which is why it's a major release: Upgrading to 4.0 lists what's changed so far, and What's next what's still to come.
3.1, October 2026
- ASP.NET Core support, a new package: serve downloads with the right headers, accept uploads with preconditions, and turn errors into status codes.
- Conditional writes: upload or delete only if the file hasn't changed since you read it, so two editors can't overwrite each other.
- Listing a page at a time, and by name prefix, for containers of any size.
- Fix: with SQL Server, a delete that succeeded no longer reported that nothing was deleted when a transient error hid its success.
See the 3.1 changelog.
3.0, October 2026
The first release for general use:
- Files of any size stream in and out with flat memory use.
- Every version is measured and hashed as it's written, so what you read back is what was stored.
- Create-only uploads, decided by the write itself, so of several at once exactly one succeeds.
- Your own storage: the provider interface is public, with a documented contract and tests to check yours against.
- Cancellation for every call that contacts storage.
- Fixes: concurrent uploads of one name always leave exactly one current version, and large containers delete in bounded batches that can resume.
Coming from 1.x or 2.x? See Upgrading to 3.0. See the 3.0 changelog.
What's next
These are plans, not promises: the order can change, and nothing has a date. Each links to its issue on GitHub, where a comment saying you need it helps decide what comes first.
- Managing files: finding files by metadata, soft delete, retention and legal holds, and storing identical content once.
Something missing? Open an issue.