Drupal is a registered trademark of Dries Buytaert
drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8). editoria11y 2.2.22 Minor update available for module editoria11y (2.2.22). ai 1.2.13 Minor update available for module ai (1.2.13). ai 1.3.2 Minor update available for module ai (1.3.2). moderated_content_bulk_publish 2.0.51 Minor update available for module moderated_content_bulk_publish (2.0.51). moderated_content_bulk_publish 2.0.50 Minor update available for module moderated_content_bulk_publish (2.0.50). editoria11y 2.2.21 Minor update available for module editoria11y (2.2.21). eca 3.1.0 Minor update available for module eca (3.1.0). sophron 3.1.1 Minor update available for module sophron (3.1.1). ai 1.3.1 Minor update available for module ai (1.3.1). seven 2.0.0-beta6 New beta version released for theme seven (2.0.0-beta6). seven 1.0.1-beta1 First beta version released for theme seven (1.0.1-beta1). devel Module devel crossed 1,000 active installs. redirect Module redirect crossed 1,000 active installs. webform Module webform crossed 1,000 active installs.

Overview

Custom Paragraphs is a flexible, lightweight module for Drupal 10/11 that provides a
dynamic repeatable field group system for custom forms.

It allows developers to create reusable, repeatable form components with support for:

  • Dynamic add/remove items
  • Multiple field types (text, textarea, select, file, checkbox)
  • File uploads with preview
  • CKEditor 5 integration
  • Client-side validation
  • JSON-based data storage

Use Case

This module is ideal when building custom forms where users need to input
multiple sets of similar data dynamically.

Examples:

  • Adding multiple addresses
  • Managing team members
  • Uploading multiple documents
  • Creating repeatable content sections

How It Helps in Custom Forms

In standard Drupal form development, handling repeatable fields requires complex form API logic,
AJAX callbacks, and manual state management.

Custom Paragraphs simplifies this by:

  • Providing a ready-to-use JavaScript-powered repeatable UI
  • Reducing backend complexity
  • Handling validation and data collection automatically
  • Supporting file uploads with server-side integration

Developers only need to define field configurations, and the module handles the rest.

Difference Between Paragraph Entity and Custom Paragraphs

Feature Paragraph Entity Custom Paragraphs Module Purpose Content structuring for entities (nodes, blocks) Dynamic repeatable fields in forms Storage Stored as entities in database Stored as JSON in form fields UI Admin-based UI Frontend dynamic UI Use Case Content modeling Form data collection Performance Heavier (entity-based) Lightweight (JS-driven) Flexibility Structured and strict Highly flexible and dynamic

How to Use

1. Attach Library

$form['#attached']['library'][] = 'custom_paragraphs/custom_paragraphs';

2. Add Hidden Field to Store Data

$form['items_data'] = [
  '#type' => 'hidden',
  '#attributes' => ['id' => 'items-data'],
];

3. Add Wrapper Container

$form['items_wrapper'] = [
  '#type' => 'container',
  '#attributes' => [
    'class' => ['rfg-wrapper'],
    'data-rfg-instance' => 'example',
  ],
];

4. Initialize via JavaScript

Use the RepeatableFieldGroup class to define fields and behavior.

Features

  • Unlimited repeatable items
  • Field-level validation
  • File upload with AJAX
  • CKEditor 5 support
  • Prefill existing data
  • Customizable UI and styles

Requirements

  • Drupal 10 or Drupal 11
  • Core Editor module

Documentation

For more details:

Why Use This Module?

If you are building custom forms and need a clean, scalable way to handle repeatable inputs,
Custom Paragraphs provides a modern, developer-friendly solution
without the overhead of entity-based systems.

Activity

Total releases
2
First release
Apr 2026
Latest release
7 hours ago
Release cadence
0 days
Stability
50% stable

Releases

Version Type Release date
1.0.0 Stable Apr 10, 2026
1.0.0-alpha1 Pre-release Apr 10, 2026