Laravel Prompts: The CLI UX Revolution

Laravel has always been about developer happiness. From expressive syntax to elegant APIs, it’s built to make coding joyful. But one area often overlooked is the command-line interface (CLI). Artisan commands are powerful, yet historically they’ve been limited to simple text input and output.

Enter Laravel Prompts — a package that transforms Artisan into a developer-friendly UI layer. With recent updates in 2026, Prompts now supports interactive forms, searchable selects, progress bars, tables, and more. These features make CLI tooling feel closer to a browser UI, dramatically improving developer experience for scaffolding, setup wizards, and internal dev tools.

This blog explores the latest updates, provides detailed examples, and shows how Prompts can supercharge your CLI workflows.


🧰 What Is Laravel Prompts?

Laravel Prompts is a package that lets you build interactive, user-friendly command-line interfaces for Artisan commands. Instead of clunky readline() calls or manual echo formatting, you can now create polished, interactive experiences directly in the terminal.

Core features include:

  • Text inputs with placeholders and validation
  • Multi-select dropdowns
  • Searchable selects
  • Progress bars and spinners
  • Tables and formatted output
  • Conditional logic and form-like flows

It’s designed for developer tooling: package installers, project generators, setup wizards, and internal dashboards.


🚀 Key Updates in Laravel Prompts (2026)

1. Searchable Selects and Multi-Search

One of the most exciting updates is searchable selects. Instead of scrolling through long lists, users can type to filter options in real time.

Example:

$framework = select(
    label: 'Choose your framework',
    options: ['Laravel', 'Symfony', 'CodeIgniter', 'CakePHP', 'Yii'],
    searchable: true
);

Use case:
Perfect for package installers or project generators where users need to pick from large lists (e.g., choosing a database driver or frontend framework).


2. Interactive Tables

Tables let you display structured data in a clean, readable format. This is ideal for listing migrations, jobs, or config options.

Example:

table(
    headers: ['ID', 'Name', 'Status'],
    rows: [
        [1, 'ImportUsers', 'Pending'],
        [2, 'SendEmails', 'Completed'],
        [3, 'GenerateReports', 'Failed'],
    ]
);

Use case:
Great for internal dashboards, queue monitoring, or batch job summaries. Instead of dumping raw arrays, you can present data elegantly.


3. Progress Bars and Spinners

Long-running tasks can feel opaque. Progress bars and spinners provide visual feedback.

Example:

$bar = progressBar(total: 100);

foreach ($tasks as $task) {
    // process task
    $bar->advance();
}

Use case:
Ideal for file imports, API syncs, or batch processing. Developers can see progress instead of staring at a blank terminal.


4. Form-Like Input Flows

Prompts now supports chaining inputs together to build form-like flows in the terminal.

Example:

$name = text('Your name');
$email = text('Your email');
$password = password('Choose a password');

Use case:
Perfect for setup wizards, onboarding flows, or scaffolding new resources. Instead of multiple commands, you can guide users through a structured form.


5. Conditional Logic

Prompts can now include conditional logic, making flows dynamic.

Example:

$useCache = confirm('Enable caching?');

if ($useCache) {
    $driver = select('Choose cache driver', ['redis', 'memcached', 'file']);
}

Use case:
Setup wizards that adapt based on user choices. For example, enabling caching only prompts for driver selection if the user says yes.


6. Color and Formatting

Prompts supports color output and formatting, making CLI tools more readable.

Example:

info('Setup complete!');
warning('Redis not detected, falling back to file cache.');
error('Migration failed!');

Use case:
Clear feedback in CLI tools. Errors stand out, warnings are highlighted, and success messages feel celebratory.


🧪 Testing and Fallbacks

Laravel Prompts supports testing via mocks and fallbacks for unsupported terminals. This ensures your CLI tools work across macOS, Linux, and Windows (including WSL).

Example:

Prompts::fake([
    'Your name' => 'Sadique',
    'Your email' => 'sadique@example.com',
]);

This allows you to test interactive commands without manual input.


🛠️ Dev Tooling Use Cases

Tool TypeLaravel Prompts FeatureExample Use Case
Project scaffoldingSelect + Text + ConfirmCreate new Laravel modules interactively
Queue monitoringTable + SpinnerShow job status and progress
Package installerMulti-select + SearchChoose packages to install
Setup wizardForm inputs + ValidationConfigure .env or service credentials
Internal dashboardsTable + Color outputDisplay system health or logs

📚 Real-World Examples

Example 1: Project Generator

You’re building a CLI tool to scaffold new Laravel projects.

$name = text('Project name');
$framework = select('Frontend framework', ['Vue', 'React', 'Alpine'], searchable: true);
$useAuth = confirm('Include authentication?');

info("Scaffolding project: {$name} with {$framework}");

This feels like a UI wizard — but in the terminal.


Example 2: Queue Monitoring

You want to monitor jobs in the queue.

table(
    headers: ['Job', 'Status', 'Attempts'],
    rows: [
        ['SendEmail', 'Pending', 0],
        ['GenerateReport', 'Failed', 3],
    ]
);

spinner('Processing jobs...');

Instead of raw logs, you get a clean dashboard.


Example 3: Package Installer

You’re building a CLI installer for a Laravel package.

$features = multiselect(
    label: 'Choose features to install',
    options: ['Auth', 'Billing', 'Notifications', 'API'],
    searchable: true
);

info("Installing features: " . implode(', ', $features));

Interactive, user-friendly, and flexible.


🔮 The Bigger Picture

Laravel Prompts isn’t just about pretty CLI tools. It’s about developer experience. By making Artisan feel like a UI framework, Prompts empowers developers to build:

  • SaaS CLI tools
  • Internal dev utilities
  • Package installers
  • Interactive setup flows

It reduces friction, improves readability, and makes CLI tooling joyful.


Final Thoughts

Laravel Prompts has matured into a full CLI UX framework. With searchable selects, interactive tables, progress bars, and form-like flows, it transforms Artisan into a developer-friendly UI layer. Whether you’re building internal tools or public-facing packages, Prompts gives you the power to create elegant, interactive experiences right in the terminal.

If you’re serious about Laravel tooling in 2026, embracing Prompts is a must. It’s not just about inputs — it’s about making the CLI feel like a first-class interface.

Leave a Reply

Your email address will not be published. Required fields are marked *