Journal/Design Systems for Small Studios

Design Systems for Small Studios

Design SystemsFront-End CraftWeb Design

Design systems are not just for enterprise teams. Small studios benefit from systematic design thinking, but the system needs to fit the team's scale and workflow.

Design Systems for Small Studios illustration

The Enterprise Trap

Design systems have become synonymous with enterprise-scale tooling. The conversation is dominated by teams with dedicated design system engineers, component libraries with hundreds of elements, and governance processes that span departments. Read the case studies and you might conclude that design systems are only worthwhile if you have a headcount in the dozens and a multi-year roadmap.

That framing is misleading. The core value of a design system—consistent decisions, reusable patterns, reduced duplication, faster iteration—scales down just as well as it scales up. A two-person studio benefits from having documented type scales, colour tokens, and spacing conventions. A freelancer benefits from having a component library that carries across projects. The system just looks different at smaller scale.

The mistake small studios make is not failing to build a design system. It is trying to build an enterprise design system and abandoning it when the maintenance burden exceeds the team's capacity. A small-studio design system should be lean, opinionated, and unapologetically incomplete. It does not need to cover every edge case. It needs to cover the patterns you use every week.

Small-scale design system structure
Small-scale design system structure

What to Include

A useful small-studio design system has three layers: tokens, patterns, and documentation.

Tokens are the atomic values that everything else references. Colours, type sizes, spacing units, border radii, shadow values, transition durations. These should live in a single source of truth—a CSS custom properties file, a JSON token file, or a design tool's style definitions—and be consumed by everything else. When you change a token, the change propagates. When a new team member joins, they learn the token set, not dozens of hard-coded values scattered across files.

Patterns are the recurring UI solutions that appear across projects. A card layout with image, heading, and metadata. A section header with label and rule. A form field with label, input, and error state. These are not generic components pulled from a UI library—they are your studio's specific implementations of common patterns, reflecting your aesthetic preferences and technical opinions.

Documentation is the part that small studios most frequently skip, and the part that creates the most long-term value. Documentation does not mean writing a Storybook novel for every component. It means recording the decisions behind the tokens and patterns so that your future self—or a collaborator—can understand why the body text size is 17px instead of 16px, why the spacing scale uses multiples of 6 rather than 8, why the primary button uses a solid fill and the secondary uses an outline.

The documentation can be a Markdown file in the repository. It does not need to be an interactive style guide. What matters is that the reasoning is recorded, not the format it is recorded in.

Token Architecture

Start with fewer tokens than you think you need. The temptation is to define tokens for every possible value, creating a comprehensive system from day one. This produces an unwieldy token set that requires maintenance without earning its keep. Start with the tokens you use on every project and expand as patterns emerge.

A practical starting set for a small studio:

Colour tokens: background primary, background secondary, text primary, text secondary, text muted, border, accent, error. That is eight colours. Most projects can launch with eight colours. Add more when a specific project requires them.

Type tokens: body size, body line height, heading sizes (three to four levels), label size, mono size. Define these as fluid values using clamp() where appropriate.

Spacing tokens: a base unit and five to seven multiples. If your base unit is 4px, your scale might be 4, 8, 16, 24, 32, 48, 64. Use these consistently for margin, padding, and gap values.

Timing tokens: transition fast (150ms), transition base (250ms), transition slow (400ms). Three timing values cover most interactive needs.

These tokens fit in a single file. They are easy to learn, easy to maintain, and they prevent the ad hoc value drift that accumulates when every component invents its own sizing and spacing.

Pattern Library Scope

The pattern library for a small studio should include the patterns you build on every project and nothing more. Over-scoping the library creates maintenance burden without payoff.

Start by auditing your last five projects. Which UI patterns appeared in all of them? Which appeared in most? The intersection of those sets is your initial pattern library. Common candidates include: page header with title and metadata, content section with heading and body, image with caption, card for index/grid contexts, form field with label and validation, button variants (primary, secondary, text), navigation bar, and footer.

Each pattern should be implemented as a component with clear props, responsive behaviour, and documented variant options. But resist the urge to make patterns infinitely configurable. A card component with twelve optional props is harder to use correctly than a card component with three required props and two optional ones. Opinionated patterns are faster to use and more consistent in output.

Pattern library component examples
Pattern library component examples

Cross-Project Consistency vs Project Specificity

The tension in a small-studio design system is between consistency and customisation. The system creates value by making projects consistent, but every client project has unique brand requirements that the system needs to accommodate.

The solution is a layered approach. The design system provides structural patterns (layout, spacing, component behaviour) that remain consistent across projects. Brand-specific values (colours, typefaces, imagery style) are applied as a theme layer that customises the structural patterns without replacing them.

In practice, this means your card component always has the same padding ratio, the same heading-to-body spacing relationship, and the same responsive breakpoint behaviour. But the card's colours, typeface, and border treatment come from project-specific tokens that override the system defaults.

This layering means the system handles the decisions that should be consistent (structural proportions, spacing rhythm, interaction patterns) while the theme layer handles the decisions that should be unique (visual identity, colour, typography).

Maintenance Realism

The most common design system failure mode for small studios is abandonment. The system gets built with enthusiasm, maintained for a few months, and then gradually falls out of sync as project pressure takes priority. Six months later, the system describes patterns that no longer match the actual implementation, and the team stops referencing it.

Prevent this by keeping the system small and integrated into the daily workflow. If the system is a separate repository that requires a dedicated maintenance session, it will be neglected. If the system is the set of tokens and components that you use every day on active projects, it maintains itself through use.

Version the system alongside your projects. When a project requires a pattern change—a new card variant, an adjusted spacing value—update the system as part of the project work, not as a separate task. This keeps the system alive without requiring dedicated system maintenance time.

Schedule a brief quarterly review (an hour is sufficient for a small studio) to audit the system for dead patterns, outdated documentation, and opportunities to consolidate. This is not a redesign session—it is housekeeping that keeps the system honest.

Frequently Asked Questions

Do I need Storybook for a small design system?

No. Storybook is valuable for large teams that need interactive component documentation. For a small studio, a Markdown file with component descriptions and usage notes provides most of the same value with a fraction of the setup and maintenance cost.

Should the design system be a separate package?

For small studios, no. Keeping the system in the project repository (or a shared directory across projects) is simpler and avoids versioning complexity. Extract to a separate package only when the system is stable and shared across multiple independent projects with different deployment cycles.

How do I handle client requests that conflict with the system?

The system is a starting point, not a constraint. If a client requirement genuinely needs a pattern that the system does not support, build it for the project. If the pattern proves useful across subsequent projects, absorb it into the system. The system follows practice, not the other way around.

Related Reading


Continue Reading

All journal entries