Skip to content

Project creation silently fails with React crash when name/identifier contains special characters #8969

@erickt23

Description

@erickt23

Describe the bug

Creating a project with a special character (e.g. +) in the Project name field causes the API to return 400 Bad Request, but the frontend does not surface a field-level validation message. Instead, the React app crashes with minified
errors #418 and #423, and the user is left with no feedback about what went wrong.

Steps to reproduce

  1. Self-host Plane (community edition, stable images) behind a reverse proxy.
  2. Sign in, create a workspace.
  3. Click Create Project.
  4. Enter a project name containing + (e.g. Foo + Bar).
  5. Pick any valid identifier and submit.

Expected behavior

  • Inline validation error on the Name (or Identifier) field telling the user which characters are not allowed.
  • No console crash; form remains interactive so the user can correct the input.

Actual behavior

  • POST /api/workspaces/{slug}/projects/ returns 400 (duration ~40 ms — serializer rejection).
  • Frontend logs:
    Uncaught Error: Minified React error feat: issue filter views  #418
    Uncaught Error: Minified React error feat: jitsu events for sign in and sign up #423
    ...
    store-context-*.js Failed to create project from project store
  • The error toast (if any) does not indicate which field is invalid.
  • Removing the special character from the name allows the project to be created normally.

Environment

  • Plane version: stable (self-hosted, makeplane/plane-*:stable, pulled 2026-04-28)
  • Deployment: docker-compose (CLI community), ARM64 (Raspberry Pi 5)
  • Browser: Chrome 147 on Linux
  • Reverse proxy: bundled plane-proxy (Caddy) → external nginx → Cloudflare Tunnel

Suggested fix

  • Catch the 400 response in the project-creation store and map serializer errors to per-field messages on the form.
  • Alternatively, validate the allowed character set client-side before submission so users get immediate feedback.

Additional context

The same pattern likely affects any field whose validation is enforced only server-side. Workaround: keep names and
identifiers strictly alphanumeric.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions