TL;DR
Ghost 5.27.0 brings important bug fixes for email management, member handling, and portal functionality. Key improvements include fixing SingleUseTokens persistence across server restarts, proper validation for offer amounts, correct tier ordering by price, and better handling of member counts for authors and editors. The release also adds support for Node.js 18 while bumping the minimum required Node version to 14.18.0.
Highlight of the Release
- Added support for Node.js 18
- Fixed SingleUseTokens persistence across server restarts
- Improved validation for offer amounts in the admin panel
- Fixed tier ordering by monthly price
- Removed inappropriate free trial messaging for invite-only sites
Migration Guide
Node.js Version Requirement
The minimum required Node.js version has been increased from 12.x to 14.18.0. If you're running Ghost on an older version of Node.js, you'll need to upgrade before updating to Ghost 5.27.0.
To check your current Node.js version:
node -v
If you're using a version lower than 14.18.0, please follow the Node.js installation instructions to upgrade.
Email Suppressions Table Changes
This release includes migrations that drop and recreate the suppressions table to fix issues with incorrect rows and missing constraints. The table will be emptied during the upgrade process, and the email_address column has been renamed to email to match the users and members tables.
If you've been relying on the suppressions table data, be aware that this data will be reset during the upgrade.
Upgrade Recommendations
This release is recommended for all Ghost users, especially those who:
- Want to run Ghost on Node.js 18
- Have experienced issues with magic links (SingleUseTokens) not working after server restarts
- Have encountered problems with email batches or member counts
- Need proper validation for offer amounts in the admin panel
Before upgrading:
- Ensure your server meets the new minimum Node.js requirement of 14.18.0
- Take a backup of your Ghost installation and database
- Review the migration guide for any changes that might affect your setup
The upgrade process follows the standard Ghost update procedure and should be straightforward for most installations.
Bug Fixes
Fixed SingleUseTokens Being Cleared on Boot
Magic links in Ghost are valid for 24 hours, and after first usage, the token remains valid for an additional 10 minutes to accommodate email clients that may "visit" links. Previously, these tokens were cleared on server restart, which could cause issues for users trying to use valid tokens. This fix ensures tokens remain valid for their intended lifespan even across server restarts by adding new fields to track token usage:
first_used_at: Records when the token was first used
used_count: Tracks how many times the token has been used
updated_at: Stores when the token was last changed/used
Fixed Tier Ordering by Monthly Price
Tiers are now correctly ordered from lowest to highest monthly price, matching the documented behavior in the API. This ensures consistent display of pricing tiers throughout the admin interface and API responses.
Fixed Missing Validation of Offer Amounts
Improved validation for the amount field in offers to cover all type/amount cases. The validation now runs on blur to match standard validation behavior and re-validates when the offer type changes. This prevents invalid offer configurations from being saved.
Fixed Free Trial Message for Invite-Only Sites
Removed the free trial messaging that was incorrectly showing in Portal for sites configured as "invite only" in membership settings. This ensures the messaging is consistent with the site's configuration.
Fixed Admin Loading Member Counts for Authors and Editors
Fixed an issue where the admin interface would attempt to load member counts for authors and editors, resulting in unnecessary 403 errors. Since authors and editors don't have permission to view member information, the system now skips these requests entirely.
Fixed Email Batches with Empty "to" Field
Added retry logic when fetching recipients for email batches to handle cases where the recipient list could be empty despite having entries in the database. This improves the reliability of the email sending process.
Fixed Settings Menu Header and Tags Overlapping
Resolved a UI issue where the settings menu header and tags were overlapping, improving the overall user experience in the admin interface.
New Features
Added Support for Node.js 18
Ghost now officially supports Node.js 18, which is the current LTS (Long Term Support) version. This allows site owners to run Ghost on the latest stable Node.js environment with all its performance improvements and security updates.
Improved Theme Error Notifications
A new static version of theme error notifications has been added to make theme errors more discoverable. This includes a permanent notification toast and a static modal to hold theme error details, making it easier for administrators to identify and fix theme-related issues.
Security Updates
No specific security fixes were included in this release.
Performance Improvements
Improved Email Service Reliability
Several improvements have been made to the email service to enhance its reliability:
- Added retry logic when fetching recipients for email batches
- Better handling of email verification requirements
- Improved handling of large imports with concurrent processing
Enhanced Domain Events Processing
Added a DomainEvents.allSettled utility method to improve test reliability and speed by allowing tests to wait for all events to be processed before continuing. This should make tests more reliable and faster by avoiding timeouts.
Impact Summary
Ghost 5.27.0 focuses on improving reliability and fixing several important bugs across the platform. The most significant changes include better handling of SingleUseTokens (magic links) across server restarts, proper validation for offer amounts, and correct tier ordering by price.
For developers, the addition of Node.js 18 support and the increase in minimum Node.js version to 14.18.0 represents an important step forward in keeping Ghost compatible with modern JavaScript environments.
Site owners will benefit from improved email delivery reliability, better handling of free trial messaging for invite-only sites, and updated Stripe Connect buttons for better discoverability.
Administrators will appreciate the improved theme error notifications, making it easier to identify and fix theme-related issues. The UI improvements, including fixed settings menu header and tags overlap, contribute to a better overall user experience.
This release contains no breaking changes beyond the Node.js version requirement increase, making it a recommended upgrade for all Ghost users.
Full Release Notes
- 🐛 Fixed admin loading member counts for authors and editors - Simon Backx
- 🐛 Fixed batches can have an empty "to" field (#16064) - Simon Backx
- 🐛 Removed free trial message shown on portal for invite only sites - Rishabh
- 🐛 Fixed SingleUseTokens being cleared on boot (#15999) - Simon Backx
- 🐛 Fixed missing validation of offer amounts in the admin panel (#16022) - Kevin Ansfield
- 🐛 Fixed tiers order by monthly_price (#16013) - Elena Baidakova
- ℹ️ Added support for Node 18 - Daniel Lockyer
- ℹ️ Bumped minimum Node version to 14.18.0 - Daniel Lockyer
View the changelog for full details: v5.26.4...v5.27.0
🪄 Love open source? We're hiring JavaScript Engineers to work on Ghost full-time