makeplane / makeplane/plane

Self-hosted CE: env flag to hide SaaS billing/upgrade UI

Open
#9,122 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
59.6k
Forks
5.8k
Avg merge
1d 22h
Merged PRs (30d)
49

Description

Is there an existing issue for this?

I searched open issues for 'billing self-hosted' and 'HIDE_BILLING' and didn't find a matching request.

Current behavior

Self-hosted Plane CE (chart plane-ce v1.5.0, app v1.2.3) deployed via the official Helm chart shows the SaaS Billing & Plans UI to instance admins:

  • Workspace Settings → Billing & Plans sidebar entry
  • Page at /<workspace>/settings/billing rendering Pro / Business / Enterprise tier cards with "Upgrade to Pro" and "Talk to Sales" buttons
  • Banner ads for Plane Cloud features

For self-hosted Community Edition deployments these are irrelevant — the upgrade buttons either link to plane.so (out of the deployment) or do nothing useful inside the self-hosted instance.

Expected behavior

A way to hide the billing/upgrade UI for self-hosters, e.g.:

  • A new env var like HIDE_BILLING_PAGE=1 or IS_SELF_HOSTED=1 that the frontend reads to suppress the Billing tab + page entirely
  • OR an instance-config flag toggleable from /god-mode/general/

This is consistent with how other OSS projects with hosted offerings handle it (e.g. GitLab CE hides EE-only UI elements unless EE is unlocked, Gitea hides its hosted-only references).

Why
  • Cleaner UX for self-hosters — the billing page surfaces options none of the team can act on
  • Removes confusion when admins explore settings ("do we have to pay for X?")
  • Self-hosted instances already pay for the infra; the SaaS upsell adds friction to internal team adoption
Workarounds we considered (and rejected)
  • CSS injection via reverse-proxy response rewrite: brittle, breaks on every frontend release
  • Patching the built JS in the prebuilt image: not maintainable
  • Building a custom frontend image with the billing route stripped: real ongoing burden for every CE upgrade

A first-party env flag would fix this in one line of config for every self-hosted user.

Deployment
  • Helm chart: makeplane/plane-ce 1.5.0
  • App version: v1.2.3
  • Self-hosted on a single-domain Kubernetes deployment (Tailscale-internal)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Trace the frontend settings navigation and the //settings/billing route, then inspect how configuration is passed through the plane-ce Helm deployment. Decide which proposed configuration mechanism fits the existing setup; done means self-hosted instances can suppress the Billing & Plans entry, page, and upgrade banners without custom frontend changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, typescript
Domain
devops, frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.