mattermost-community/focalboard · error

views limit reached for board

Error message

views limit reached for board

What it means

ErrViewsLimitReached is returned when a board has hit the maximum number of allowed views, a limit enforced on free/unlicensed Mattermost Boards installations. Views are tab-like display surfaces (board/table/gallery/calendar) attached to a board. The limit is a licensing restriction, not a data-integrity error.

Source

Thrown at server/model/error.go:16

package model

import (
	"database/sql"
	"errors"
	"fmt"
	"net/http"
	"strings"

	mmModel "github.com/mattermost/mattermost/server/public/model"

	pluginapi "github.com/mattermost/mattermost/server/public/pluginapi"
)

var (
	ErrViewsLimitReached        = errors.New("views limit reached for board")
	ErrPatchUpdatesLimitedCards = errors.New("patch updates cards that are limited")

	ErrInsufficientLicense = errors.New("appropriate license required")

	ErrCategoryPermissionDenied = errors.New("category doesn't belong to user")
	ErrCategoryDeleted          = errors.New("category is deleted")

	ErrBoardMemberIsLastAdmin = errors.New("cannot leave a board with no admins")

	ErrRequestEntityTooLarge = errors.New("request entity too large")

	ErrInvalidBoardSearchField = errors.New("invalid board search field")
)

// ErrNotFound is an error type that can be returned by store APIs
// when a query unexpectedly fetches no records.
type ErrNotFound struct {
	entity string

View on GitHub (pinned to a84bbb65e3)

Solutions

  1. Delete unused views from the board to free a slot
  2. Upgrade to a Mattermost license that includes unlimited Boards views
  3. Run Mattermost in a mode/edition where Boards views are not metered
Defensive patterns

Strategy: type-guard

Validate before calling

views, err := app.GetViewsForBoard(boardID)
if err == nil && len(views) >= limit {
    // prompt user to delete a view before creating another
}

Type guard

func isViewsLimitErr(err error) bool {
    return errors.Is(err, model.ErrViewsLimitReached)
}

Try / catch

view, err := app.CreateView(boardID)
if errors.Is(err, model.ErrViewsLimitReached) {
    // surface upgrade prompt or delete-and-retry
}

Prevention

When it happens

Trigger: Calling the create-view API (POST /api/v1/boards/{boardID}/views) when the board already contains the maximum number of views permitted by the current license state.

Common situations: Free-tier Mattermost installs after Mattermost changed Boards views to a paid feature; teams sharing boards with many views; upgrades that introduce the licensing check where it previously did not exist.

Related errors


AI-assisted analysis of mattermost-community/focalboard@a84bbb65e3 (2026-08-30). Data as JSON: /api/errors/a68769072155f79e. Report an issue: GitHub.