Skip to content

Removed the custom fields Labs flag - #32549

Draft
rob-ghost wants to merge 1 commit into
chore/dya-38-custom-fields-gafrom
chore/dya-212-remove-custom-fields-flag
Draft

rob-ghost wants to merge 1 commit into
chore/dya-38-custom-fields-gafrom
chore/dya-212-remove-custom-fields-flag

Conversation

@rob-ghost

@rob-ghost rob-ghost commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

ref https://linear.app/ghost/issue/DYA-212/remove-the-custom-fields-labs-flag

Stacked on #32539, which releases custom fields. Kept in draft until that has merged and reached every server Admin talks to, and nothing needs the flag to switch custom fields off.

What it does

Removes the membersCustomFields Labs flag. Once #32539 releases custom fields on every site, nothing needs the flag, so this deletes every read of it along with the code paths and tests for a server without custom fields.

 // ghost/core/shared/labs.js
 const GA_FEATURES = [
   // ...
   'stripeCheckoutDesign',
-  'membersCustomFields',
 ];
  • Server: the flag leaves the released list, and the routes that change a field no longer answer 404 without it. Their sub-router existed only to state that gate once, so the routes are now listed like the other members routes.
  • Admin: Settings, Settings search, member activity and the import's offer to create a field show custom fields without asking for the flag. Admin's flag constant goes, so the type checker listed each of these.
  • Portal: asks for the fields open to a signed-in member without checking the flag, and heads the account row "Account".

The custom fields host limit is now the only thing that switches custom fields off, and it is unchanged.

Decisions

Portal stays on its current version line. Every Ghost version loads Portal's newest patch on the minor line it pins, so Portal moves to a new minor line only when it needs something from Ghost that versions on the current line don't have, as when it needed Ghost to serve the gift card textures (#31651) or to accept gift delivery choices (#29968). Without the flag, Portal needs nothing new. Every Ghost version on the current line can answer Portal's request for a member's custom fields, and Portal reads a site that can't as having no fields. So this ships as a Portal patch, live on every site on that line once it merges. On a Ghost version that never released custom fields, members see no fields, as before, and their account row reads "Account" rather than their name.

  • Alternative: move Portal to a new minor line, so only Ghost versions with this change load it. Rejected: it would stop Portal fixes reaching every site on the current line, to keep the old heading on versions that never released custom fields.
  • Alternative: Ghost keeps reporting the flag on, for Portal alone. Rejected: it keeps the flag alive for one reader.

No new tests. A site running this branch behaves as it does with the flag released. The custom fields tests now run with the flag nowhere, which shows nothing reads it: the Admin fixtures, Portal's tests and the server's tests no longer set it, and Portal's updated tests fail against the Portal source before this change. The tests for a server without custom fields go, since that state no longer exists.

Suggested follow-ups

  • DYA-210: Portal asks for the custom fields offered to a member on every page a signed-in member loads. This change makes that request unconditional, including on Ghost versions that never released custom fields.

Validation

On a site running this branch:

  1. Settings → Membership lists Custom fields, and Settings search finds it. A field can be added, edited, reordered, archived and deleted.
  2. Open a member: fields take a value and keep it after a reload. The activity filter offers custom field changes.
  3. Members import: a CSV column that matches no field offers to create one.
  4. Sign in to Portal as a member: the account row reads "Account". A field opened to members shows on the account page and can be edited.
  5. With the custom fields host limit disabled, Settings → Custom fields shows the upgrade prompt, existing fields read as archived, and a field change is refused.

Once the Portal patch is live, on a site running a Ghost version from before this change: Portal's account page works, shows no custom fields on a version that never released them, and the account row reads "Account".

@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@nx-cloud

nx-cloud Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit 0f53873

Command Status Duration Result
nx run ghost:test:integration ✅ Succeeded 1m 39s View ↗
nx run ghost:test:bullmq:scenarios ✅ Succeeded 45s View ↗
nx run ghost:test:bullmq ✅ Succeeded 33s View ↗
nx run ghost:test:e2e ✅ Succeeded 3m View ↗
nx run ghost:test:legacy ✅ Succeeded 1m 46s View ↗
nx run ghost:test:ci:integration ✅ Succeeded 1s View ↗
nx run ghost:test:ci:e2e ✅ Succeeded 2s View ↗
nx run @tryghost/admin:build ✅ Succeeded 18s View ↗
Additional runs (11) ✅ Succeeded ... View ↗

💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗


☁️ Nx Cloud last updated this comment at 2026-11-04 11:54:17 UTC

@codecov

codecov Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (chore/dya-38-custom-fields-ga@231defe). Learn more about missing BASE report.

Additional details and impacted files
@@                       Coverage Diff                        @@
##             chore/dya-38-custom-fields-ga   #32549   +/-   ##
================================================================
  Coverage                                 ?   85.83%           
================================================================
  Files                                    ?     1414           
  Lines                                    ?    53618           
  Branches                                 ?     9238           
================================================================
  Hits                                     ?    46024           
  Misses                                   ?     6407           
  Partials                                 ?     1187           
Flag Coverage Δ
e2e-tests 73.15% <100.00%> (?)
unit-tests 69.05% <100.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

ref https://linear.app/ghost/issue/DYA-212/remove-the-custom-fields-labs-flag

Custom fields are released on every site, so nothing reads their Labs flag any more: the server no longer refuses field changes without it, Admin always offers custom fields in Settings, Settings search, the import's column mapping and member activity, and Portal always asks for the fields open to a signed-in member and heads their account row "Account". The host limit is now the only thing that switches custom fields off. Portal stays on its current version line, since it needs nothing from Ghost that the versions on that line lack: each of them can answer Portal's request for a member's fields, and Portal reads a site that can't as having none. On a version that never released custom fields, members see no fields and the "Account" heading. The tests for a server without custom fields go with the flag.
@rob-ghost
rob-ghost force-pushed the chore/dya-38-custom-fields-ga branch from 820b51b to 231defe Compare November 4, 2026 11:46
@rob-ghost
rob-ghost force-pushed the chore/dya-212-remove-custom-fields-flag branch from 9a641e6 to 0f53873 Compare November 4, 2026 11:46

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant