Delayed Image Import changelog
Stop image servers throttling your imports - download them later
Latest version2.34.2
Released14 October 2026
Last 90 days17 releases
Last 90 days33 changes
Tested up toWordPress 7.1
Product page
What Delayed Image Import does, what it costs and who it is for.
Knowledge base
Setup guides, how-tos and troubleshooting for Delayed Image Import.
Discord support
Ask a question in the Delayed Image Import channel and get an answer from Dave.
Downloads & licence
Grab the latest build or check your licence and renewal status.
2.34.214 October 2026
- Fixed the PHP notice "Translation loading for the delayed-image-import domain was triggered too early" in debug.log on WooCommerce stores.
2.34.114 October 2026
- Maintenance release: the plugin package build now checks for the bundled MCP Adapter files the shared settings module loads, with no change to how the plugin works.
2.34.01 October 2026
- Checking whether an image is already in the Media Library is now a single indexed lookup, using a new
dii_source_urlstable built from existing images in the background after the update. - New "Find duplicate downloads" button on the Loaded Images tab, listing source URLs stored on more than one attachment, most copies first.
- New
wp dii index-sourcescommand to build the index immediately (--rebuildto re-derive it), andwp dii duplicatesto list duplicates from the command line.
2.33.030 September 2026
- Faster image downloads on large stores: checking whether an image is already in the Media Library no longer reads the whole post meta table.
2.32.025 September 2026
- Fixed the Delayed Image Import page, and Media > Delayed Images, timing out with a 502 gateway error on stores with many loaded images.
- The Status, Delayed, Loaded and Failed tabs now load after the page opens, so one busy tab no longer holds up the others.
- Faster queries behind the status counts, the image lists and the background download queue.
- The Loaded Images tab lists the newest downloads first; the Dupes column has been removed.
- Fixed the Failed Images tab showing the wrong item count.
2.31.123 September 2026
- Images that are already in the Media Library are recognised and reused instead of downloaded again: by the source URL Super Speedy Imports recorded, or by comparing the downloaded file's contents with the product's own images and any image with the same filename.
- The source URL of every image the plugin handles is recorded as
sspdii_original_image_urlon the attachment; the previousoriginal_image_urlkey is not read. - A deferred import from Super Speedy Imports now makes the product gallery equal to the feed once its images are downloaded, so a gallery image that leaves the feed leaves the gallery; the attachment stays in the Media Library.
- Optional setting "Recognise images via Super Speedy Imports' lookup table", off by default: when on, an image Super Speedy Imports recorded is reused without downloading it; when off, every image the plugin has not stamped itself is downloaded once and matched by its contents.
2.3016 September 2026
- Fixed comma-separated image fields from Super Speedy Imports being treated as one long URL when delayed downloads were enabled.
- Fixed comma-separated gallery images remaining queued after the featured image downloaded, including blank image positions and captions containing commas.
- Tested up to WordPress 7.1.
2.2914 September 2026
- Fixed Delay image downloads being ignored on Super Speedy Imports 2.80.0 and later, which downloaded every image during the import instead of queueing it.
- Fixed a fatal error when a featured image was retried while its cooldown was still running.
- Fixed two products sharing the same image URL each downloading their own copy when they hydrated at the same time. They now share one attachment.
2.28.1322 August 2026
- Updated super-speedy-settings to the latest version
2.28.1221 August 2026
- Hardened the shared settings module and removed its Jetpack Autoloader dependency
2.28.1018 August 2026
- Updated
super-speedy-settingsto 1.8.0, restoring the official WordPress MCP Adapter
2.28.914 August 2026
- Replaced the bundled MCP Adapter and AI Engine integration with one shared Abilities bridge and a dedicated least-privilege agent user
- Fixed the documented MCP abilities not loading on REST requests when Delayed Image Import was the only active Super Speedy plugin
2.28.813 August 2026
- Fixed a fatal class redeclaration when multiple active Super Speedy plugins bundled the same Jetpack Autoloader; shared MCP packages now load once from the newest settings module
2.28.713 August 2026
- Added an MCP setup page and bundled the official WordPress MCP Adapter, while deferring to the official standalone plugin when installed
2.28.612 August 2026
- Fixed a gallery image retried from the Failed Images tab or
wp dii retrynow keeps its own alt text, title, caption and description, and lands back in its original position in the gallery - The plugin version is now read from a single place, so the settings screen always reports the installed version and stops re-listing changes you already have
2.28.511 August 2026
- Updated super-speedy-settings to the latest version
2.28.46 August 2026
- Updated the shared Super Speedy settings module: the Super Speedy wordmark on the settings header is now a crisp high-resolution image with a dark-text variant
- Tested up to WordPress 7.0, with the full test suite passing
2.28.33 August 2026
- Updated the shared Super Speedy settings module: AI agents can check your licence and install other Super Speedy plugins over MCP, now also exposed on AI Engine's MCP endpoint when AI Engine is active
- New Check frequency setting - cap licence, update and changelog checks to once a day or once a week, and see when the licence was last checked
- Licence and changelog checks fail fast when superspeedyplugins.com cannot be reached, instead of hanging the settings page
- The newest installed copy of the shared Super Speedy settings code now runs site-wide, whichever plugin loads first - previously the alphabetically-first plugin's often-older copy won
- AI agents can read and change every Delayed Image Import setting over MCP and check the hydration backlog (pending, failed, throughput, ETA) - also exposed on AI Engine's MCP endpoint
2.28.227 July 2026
- Fixed the PhotoSwipe lightbox could open on a black screen for products whose images have not been downloaded yet. Hot-linked images were rendered with no
data-large_image_widthordata-large_image_height, and WooCommerce's lightbox sizes the enlarged image from those rather than measuring it. Most likely to bite on gallery slides that had not finished loading when the lightbox was opened, since lazy-loaded slides do not hold up the page load event - Fixed the hover magnifier did not activate on hot-linked images, because WooCommerce only binds it when the image is wider than the gallery container
- Dimensions are now published up front. They are taken from the supplier URL wherever it encodes them (
-800x600.jpg,?width=1500,?w=640&h=480, Cloudinaryw_1200,h_800and similar), otherwise a placeholder in your store's own product aspect ratio is used. Neither costs a remote request, so nothing is downloaded any earlier than before. The browser still corrects them to the exact size once each image loads - Fixed an image that failed to load and fell back to the placeholder SVG could publish the SVG's dimensions as though they were the product photo's
- Added filters
dii_image_dimensions,dii_placeholder_image_sizeanddii_configured_image_ratiofor overriding the published dimensions
2.28.124 July 2026
- Updated super-speedy-settings (shared across all Super Speedy plugins): added a settings-version report to the licence-check and download requests for better licence and update-download debugging
2.28.021 July 2026
- Fixed the product detail page showed the "Awaiting product image" placeholder instead of the hot-linked image. WooCommerce's single-product gallery template bypasses the thumbnail filters when there is no local image, on block themes (Twenty Twenty-Five) and classic themes alike. The featured slot, the gallery wrapper class and the placeholder are now all filtered.
- Fixed gallery images did not render on the product page while the featured image was still delayed - WooCommerce skips its thumbnails loop without a real featured image id. Fully-delayed products now render their whole gallery, and a product with gallery images but no featured image shows the first gallery image in the main slot instead of the placeholder.
- New the pre-hydration gallery now behaves like a real one - flexslider thumbnail strip, correct viewport height once the remote images load, and the PhotoSwipe lightbox works with hot-linked images.
- Fixed themes that build their own product galleries or placeholder markup (Blocksy via
wc_placeholder_img, OceanWP viawc_placeholder_img_src) now show hot-linked images too. Verified on Twenty Twenty-Five/Four/Three/One, Storefront, Astra, OceanWP, Kadence, Blocksy, GeneratePress, Neve and Hello Elementor. - New de-duplication. Imports that map the same column to both featured image and gallery no longer produce a fake "gallery" of one identical image - the duplicate is dropped from the hot-linked display AND at hydration time, so the downloaded product ends up with a featured image and no redundant gallery. Comparison is scheme-insensitive (http/https match).
- Fixed image URLs without a file extension (e.g.
picsum.photos/seed/x/800/600, CDN transform endpoints) now hydrate. The file is downloaded first and its type read from the content, with a meaningful filename built from the URL path. A URL that returns something other than an image is rejected with a cleardii_not_imageerror into the failed-images list.
2.27.220 July 2026
- Updated super-speedy-settings to the latest version
2.27.118 July 2026
- Updated super-speedy-settings to the latest version
2.27.018 July 2026
- Launching as a paid product (unlimited-site yearly/lifetime), free automatically to Super Speedy Imports customers via a licence-term-matched entitlement. No functional changes to the plugin itself in this release.
2.26.118 July 2026
- Added the shared super-speedy-settings module (its submodule was not populated), so the Super Speedy settings and licence page now appears, with the latest icons.
2.2617 July 2026
- Deferring is now ON BY DEFAULT for Super Speedy Imports: while this plugin is active, any SSI import with featured or gallery images writes the URLs to the
delayed_image_url/delayed_gallery_image_urlspost meta instead of downloading inline — even for imports saved before this plugin was activated. Un-tick the "Defer image downloads" checkbox (now in SSI's Additional Options panel) on an import to restore inline downloads for that import; the checkbox stores an explicit off. - SSI's "Only refresh images" import mode is never deferred — that mode's narrowed pipeline runs no postmeta stages, so deferring would have turned the run into a no-op. It downloads inline, which is what "refresh images now" means anyway.
- The background hydration cron is now ON BY DEFAULT (every minute, batch of 100, strict per-domain round-robin) so delayed images load slowly by themselves without anyone visiting the Settings page. Un-tick "Enable cron" to rely on visitor traffic and WP-CLI only.
- The WP-CLI bulk commands (
wp dii load-featured / load-galleries / load-all / retry) now run through the same per-domain round-robin scheduler as the cron, so a CLI drain no longer fires a single supplier's images in series.--dry-runnow prints the image count per supplier host so you can see what the round-robin will do. The--batchflag is gone (it only grouped progress ticks);--limitstill caps the number of posts drawn. - The per-host circuit breaker now has memory. Previously a dead supplier was backed off within one cron tick and then re-attempted 5 times every subsequent tick, forever. Now tripping the breaker records a persistent backoff with an escalating duration — 2 minutes on the first trip, doubling per consecutive trip, capped at 1 hour (filter
dii_host_backoff_max) — and the cron skips backed-off hosts entirely. Any successful download from the host clears it. CLI runs ignore the backoff (you explicitly asked) but still record trips. - Galleries are now hydrated one image at a time instead of as a single unit. The round-robin interleaves a large gallery's images across supplier hosts instead of bursting them at one server, interrupted runs resume exactly where they stopped, positional alt/title/caption/description meta survives until each image individually succeeds, and each failed URL moves to the timed-out list on its own with its own reason. Partially-downloaded galleries now render complete on the front end — local copies first, hot-linked remainder after.
- The hot-link blocklist now also covers featured images and preconnect hints (previously only gallery placeholders): blocked hosts render the SVG placeholder immediately instead of firing a doomed browser request on every product-card view. The "show broken image" diagnostic mode overrides the blocklist so failing URLs stay inspectable in DevTools.
- Fixed the WP-CLI commands were registered with underscores (
wp dii load_all), so the hyphenated forms in all the documentation (wp dii load-featured / load-galleries / load-all / timed-out) never actually worked. They do now. - Changed the two-phase retry (short-timeout attempts, then a separate long-timeout pass, then "permanently failed") is replaced by an escalating-timeout retry ladder. Every image climbs the same ladder: the timeout starts at your download timeout (default 3 s) and doubles on each failure — 3, 6, 12, 24 — up to a configurable ceiling (new "Maximum download timeout" setting, default 30 s, effectively no-timeout for an image). Three failures at the ceiling mark the image FAILED and auto-retry stops. Gallery URLs finally get the same multi-attempt treatment as featured images (previously one real attempt). Retry spacing escalates too: each failure waits attempt-count times the cooldown before the next try, and the cron respects that spacing. Existing timed-out images are migrated automatically on upgrade: they rejoin the queue at the ceiling rung, and previously "permanently failed" images become properly failed with their recorded reasons intact. The Phase 2 timeout and max-attempts settings are gone (subsumed by the ladder).
- New the Timed-Out Images tab is now Failed Images, and it's actionable. Each row shows a live thumbnail of the remote URL (a thumb that renders next to a server-side failure reason means the supplier blocks servers but not browsers — the whole diagnosis at a glance), the post linked to its edit screen, the URL clickable into a new tab, the failure reason, attempt count and when it failed, plus Retry now and Dismiss actions per row and a Retry All Failed button. The Delayed Images tab gets post edit links, clickable URLs and a per-post "Hydrate now" action.
- New the Status tab shows real progress. Image-level counts (a post with 6 gallery URLs now counts as 6 — previously counts were per post, under-reporting the backlog), a progress bar with percentage, downloads-per-hour throughput and an ETA at the current rate, and a cron heartbeat line that goes red with advice when WP-Cron has stalled with a backlog. The counts auto-refresh every 10 seconds while images are pending, so you can watch the backlog drain.
- New one-click controls. "Process a batch now" runs a batch synchronously from the Status tab or the new dashboard widget — it works even where WP-Cron is broken, which is exactly when you need a button. "Pause hydration / Resume hydration" is a prominent toggle with the paused state shown everywhere (Status, dashboard widget, admin-bar badge). A per-supplier-host table shows pending / failed / last-hour stats per host with its backoff state, plus one-click "add to hot-link blocklist" and "retry this host's failures".
- New ambient visibility. A dashboard widget (pending / failed / loaded, Process-now button), an admin-bar badge with the pending count while a backlog exists (can be disabled in Settings), two Site Health checks (stalled cron with a backlog; failed images awaiting review), a success notice when the backlog fully drains, and a warning notice when recent downloads are failing heavily, naming the worst host.
- New WP-CLI commands
wp dii status(one-line health summary,--watchto poll),wp dii failed(the failed list with reasons/attempts,--host=filter) andwp dii retry-failed(re-queue failed URLs with fresh ladders,--host=to target one supplier).wp dii pendingnow reports image-level counts.wp dii timed-outandwp dii retryremain as deprecated aliases;--phase-twois gone. - Fixed un-ticking Diagnostic logging in Settings never saved (the unchecked box wasn't coerced to off).
2.25.220 May 2026
- Updated the Super Speedy Settings page: added a "Recheck Licenses" button above the licence table so customers have a clear way to refresh licence status after a renewal or upgrade without scrolling down to the licence-key field. The button is disabled until a licence key is entered/saved and re-enables as you type.
- The Recheck flow now also force-bypasses the auth-server's own 1-hour licence cache (via a
force=1flag on thewpiapi/check_product_keycall), so renewals/upgrades that completed less than an hour before a recheck no longer show as expired/exceeded. Normal admin page loads continue to use both caches as before — only an explicit Recheck click bypasses them. (Lives in thesuper-speedy-settingssubmodule, so the change propagates to every Super Speedy plugin.)
Showing the 27 most recent of 53 releases. View the full history
