Storybook Explained: From Basics to Advanced Workflows

Featuring
Łukasz Chludziński
Engineering Manager
@
Callstack
Kewin Wereszczyński
Software Engineer
@
Callstack
Daniel Williams
Senior Software Engineer
@
Callstack

What Storybook Is and Why Teams Use It

The stream started with a clear baseline: Storybook is a tool for developing and organizing UI components in isolation. Rather than building components deep inside a running app, Storybook provides a dedicated environment where individual components and their different states can be developed, inspected, and shared. Danny Williams described it as a workspace for building and maintaining a component library, especially useful when working with design systems or reusable UI elements.

The hosts discussed how Storybook fits naturally into component-driven development. By defining stories as explicit states of a component, teams gain a shared reference for how UI elements behave, look, and evolve over time. This approach is particularly valuable when apps become complex or slow to navigate during development.

Stories, Args, and Controls in Practice

A large part of the stream focused on the core Storybook concepts developers interact with daily. Stories represent specific states of a component, while args map directly to component props. Controls allow those args to be modified live, making it possible to explore variations of a component without changing code.

Danny showed how Storybook can infer controls automatically from TypeScript types, including union types that become select inputs. The group also explored how new stories can be created directly from the controls panel, turning an interactive state into a reusable, documented story.

This workflow highlighted Storybook’s role as both a development and documentation tool, where components, their props, and their expected states live side by side.

Interaction Testing and Visual Validation

On the web, Storybook supports interaction testing through play functions. These allow developers to simulate user behavior, such as clicking buttons or filling out forms, directly in the browser. The stream demonstrated how these interactions run step by step and can be replayed to inspect component behavior at each stage.

The discussion also covered visual testing and regression workflows. Danny explained how Chromatic integrates tightly with Storybook on the web, enabling automated visual comparisons for every pull request. While React Native does not yet have feature parity in this area, the conversation outlined how Storybook stories could serve as a foundation for future visual testing solutions.

React Native Storybook: How It Differs

A key segment of the stream focused on React Native Storybook. Unlike the web version, React Native Storybook runs inside the app itself rather than in a browser. This design allows components to be rendered with the same native dependencies, animations, and platform constraints as the production app.

The group walked through setting up React Native Storybook in a real project, showing how it can be enabled via an environment flag and launched as a dedicated development mode. Core features such as stories, args, controls, and actions work similarly to the web, providing a familiar workflow for developers working across platforms.

Teams, Scale, and Workflow Integration

The stream also addressed how Storybook fits into different team setups. For larger teams, Storybook can act as a shared contract between engineers, designers, and product stakeholders. Hosted Storybook builds or preview apps allow non-engineers to review components without running the app locally.

For React Native teams, this can extend to distributing Storybook builds through TestFlight or development builds, making UI review and feedback possible earlier in the development process.

Looking Ahead

The session concluded with a look toward more advanced workflows. Topics such as visual regression testing in React Native, CI integration, and deeper automation were identified as areas to explore in future streams. With Storybook already embedded in many projects, the group emphasized its potential as a foundation for more robust testing and UI validation workflows.

Watch the full recording to see the live walkthroughs, code examples, and setup steps discussed during the stream.

‍

Insights

Learn more about Developer Experience

cover

May 5Article

Codex Ambassador: Q1 Recap Across 5 Cities

A short recap of Codex events in Berlin, Wroclaw, Warsaw, Sopot, and Miami, plus what we learned from each format and where we want to go next.

cover

Jan 29Article

Announcing AI SDK Profiler for React Native

Announcing the AI SDK Profiler plugin for Rozenite DevTools. Capture OpenTelemetry spans from the Vercel AI SDK and inspect AI requests across on-device and cloud providers.

cover

Nov 28Talk

How I Hacked React Native DevTools (And Built a Plugin Framework)

Learn how React Native DevTools work under the hood, and how to inject custom plugins with clean hooks and no forks.

cover

Sep 16Talk

How I Hacked React Native DevTools (And Built a Plugin Framework)

Learn how React Native DevTools work under the hood, and how to inject custom plugins with clean hooks and no forks.

cover

Sep 4Talk

Rozenite: The Missing Part of React Native DevTools

Learn how Rozenite hooks into DevTools to enable clean, custom plugin development, restoring the extensibility devs loved in Flipper.

cover

Jul 28Article

Introducing Rozenite: A Plugin Framework for React Native DevTools

Build custom debugging panels inside React Native DevTools with Rozenite: a modular, TypeScript-ready plugin framework with full device-scoped support.

cover

Feb 12Article

How to Easily Create Native Libraries With Nitro and Turbo Modules

Learn how to optimize React Native performance with Turbo and Nitro Modules. Ditch the legacy bridge and master modern native module development.

cover

Dec 4Podcast

Radon IDE: Better Developer Experience for React Native Teams

Find out how Radon IDE can help increase team velocity and rid you of the common React Native app development pain points.

cover

Sep 19Podcast

Exploring Bun: Jarred Sumner on Hyperfast JavaScript Toolkit

Is Bun the future of React Native package management? Join us as we talk with Jarred Sumner, the creator of this lightning-fast JavaScript toolkit.

cover

Sep 11Podcast

Vim: from Zero to Hero

Discover the power of Vim, the legendary text editor, as we explore its origins, standout features, and practical tips to boost your coding efficiency.

cover

May 15Article

Add-Ons for Web Browsers With React

At times you may need to create an add-on to use a web browser more effectively. Find out how to build one with React.

cover

Jan 27Article

Why Is It Worth to Automate Your Dependency Management with `Autolinking`?

When you automate your dependency management, you can fully focus on developing your app. Find out how you can do it with autolinking.

cover

Mar 19Tutorial

The Hard Way vs. The React Native AI SDK Way: Stop Writing Custom Modules for Every Model

Learn how React Native AI uses a unified provider model to switch between cloud and on-device LLMs without rewriting application logic, enabling reliable AI experiences online and offline.

cover

Mar 12Tutorial

Build Smarter Apps: Tool Calling & AI Orchestration Explained

Learn how on-device models in React Native can call tools, interact with external APIs, and return structured outputs you can use directly in application logic.

cover

Mar 5Tutorial

MLC LLM + React Native: On-Device AI Without the Pain

Learn how to run third-party on-device LLMs in React Native using MLC LLM. Choose your models, run them efficiently across platforms, and keep a unified JavaScript API with React Native AI.

cover

Feb 24Tutorial

Intelligent Fallbacks with Apple Intelligence in React Native

Learn how to use Apple’s built-in Foundation Models in React Native apps, reduce memory usage, and enable fast, fully on-device AI with React Native AI Apple.

cover

Feb 10Tutorial

What Is the React Native AI SDK? A Complete Intro & Quickstart

Learn why on-device AI matters for React Native apps, how local LLMs behave offline, and what problems React Native AI is designed to solve from day one.

cover

Jan 29Tutorial

Implementing an Android TurboModule with Kotlin

Learn how to implement a React Native TurboModule on Android, from the TypeScript spec and Codegen to the Kotlin implementation and package registration.

cover

Jan 19Tutorial

Working with Different Threads in Swift TurboModules

Learn how JavaScript, native module, background, and main threads interact in React Native TurboModules, and how to use GCD queues to run async work safely in Swift.

cover

Jan 9Tutorial

How to Add Type-Safe Constants to Swift TurboModules

Learn how to expose typed, immutable constants from a Swift TurboModule using Codegen, and get full end-to-end type safety between native and JavaScript.

cover

Dec 30Tutorial

Adding Event Emitters to Your TurboModule in Swift

Learn how to emit native events from a Swift TurboModule and subscribe to them in JavaScript, including proper memory management and Codegen integration.

cover

Dec 22Tutorial

Writing Your First TurboModule in Swift

Learn how to build a fully working TurboModule in Swift, integrate it with Codegen, and bridge it through Objective‑C inside an Expo app.