Introducing Storyblok CLI v4
Storyblok is the first headless CMS that works for developers & marketers alike.
An enterprise-ready, open-source command line to leverage complex operations on top of Storyblok’s Management API with a friendly and renovated interface.
Today, we’re launching Storyblok CLI v4, a complete rebirth of our developer toolkit built for the scale, performance, and polish that modern enterprises expect, yet intuitive and fun for every developer who interacts with it.
Features you will love ✨
1. Full make-over
Who said command line interfaces need to be plain and boring 😜? We present you with a new design for this version.
- Color-coded domain badges – instantly see whether you’re in Components, Migrations, or Types land.
- Real-time progress spinners + timing – watch each step finish and know exactly how long it took.
- Success/error icons at a glance – ✅ for done, ❌ for issues, with zero
[Object object]
noise. - Copy-paste-ready paths – the CLI prints where files were saved (e.g.
.storyblok/components/…
), so you can jump there in one click. - Readable in any theme – tested on dark, light, and high-contrast terminals.
- Consistent typography & padding – no more jittery line breaks when you resize the window.
2. Domain-first command design
The new storyblok <domain> <verb>
format keeps related actions together and makes discovery a breeze.
For example, imagine you need to pull components from a space (1234), make local changes, and then push them to a second space (5678).
storyblok components pull --space 1234
This command saves your space components in a dedicated local .storyblok
folder. You can later push these changes to our target space.
storyblok components push --space 5678 --from 1234
3. Granular, precision-targeted operations
Ship exactly what you intend. Nothing more, nothing less.
Use-case | What it looks like |
---|---|
Push a single component to production |
|
Sync only components matching a glob |
|
Run a migration on stories matching a query |
|
Combine filters & dry-run |
|
These scoped commands are CI-friendly, lightning-fast, and reduce “blast radius” during hot-fixes.
4. File Organization that sparks joy
Good-bye, root-folder clutter. All artifacts now live under a tidy .storyblok
directory organised by space, by default.
.storyblok/
├─ components/
└── YOUR_SPACE_ID/
├── components.json # All components
├── groups.json # Component groups
├── presets.json # Component presets
└── tags.json # Component tags
├─ migrations/
└─ types/
You can keep them version-controlled for traceability, or add a single line to .gitignore
. Override paths if you need something bespoke by using the --path
flag.
5. Sign-up directly from the CLI
First-time user? Kick things off with a single command:
storyblok signup
The storyblok signup
command opens a secure registration page in your default browser.
storyblok login
That’s it, you’re ready to pull components or run your first migration.
6. Better error handling & support
Remember those [Object object]
stack traces? Use —verbose
to get full error details.
storyblok components push hero-banner --space 5678 --verbose
Actions now yield errors like the example below.
Error
▲ error Component "hero-banner" not found.
▲ error Command Error: Component "hero-banner" not found. {
name: 'Command Error',
message: 'Component "hero-banner" not found.',
stack: 'Command Error: Component "hero-banner" not found.\\n' +
' at Command.<anonymous> (file:///Users/alvarosabu/Projects/storyblok/storyblok-cli-next/dist/index.mjs:2206:21)'
}
- Actionable logs – perfect for CI pipelines or reporting an issue on Support.
- Smart retries & back-off – long jobs finish even on flaky networks.
- Strict typing – predictable error objects your scripts can catch.
Migrating from v3 in one minute 🕒
Commands structure
v3 command | v4 command |
---|---|
|
|
|
|
|
|
|
|
|
|
Swap verb-domain → <domain> <verb>, check all the available flags using --help
, and you’re done.
For a full overview of all commands available, please refer to the API README in the CLI repository.
What about the old sync
command?
This command has not made the jump to v4.
We’re currently re-imagining it as a brand-new, server-side endpoint that will deliver:
- Faster synchronization
- higher reliability (the heavy lifting runs on our backend),
- Better handling of large-scale operations
Until that ships you have two options:
Need | Recommended approach |
---|---|
Schema-only transfer (components, groups, tags, presets) | Use |
Full “everything” sync (stories, folders, roles, datasources) | Stay on CLI v3 for this specific job: |
We’ll announce the new sync
as soon as the new API endpoint is live.
Get started today with this single steps in your terminal.
npm i -g storyblok@latest # install v4
storyblok signup && storyblok login # onboard and authenticate
storyblok --help # explore
Want to help shape the future of our CLI?
- Report bugs & submit feature requests by opening a ticket in our GitHub tracker.
- Feeling adventurous? Fork the repository, follow our contribution steps and submit a pull-request. We review PRs weekly and love community contributions!
Ready to enjoy faster workflows and world-class support? Install Storyblok CLI v4 now and see what an enterprise-ready command line feels like.