Swish Migrate and Backup

Changelog

1.1.11

  • SWISH is now the only archive format for new backups (Archive Format selector removed from Settings)
  • Restore continues to support existing .zip and .tar.gz backups
  • Fixed curl and aria2c CLI download commands copying as multiple commands on Windows (CMD/PowerShell) – commands now generated as a single line

1.1.10

  • Fixed PHP 7.4 compatibility – converted match expressions to switch statements
  • Fixed cancel job button to always clean up localStorage
  • Fixed stale jobs remaining in UI when jobs not found on server
  • Added debug logging for backup progress troubleshooting

1.1.9

  • Added SWISH archive format option to Settings dropdown
  • SWISH format provides streaming with true append support and resume capability

1.1.8

  • Backup Completeness Fixes

    • Fixed missing files in backups (e.g., uploads/2026 folder) by removing timeout checks during file indexing
    • File enumeration now completes fully before archiving begins, following AI1WM’s proven approach
    • Only memory pressure triggers yielding during indexing phase, not time limits
    • Fixed path resolution for symlinks and Docker environments – improved relative path detection
    • Fixed plugin vendor directories not being backed up (was breaking Yoast, WooCommerce, etc.)
  • Size Limit Increase

    • Increased backup size limit from 2GB to 4GB for free version
  • CLI Backup Performance

    • CLI backups now use pipeline approach with optimized settings
    • Increased batch size to 500 files per iteration for CLI (no HTTP timeout concerns)
    • Disabled time-based yielding for CLI – only yields on memory pressure
    • Files write completely without internal chunking in CLI mode
    • Reduced logging overhead by changing per-file logs from info to debug level
  • Browser Backup Optimization

    • Dynamic time budget based on server’s max_execution_time (uses 60% of available time)
    • Adaptive batch size using ServerLimits detection for different hosting environments
    • Increased default batch size from 50 to 100 files per request
    • Automatic tuning for WP Engine, Kinsta, Flywheel, and other managed hosts
  • Settings UI Improvements

    • Added Settings button to Backups page header for quick access before creating backups
    • New settings modal with performance controls and hosting presets
    • Simplified settings to focus on key options: Files per Request, Database Rows per Batch
    • Quick presets for Shared Hosting, VPS/Managed, and Dedicated servers
    • Backup contents toggles for Database, Plugins, Themes, Uploads, and Core Files
  • Job Progress Display Fixes

    • Fixed steps log not updating during pipeline backups
    • Steps log now correctly shows pipeline phases: Scanning files → Archiving files → Finalizing
    • Initial steps displayed immediately when backup starts
    • Progress details show file counts during indexing and processing phases
  • Import Pipeline Reliability Improvements

    • Fixed race condition in file queue processing that could cause files to get stuck
    • Increased stale session timeout from 2 to 10 minutes for slow servers
    • Added database index on updated_at for faster stale processing queries
    • Fixed table prefix detection to read from SQL header comment first
    • Added table prefix verification after database restore to detect mismatches
  • Performance Optimizations

    • Added chunked URL replacement to prevent timeouts on large databases
    • Fixed transient deletion loop with iteration limit (max 100k transients)
    • Created shared CacheManager utility to consolidate cache flushing logic
    • URL replacement now processes tables incrementally with state persistence
  • Detailed Migration Progress Indicators

    • Each phase now shows specific human-readable labels (e.g., “Restoring Database” instead of generic “Processing”)
    • Added detailed progress messages showing actual data: bytes processed, tables imported, files copied
    • Database restore shows: “2 MB of 4 MB processed (847 queries this chunk)”
    • URL replacement shows: current pattern being processed, table name, replacement count
    • Finalize phase lists actions taken: caches flushed, security plugins deactivated
    • Cleanup phase shows size of temporary files removed
  • New Shared Components

    • Added CacheManager class for centralized cache operations with safeguards
    • Added count_tables_in_sql() helper for accurate table counting in progress display
  • WP-CLI Support

    • Added wp swish backup command for creating backups from command line
    • Added wp swish import command for importing/migrating backups via CLI
    • Added wp swish status and wp swish cleanup utility commands
    • CLI commands support all backup types: full, database, files

1.1.7

  • Fixed large file downloads for curl/wget – moved download handler outside wp-admin
  • Download URLs now use token-based auth without requiring WordPress login
  • Downloads now support resumable transfers with curl -C flag
  • Disabled LiteSpeed X-LiteSpeed-Location for downloads (falls back to PHP streaming)
  • Fixed resumable downloads on GoDaddy/LiteSpeed + Cloudflare setups

1.1.6

  • Added working scheduled backups UI with REST API endpoints
  • Fixed backup job step indicators to show progress correctly
  • Added Schedule Backup button to empty state on Schedules page

1.1.5

  • Made X-Sendfile opt-in to improve PHP streaming reliability
  • Enhanced fallback for servers without X-Sendfile support

1.1.4

  • Added X-Sendfile/X-Accel-Redirect support for reliable large file downloads
  • Improved download performance on Apache, Nginx, and LiteSpeed servers

1.1.3

  • Fixed critical backup/restore issues for Docker and symlink environments
  • Improved path handling for various hosting configurations

1.1.2

  • Added support for tar.gz backup analysis and restore
  • Improved backup file format detection

1.1.1

  • Minor bug fixes and stability improvements

1.1.0

  • Major architecture improvements for large site support
  • Enhanced chunked processing for database and file backups
  • Improved memory management during backup operations

1.0.9

  • Added async backup processing to prevent timeouts on managed hosting (WP Engine, etc.)
  • Added background job processing via WP Cron with automatic fallback
  • Added job status polling endpoint for real-time progress updates
  • Added ETA (estimated time remaining) display during file backup
  • Fixed backup download returning “0” on admin-ajax.php – now uses admin.php
  • Improved compatibility with hosts that have strict execution time limits

1.0.8

  • Fixed inline script to use wp_add_inline_script() for WordPress.org compliance
  • Replaced move_uploaded_file() with wp_handle_upload() for proper WordPress file handling

1.0.7

  • Compatibility update for Pro plugin import fixes
  • Minor stability improvements

1.0.6

  • Compatibility update for Pro plugin URL auto-detection fixes
  • Minor stability improvements

1.0.5

  • Compatibility update for Pro plugin size estimation fixes
  • Minor stability improvements

1.0.4

  • Compatibility update for Pro plugin import/migration fixes
  • Minor stability improvements

1.0.3

  • Fixed import feature – Continue button now properly uploads and analyzes backup files
  • Added auto-detection of old site URL during migration (pre-filled from backup manifest)
  • Added detailed migration progress with stage tracking similar to backup process
  • Fixed backup exclusion to always exclude swish-backups folder from backups
  • Moved backup storage location from wp-content/uploads/swish-backups to wp-content/swish-backups
  • Added smooth scrolling and active state highlighting to documentation navigation
  • Improved documentation page with better anchor link navigation

1.0.2

  • Enhanced backup progress modal with detailed stage tracking
  • Added visual progress log showing each backup stage as it completes
  • Green checkmarks for completed stages, red indicators for failures
  • Improved progress feedback with animated status indicators
  • Better error handling and messaging during backup process

1.0.1

  • Added option to include/exclude WordPress core files in backups
  • Enhanced CSS for admin layout with responsive design
  • Refactored JavaScript asset enqueuing for improved performance
  • Minor bug fixes and improvements

1.0.0

  • Initial release
  • Full site, database, and files backup support
  • Local storage adapter
  • Amazon S3 storage adapter
  • Dropbox storage adapter
  • Google Drive storage adapter
  • Site migration with URL replacement
  • Search and replace functionality
  • Scheduled backups
  • REST API endpoints

Plugin Website
Visit website

Author
SwishFolio
Version:
1.1.11
Last Updated
May 27, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 6.9.4
Requires PHP
8.1

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.