Rethinking the Media Gallery, Explore Long-Term Orchard Core Support in Action - This week in Orchard (03/07/2026)

Discover the brand-new Vue 3-powered Media Library by Jasmin Savard with real-time updates, resumable uploads, and a sleek new UI.

Get inspired by a real-world case study of long-term Orchard Core maintenance for the City of Santa Monica.

And of course, we continue to show the new features of Orchard Core v3 targeted at developers, such as Sára El-Saig's contribution on using Jint's async scripting APIs to avoid a sync-over-async call that can cause a thread deadlock, so it's always preferable.

The other change by Mike Alhayek introduces support for cancellation tokens throughout the email and SMS sending infrastructure and improves code documentation by adding XML doc comments.

Orchard Core updates

Jint async scripting APIs

JavaScript global methods received the new GlobalMethod.AsyncMethod property, which is accessible in JavaScript as a function using the given name and the Async suffix. This is non-breaking, but we suggest using the new methods where applicable going forward. In cases where the method value is immediately returned, this is very simple, for example, replacing deleteContentItem with deleteContentItemAsync:

"ContentItemId": "[js: deleteContentItem('blogContentItemId')]"

can be replaced with

"ContentItemId": "[js: deleteContentItemAsync('blogContentItemId')]"

which works without any need to await, because the expression returns a JavaScript Promise object, which is automatically awaited by the engine.

So, the idea here is that we have async methods, like deleteContentItemAsync, which means we can call await on them. But at the same time, if we don't call await, then the new code will handle that, and await it.

If you check out the related page in the Orchard Core documentation, you can see the new versions of the functions.

Using the new version avoids a sync-over-async call that can cause a thread deadlock, so it's always preferable. Thanks for the contribution to Sára El-Saig!

Scripting module documentation

CancellationToken to NotificationServices and use Result Pattern

This change by Mike Alhayek introduces support for cancellation tokens throughout the email and SMS sending infrastructure and improves code documentation by adding XML doc comments. The most significant changes include updating public APIs to accept CancellationToken parameters, propagating these tokens through internal calls, and enhancing method documentation for clarity and maintainability.

So, the IEmailService.SendAsync(), ISmsService.SendAsync(), IEmailProvider.SendAsync(), and ISmsProvider.SendAsync() methods now accept a CancellationToken. This is a source- and binary-breaking change for custom email services, providers, and event handlers. Update your implementations and overrides to include the new cancellationToken parameter.

Check out the release notes of v3.0, where you can find the mentioned changes under the Notifications Module and Email Interfaces sections.

Add CancellationToken to NotificationServices and use Result Pattern

Demos

Rethinking the Media Gallery - Now Powered by Vue 3

The goal of this feature is to migrate the Media Library to Vue 3. It means migrating all the components (for example, the Media Picker) to Vue 3. Here you can find the pull request containing the changes by Jasmin Savard.

This change also involves adding new media-related features. If you navigate to Tools -> Features and search for "media", you will see several new ones:

  • The Media SignalR and Media SignalR - Azure features enable real-time media updates via SignalR. When enabled, changes to media files and folders are broadcast to connected clients. You can use SignalR locally as a SignalR host, where the tenant becomes the host of the SignalR server. SignalR will synchronize changes across browsers, so you will see them instantly.
  • The Media TUS Uploads feature enables resumable file uploads using the TUS protocol. When enabled, it replaces the default chunked upload mechanism with the TUS standard, allowing uploads to be paused and resumed.
  • The Media SignalR - Redis feature uses Redis as the backplane for real-time media updates, enabling multi-instance deployments.

Now let's quickly see the new Media Library in action!

The navigation is different; we have different icons at the top. We can go to a grid with images and to a table view with more details about the files, but without the images. We can set the thumbnail size and the number of how many items we want to display per page. It also saves the preferences in your browser's local storage.

Media Library Vue 3

We have new modals in the Media Library. If we create a new subfolder, we can set the folder name in this modal. Or if we want to move/copy a file to a new folder, we can select the destination folder in another modal. As you can see, we have toast notifications for actions that happen on the Media Library. If you upload files, you can see the Upload modal at the bottom-right with the progress bar and a pause button.

And it's still not all of it! If you want to see the new Media Library in action, head to YouTube for a recording!

News from the community

Case study: Long-term Orchard Core maintenance for the City of Santa Monica

Several years ago, we helped migrate santamonica.gov from Orchard 1 to Orchard Core. Since then, our collaboration has continued with a different but equally critical focus: long-term maintenance and reliability.

Over the past couple of years, our work has centered on the kind of improvements that are rarely visible from the outside, yet essential for any long-running public website:

  • Keeping Orchard Core up to date through major version upgrades.
  • Adding comprehensive automated testing, including accessibility, security, and visual regression checks.
  • Improving developer experience with predictable local setup.
  • Cleaning up and standardizing the codebase to make future changes easier.
  • Identifying and resolving performance bottlenecks.

The goal was to leave the project in a state where development can continue safely and efficiently, without regressions, surprises, or accumulated technical debt.

As Sushmita Inamdar, Software Developer at the City of Santa Monica, put it:

"Lombiq continues to be an invaluable partner in maintaining and improving our Orchard Core platform… Their work behind the scenes has significantly improved the reliability, security, and maintainability of our platform."

We're grateful for the trust and the ongoing collaboration, and we're glad to keep supporting a mission-critical public website as it evolves.

If you run an Orchard Core site and are thinking about upgrades, testing, performance, or long-term maintenance, this case study may be useful for planning your next steps.

Do you run an Orchard Core site that needs upgrading, testing, performance work, or long-term maintenance? Get in touch with us, and we can help you plan the next steps.

City of Santa Monica case study

Orchard Harvest 2026 Program

The Orchard Harvest 2026 conference will be held in Vancouver, and we look forward to seeing you all this autumn in Canada. Our confirmed dates for this year are September 10th and 11th.

Don't miss this limited-time offer: just $280 for two days of all-access learning and networking. Secure your early-bird tickets to the conference now!

The full Orchard Harvest 2026 program is live! Be sure to check out the conference's updated official website for the program!

As we move forward, we will keep community members informed of the details, and you will find every detail in this newsletter, too!

Don't miss the biggest Orchard Core event of the year!

Orchard Harvest 2026 Program

Orchard Dojo Newsletter

Lombiq's Orchard Dojo Newsletter has 414 subscribers! We have started this newsletter to keep the Orchard community informed about the latest platform news. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including 'This Week in Orchard', of course.

Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here!

If you are interested in more news about Orchard and the details of the topics above, don't forget to check out the recording of this Orchard meeting!