Apostrophe 4.28.0: Static Builds for Astro, Pretty URLs for PDFs and Security Fixes #5361
BoDonkey
announced in
Release Notes
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Apostrophe Community!
Apostrophe 4.28.0 brings a significant expansion to our Astro integration with support for static site builds, a cleaner URL experience for uploaded PDFs, and a round of stability improvements. This release also includes several community-contributed fixes.
Static Builds for Astro + ApostropheCMS Projects in Beta
Teams using Astro as their frontend can now take advantage of static site generation. This means you can now pre-render your Astro frontend and deploy it to any CDN or static host — no Node.js server required — reducing hosting costs and complexity while improving performance and security. The
@apostrophecms/apostrophe-astrointegration module has been updated to support static builds, and new features in our core@apostrophecms/urlmodule handle URL generation for static contexts. When the relevant option is switched on, ApostropheCMS now generates URLs differently for filtering and pagination. For instance, to ensure they are static -friendly, URLs like/blog?page=2now read like:/blog/page/2. The@apostrophecms/sitemapmodule has also been updated accordingly, so piece filter and pagination URLs are now included in generated sitemaps. The static build feature is currently in beta, and we encourage you to share your feedback.To learn more, check out the new Static Builds with ApostropheCMS + Astro tutorial.
Pretty URLs for Uploaded Files
The file library now supports a
prettyUrls: trueoption for@apostrophecms/file. When enabled, PDFs are served at readable, slug-based URLs rather than the internal attachment filename. You can customize the URL by editing the slug field directly in the file manager. There is a small performance trade-off to be aware of, which is noted in the option documentation. Note that pretty URLs for files are not yet compatible with static builds — this will be addressed in the next release.Additional Improvements
This release includes several stability and UX fixes worth noting:
Community Contributions
We're grateful to community members who contributed fixes in this release cycle:
Eduardo Correal fixed a bug where the
getOneAPI endpoint could not correctly retrieve documents that are not localized. Thanks, Eduardo!Additionally, the
sanitize-htmldependency has been updated to resolve a security issue in the underlyinghtmlparser2library, which previously failed to correctly detectjavascript:URLs encoded with zero-padded numeric character references. This fix also resolves double-encoding of entities insidetextareaandoptionelements. Thanks to alex-rantos for this contribution.Important security updates
This release addresses two security vulnerabilities. Depending on your setup, one or both of these may warrant an urgent upgrade:
OxEr3n reported a vulnerability in the
@apostrophecms/import-exportmodule that could allow a user with permission to edit the global settings document to write files to thepublic/folder or overwrite site code accessible to the server process (CVE-2026-32731). The vulnerability was not publicly disclosed prior to this fix. If you are using the import-export module, upgrading promptly is required. Thanks to OxEr3n for responsible disclosure and for providing test cases.0xkakashi reported a previously undisclosed vulnerability that allowed a compromised password to be used to perform CMS actions without 2FA (CVE-2026-32730). The vulnerability was not publicly disclosed prior to this fix. Sites not using two-factor authentication are unaffected, but if you are using
@apostrophecms/login-totpor a similar module, upgrading immediately is strongly recommended. Thanks to 0xkakashi for reporting the issue and recommending a fix.This release contains important security fixes — we encourage all users to upgrade promptly with
npm update, and particularly urge those using the@apostrophecms/import-exportor@apostrophecms/login-totpmodules to treat this as an urgent update. Let us know what you think on our roadmap.🚀 Happy coding!
Apostrophe 4.28.0
4.28.0
Adds
prettyUrls: trueoption for@apostrophecms/file, which enables "pretty URLs" for PDFs and other items in the file library, in exchange for a small performance impact. Edit the slug field to adjust the pretty URLFixes
getOneAPI can correctly retrieve documents that are not localized. Thanks to Eduardo Correal.AposPermissionGridthat causes unrelated clicks to be "swallowed" due to a race condition at low network speeds.Changes
Security
Pro modules
@apostrophecms-pro/cypress-tools1.0.0-beta.26Automated functional browser tests are an important part of quality assurance for enterprise websites and web applications. Cypress is an industry-standard, open-source library for carrying out automated functional browser tests. This module provides a collection of conveniences for testing the ApostropheCMS admin UI within Cypress. Explore our documentation to learn how this extension can enhance your project. Once you're ready, obtain a license and install it through Apostrophe Workspaces. For further details or inquiries, feel free to contact us or visit our pricing page.
Adds
Fixes
useWidgetFocusto avoid inner widget UIFree modules
@apostrophecms/apostrophe-astro1.10.0This module integrates ApostropheCMS into your Astro application.
Adds
@apostrophecms/seo1.4.0Comprehensive SEO module providing meta field management and Schema.org structured data generation (JSON-LD) for all pages and pieces.
Adds
Fixes
fieldMappingsoption@apostrophecms/sitemap1.3.0The Apostrophe Sitemap module generates XML sitemaps for websites powered by ApostropheCMS. The sitemap includes all of the pages on your site that are visible to the public, including "piece" content, such as events and blog posts.
Adds
Utilities
@apostrophecms/code-upgrader1.1.0 (2026-03-02)The Code Upgrader handles a portion of the required modifications for an Apostrophe 2 (A2) codebase to run Apostrophe 3 (A3). It will also identify many specific lines and sections of code that a developer will need to convert manually.
Changes
@apostrophecms/content-upgrader1.1.0 (2026-03-02)A tool to migrate your content from Apostrophe 2.x to Apostrophe 3.x. That is, it creates a new database in the A3 format, and copies over the uploaded media. This tool does not upgrade your source code.
Changes
@apostrophecms/code-upgradermodule is no longer recommended.1.0.0 (2023-03-16)
Changes
1.0.0for consistency.postcss-viewport-to-container-toggle2.3.0A plugin for PostCSS that allows to toggle between viewport and container units based on the presence of a container data attribute.
Adds
:rootvariable valuessanitize-html2.17.2This module provides a simple HTML sanitizer with a clear API.
Fixes
htmlparser2from 8.x to 10.1.0. This improves security by correctly decoding zero-padded numeric character references (e.g.,) that previously bypassedjavascript:URL detection. Also fixes double-encoding of entities inside raw text elements liketextareaandoption. Thanks to [Alexandros Rantos] (https://github.com/alex-rantos) for this update.uploadfs1.26.1uploadfscopies files to a web-accessible location and provides a consistent way to get the URLs that correspond to those files. uploadfs can also resize, crop and autorotate uploaded images. uploadfs includes S3-based, Azure-based, GCS-based and local filesystem-based backends and you may supply others.Fixes
copyInto correctly recognize file extensions for blacklistingBeta Was this translation helpful? Give feedback.
All reactions