
This update ensures error responses use the page's format, handles uploads and asset URLs correctly on instances without a CDN, and fixes several caching issues.
If a page sets its content type, either by format or with {% response_headers %}, it now keeps that type when an error occurs, instead of changing it based on the request's Accept header. Unrecognized formats show as text/plain, and errors on .js pages return a JSON string literal so the browser does not run error messages as scripts.
If you request a presigned upload URL on an instance without object storage, it used to return nothing and sync would report a failed fetch. Now, the endpoint returns a 501 with a direct_upload_unavailable error, and the CLI uploads assets through the instance instead.
When an instance serves its own assets from disk, asset_url now gives a host-relative URL. It no longer points to a CDN that doesn't have the files or fails when no asset host is set. Instances using a CDN are not affected.
A page using dynamic_cache with layout: "" used to work on the first request but failed on later cache hits. Now, pages with no layout are served from cache as-is, which fixes issues with cached sitemap.xml pages. Cache hits also no longer create a second Liquid context for the layout.
An instance registered with a Partner Portal on a non-default port used to drop the port, causing later token checks to fail with a 401 error. This affected local setups and private stacks, but not production.
Low-level error logs now correctly name IP spoofing and missing-parameter errors. The 403 and 406 status codes were already correct.
Try Insites for as long as you like with our free starter plan and free staging instances.
Then purchase a production instance when you are ready to go live.