Home

>

Tools

>

Ghost

>

Releases

>

3.30.0

Ghost Release: 3.30.0

Tag Name: 3.30.0

Release Date: 8/18/2020

Ghost LogoGhost

Open-source publishing platform specifically designed for professional bloggers and publications. Focuses on clean, minimalist writing and publishing experience.

TL;DR

Ghost 3.30.0 introduces member impersonation for Admin users, allowing them to experience the site as a specific member. This release also includes significant improvements to email newsletters, fixing display issues in Outlook and optimizing image sizes for better delivery. Behind the scenes, Ghost has undergone substantial refactoring with many core libraries extracted into separate packages and a new job queue system implemented for better handling of background tasks like email sending and member imports.

Highlight of the Release

    • Admin users can now impersonate members to experience the site from their perspective
    • Significant improvements to email newsletter display in Outlook and other clients
    • Major refactoring with core libraries extracted into separate packages
    • New job queue system for better handling of background tasks
    • Improved member import functionality with better validation and performance

Migration Guide

Package Extraction Changes

Several core libraries have been extracted into separate packages:

  1. @tryghost/security

    • Replaces core/server/lib/security
    • The explicit bcryptjs dependency has been removed as it's now handled by this package
  2. @tryghost/promise

    • Replaces core/server/lib/promise and related test files
    • Update any local requires to point to the new package
  3. @tryghost/constants

    • Replaces the local constants file
    • Update any local requires to use the new package

Members API Usage

The codebase now uses @tryghost/members-api instead of direct member models:

  • Added stripeSubscriptions relation to member model
  • Updated serialize methods to match existing format
  • If you've extended Ghost's member functionality, you may need to update your code to use the new API

Upgrade Recommendations

This release contains significant improvements to email newsletters and member management, along with substantial internal refactoring. We recommend all users upgrade to benefit from these improvements.

For most users, this is a standard upgrade with no special considerations. Developers who have extended Ghost's member functionality or email systems should review the changes to ensure compatibility with their customizations.

The extraction of core libraries into separate packages primarily affects developers who have directly modified Ghost's codebase. If you maintain a fork of Ghost, you'll need to review these changes carefully.

Bug Fixes

Email Newsletter Fixes

  • Fixed apostrophes in Outlook: Replaced &#apos; with ' in email content to ensure apostrophes display correctly in Outlook
  • Removed unwanted URL output in preview text: Eliminated [http://url/] text from appearing in email preview snippets
  • Fixed wide email display in Outlook: Improved email template to prevent emails from appearing too wide
  • Fixed bookmark card spacing: Corrected spacing between author and publisher in bookmark cards by enabling inline pseudo-elements
  • Optimized email images: Added width/height attributes to images with a max width of 600px and using resized images where possible

Metadata Fixes

  • Fixed meta data for tag collections: Corrected metadata application when using tag data in collections
  • Fixed structured data timestamps: Resolved issues with published time and modified time not populating correctly for page context

Migration Fix

  • Fixed failing migration from Ghost versions earlier than 2.34 to 3.29+ by correcting a variable name in the migration script that checks for the existence of a unique index

New Features

Member Impersonation for Admins

Admin users can now impersonate members, allowing them to experience the site exactly as a specific member would. This feature helps admins test member-specific content and features without creating test accounts.

Job Queue System

A new job queue system has been implemented to manage long-running tasks:

  • Added @tryghost/job-manager dependency
  • Created a job service that handles logging and configuration
  • Connected the job service to server shutdown for graceful termination
  • Added job endpoint to testmode for easier testing

Improved Member Import

The member import functionality has been significantly enhanced:

  • Extracted batched member import into a separate module
  • Added validation layer using JSON Schema
  • Improved performance through parallelization of tasks
  • Better handling of Stripe API rate limits
  • Support for sort order in imported member labels

Security Updates

No significant security fixes were included in this release.

Performance Improvements

Email Performance

  • Updated Stripe JS to load asynchronously in the head, preventing it from blocking the main thread during page rendering
  • Optimized email image sizes to reduce email weight and improve loading times

Member Import Performance

  • Improved bulk member import performance through parallelization of tasks
  • Added bulkAdd method to Member, Customer, and Subscription models for more efficient database operations
  • Updated Stripe concurrency settings to avoid rate-limit errors during imports
  • Optimized validation process for imported data with minimal overhead (200ms for 50k records)

Impact Summary

Ghost 3.30.0 represents a significant step forward in both user-facing features and internal architecture. The addition of member impersonation gives administrators a powerful tool to test and understand the member experience. Newsletter improvements address several pain points with email display across different clients, particularly in Outlook.

Behind the scenes, this release continues Ghost's architectural evolution with more core libraries extracted into separate packages, improving modularity and maintainability. The new job queue system provides a robust foundation for handling background tasks like email sending and member imports, ensuring these operations complete gracefully even during server shutdown.

For developers, these architectural changes provide cleaner interfaces and better separation of concerns. For end users, the improvements to email newsletters and member management enhance the overall experience without requiring any changes to their workflows.

Full Release Notes

  • ✨ Allowed Admin users to impersonate members - Rishabh Garg
  • 🐛 Fixed bookmark card author/publisher spacing in member emails (#12134) - Jeremy Davidson
  • 🐛 Fixed emails appearing very wide in Outlook and improved email image sizes - Kevin Ansfield

See the changelogs for Ghost and Ghost-Admin for the details of every change in this release.

Statistics:

File Changed89
Line Additions1,500
Line Deletions1,264
Line Changes2,764
Total Commits66

User Affected:

  • Can now impersonate members to experience the site from a member's perspective
  • Benefit from improved member import functionality with better validation and performance

Contributors:

renovate-botdaniellockyerErisDSnazallouiskevinansfieldrshbhgrgroshandash411jeremydavidson