Strongtie Design System
Getting StartedComponents

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Setup Guide
  • Package Installation
  • Code Quality Setup
  • Migration Guide
  • Resources
Registry
  • Getting Started
  • Combobox
  • Datepicker
  • MultiSelect
  • Tree
Guides
  • Framework Recommendations
Foundations
  • States
  • Variables
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Avatar
  • Badge
  • Breadcrumb
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Collapsible
  • Command
  • Combobox
  • Context Menu
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • Hover Card
  • Input
  • Input Group
  • Item
  • Kbd
  • Label
  • Menubar
  • Multi Select
  • Navigation Menu
  • Pagination
  • Popover
  • Progress
  • Radio Group
  • Scroll Area
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Switch
  • Table
  • Tabs
  • Textarea
  • Toaster
  • Toggle
  • Toggle Group
  • Tooltip
  • Tree
2026 Simpson Strong-Tie
  1. Docs
  2. Migration Guide

Migration Guide

PreviousNext

Migrate from @studs/react to modern shadcn/ui with Strongtie design standards, or use the @strongtie/design-system convenience package

Overview

This guide will help you migrate from the deprecated @studs/react package. We recommend two migration paths:

  1. Recommended: Migrate to shadcn/ui + Tailwind with Strongtie design standards (modern, AI-native approach)
  2. Alternative: Migrate to @strongtie/design-system package (convenience package, similar to old approach)

New projects should use shadcn/ui. The @strongtie/design-system package is best for quick migrations and existing projects. For new work, follow our Getting Started guide to use shadcn/ui with Strongtie design standards.

What's Changing?

ItemOld (@studs/react)shadcn/ui (Recommended)@strongtie/design-system (Alternative)
ApproachNPM packageCopy-paste componentsNPM package
OwnershipPackage dependencyYou own the codePackage dependency
CustomizationLimitedFull controlLimited
AI SupportNoneNative AI assistant supportNone
Registrynpm (public)No registry neededAzure Artifacts (Simpson feed)
Version3.1.2Use shadcn CLI1.0.0

Are you looking for migration assistance for the Telerik UI Kit? Visit our CDN migration guide.

Why shadcn/ui?

We're recommending shadcn/ui because:

  • Component ownership - Code lives in your project, fully customizable
  • AI-native development - All major AI assistants (Claude, ChatGPT, Cursor) know shadcn natively
  • No version lock-in - Update components on your schedule
  • Better customization - Modify components directly without fighting package constraints
  • Smaller bundles - Tree-shakeable, only ship what you use
  • Modern approach - Industry best practice used by thousands of projects

The @strongtie/design-system package exists for teams that prefer traditional npm packages or need a quick migration path.


Choose Your Migration Path

Why Choose This Path? - Component ownership

  • Components live in your codebase
  • AI-native
  • All AI assistants know shadcn
  • Better customization
  • Modify components freely
  • No package dependencies
  • No version conflicts

Skip to shadcn Migration Steps →


Migration Path 1: shadcn/ui (Recommended)

This path migrates you to the modern shadcn/ui approach with Strongtie design standards.

Quick Start

The fastest way is using our preset:

"https://ui.shadcn.com/init?base=radix&style=vega&baseColor=neutral&theme=neutral&iconLibrary=lucide&font=inter&menuAccent=subtle&menuColor=default&radius=default&template=vite"
--template vite ```
</TabsContent>
 
<TabsContent value="next">
  ```bash
  npx shadcn@latest create --preset "https://ui.shadcn.com/init?base=radix&style=vega&baseColor=neutral&theme=neutral&iconLibrary=lucide&font=inter&menuAccent=subtle&menuColor=default&radius=default&template=next" --template next

Manual Migration Steps

Add shadcn/ui to your existing project

npx shadcn@latest init

When prompted, choose:

  • Style: New York
  • Base color: Neutral
  • CSS variables: Yes

Add Strongtie design standards

Replace your CSS variables with Strongtie's design standards. See the shadcn with Tailwind guide for the complete CSS.

Add components as needed

npx shadcn@latest add button card dialog

Replace old component usage

Before:

import { Button } from "@studs/react/button"

After:

import { Button } from "@/components/ui/button"

Remove @studs/react

npm uninstall @studs/react

Best Practice: Create abstracted components for custom functionality. For example, create components/custom-button.tsx that wraps components/ui/button.tsx. This keeps shadcn components pristine and makes updates easier.

Benefits of This Approach

  • ✅ Full component ownership and control
  • ✅ AI assistants can help you build faster
  • ✅ No package version conflicts
  • ✅ Easier to customize and extend
  • ✅ Industry best practice

Learn more about shadcn + Tailwind →


Migration Path 2: @strongtie/design-system Package

This path provides a quicker migration with minimal code changes, similar to the old @studs/react approach.

Breaking Changes

Package Name Change

All imports must be updated from @studs/react to @strongtie/design-system.

Version Reset

The new package starts at v1.0.0. The API remains largely the same.

CSS Reset No Longer Included

@studs/react included normalize.css automatically. @strongtie/design-system does not.

What you need to do:

Add your own CSS reset:

npm install modern-normalize

Then import it before the design system styles:

import "modern-normalize"
import "@strongtie/design-system/styles"

Recommended options:

  • @strongtie/styles/reset
  • modern-normalize
  • normalize.css

Package Migration Steps

Step 1: Set Up Azure Artifacts Authentication

Before installing, configure authentication for the Simpson feed. See the Installation guide for detailed instructions.

Quick setup — create a .npmrc file in your project root:

@strongtie:registry=https://pkgs.dev.azure.com/StrongTie/_packaging/Simpson/npm/registry/
@strongtie:always-auth=true
registry=https://registry.npmjs.org/

Important: Use @strongtie:registry (scoped) instead of registry (global). This ensures only @strongtie/* packages use Azure Artifacts authentication, while public packages install from npmjs.org without errors.

Then follow the Azure Artifacts npm authentication guide to complete authentication setup.

Step 2: Update Your Dependencies

2.1 Remove the Old Package

npm uninstall @studs/react
# or
yarn remove @studs/react
# or
pnpm remove @studs/react

2.2 Install the New Package

npm install @strongtie/design-system

2.3 Update package.json

Your package.json should now look like this:

{
  "dependencies": {
    "@strongtie/design-system": "^1.0.0"
  }
}

Step 3: Update Your Imports

You'll need to update all component imports throughout your codebase.

Before (Old):

import { Button } from "@studs/react/button"
import { Card, CardContent } from "@studs/react/card"
import { Input } from "@studs/react/input"
 
import "@studs/react/styles"

After (New):

import { Button } from "@strongtie/design-system/button"
import { Card, CardContent } from "@strongtie/design-system/card"
import { Input } from "@strongtie/design-system/input"
 
import "@strongtie/design-system/styles"

Automated Find & Replace

Use your IDE's find-and-replace feature (with regex if needed):

Find: @studs/react Replace: @strongtie/design-system

Or use command-line tools:

# Using sed (macOS/Linux)
find src -type f -name "*.tsx" -o -name "*.ts" -o -name "*.jsx" -o -name "*.js" | \
  xargs sed -i '' 's/@studs\/react/@strongtie\/design-system/g'
 
# Using PowerShell (Windows)
Get-ChildItem -Path src -Recurse -Include *.tsx,*.ts,*.jsx,*.js |
  ForEach-Object {
    (Get-Content $_.FullName) -replace '@studs/react', '@strongtie/design-system' |
    Set-Content $_.FullName
  }

Step 4: Update CSS/Style Imports

If you're importing styles directly, update those imports as well:

Before (Old):

import "@studs/react/styles"
@import "@studs/react/styles";

After (New):

import "@strongtie/design-system/styles"
@import "@strongtie/design-system/styles";

Step 5: Verify Your Application

After making the changes:

  1. Clear your build cache:

    rm -rf node_modules/.cache
    rm -rf dist
  2. Reinstall dependencies:

    npm install
  3. Run your tests:

    npm test
  4. Start your development server:

    npm run dev
  5. Build your application:

    npm run build

Minimal Code Changes Required

Once you've updated the package name and imports, your existing code will work without modifications:

// This works exactly the same in both packages
import { Button } from "@strongtie/design-system/button"
 
function MyComponent() {
  return (
    <Button variant="primary" size="lg" onClick={handleClick}>
      Click Me
    </Button>
  )
}

CI/CD Configuration

For CI/CD pipelines, configure Azure Artifacts authentication for the Simpson feed.

See the Azure Artifacts npm authentication guide for platform-specific instructions on:

  • Setting up Personal Access Tokens (PATs) with Packaging > Read permissions
  • Configuring authentication in GitHub Actions, Azure DevOps, GitLab CI, etc.
  • Using the npmAuthenticate task in Azure Pipelines

Feed: Simpson
Registry: https://pkgs.dev.azure.com/StrongTie/_packaging/Simpson/npm/registry/


Troubleshooting (Both Paths)

Issue: "Unable to authenticate"

Problem: Getting 401 Unauthorized errors when installing.

Solution:

  1. Verify your Azure DevOps PAT has Packaging > Read permissions
  2. Check that your .npmrc is configured correctly:
    npm config get registry
    # Should return: https://pkgs.dev.azure.com/StrongTie/_packaging/Simpson/npm/registry/
  3. Ensure your PAT token is not expired
  4. Re-run authentication setup following the Azure Artifacts guide

Issue: "Package not found"

Problem: npm can't find @strongtie/design-system.

Solution:

  1. Verify the registry is set correctly:

    npm config get registry

    Should return: https://pkgs.dev.azure.com/StrongTie/_packaging/Simpson/npm/registry/

  2. Check that you've completed the authentication setup from the Azure Artifacts guide

  3. Ensure you have access to the Simpson feed in Azure DevOps

Issue: "Module not found" after migration

Problem: Getting import errors after updating package name.

Solution:

  1. Clear your build cache:

    rm -rf node_modules/.cache dist
  2. Remove and reinstall dependencies:

    rm -rf node_modules package-lock.json
    npm install
  3. Restart your development server

  4. Check for any missed imports:

    grep -r "@studs/react" src/

Issue: Type errors after migration

Problem: TypeScript can't find type definitions.

Solution:

  1. Clear TypeScript cache:

    rm -rf node_modules/.cache
  2. Restart your TypeScript server (VS Code: Cmd/Ctrl + Shift + P → "Restart TS Server")

  3. Verify the package is installed correctly:

    npm list @strongtie/design-system

Issue: Styles not loading

Problem: Components render but without styles.

Solution:

  1. Verify you've updated the styles import:

    import "@strongtie/design-system/styles"
  2. Check that the import is in your main entry file (e.g., main.tsx, App.tsx)

  3. Clear your build cache and restart


"My app looks broken after migration"

Problem: Components render but styling appears broken or missing.

Solution:

You probably need to add a CSS reset. The old package included normalize.css automatically.

Install a CSS reset like:

  • @strongtie/styles/reset
  • modern-normalize
  • normalize.css
  • sanitize.css
npm install modern-normalize

Then import it in your entry file:

import "@strongtie/styles/reset"
import "@strongtie/design-system/styles"

"Component spacing looks different"

Problem: Margins and spacing around components don't match the old package.

Solution:

The old package had global margin resets. Add your own base styles or use our optional base stylesheet.

/* Add to your global CSS */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

Or create a base stylesheet with your preferred defaults:

/* base.css */
body {
  margin: 0;
  padding: 0;
  font-family: var(--font-family);
}
 
h1,
h2,
h3,
h4,
h5,
h6,
p {
  margin: 0;
}

"I can't override component styles"

Problem: Custom styles aren't being applied to components.

Solution:

Use className with your own CSS classes, or customize via CSS custom properties. Don't fight specificity.

// ✅ Good: Use className
import { Button } from "@strongtie/design-system/button"
 
import "./my-button.css"
 
;<Button className="my-custom-button">Click me</Button>
/* my-button.css */
.my-custom-button {
  background-color: purple;
  border-radius: 8px;
}

Additional Resources

  • GitHub Repository - Source code and issues
  • Azure Artifacts npm Docs - Official Azure Artifacts authentication guide

Need Help?

If you encounter any issues during migration:

  1. Check the troubleshooting section above
  2. Search existing issues on GitHub
  3. Create a new issue if your problem isn't covered
  4. Contact the UX team via Teams

Next Steps

  • If you migrated to shadcn/ui: Explore the component library and learn about customization
  • If you migrated to the package: Consider gradually adopting shadcn/ui for new features to take advantage of component ownership and AI integration

The @studs/react package is deprecated and will not receive updates. We strongly recommend completing this migration as soon as possible.

Ready to learn more? Check out our Getting Started guide to explore all the features of the Strongtie Design System.

Governance ModelResources & Downloads

On This Page

OverviewWhat's Changing?Why shadcn/ui?Choose Your Migration PathWhy Choose This Path? - Component ownershipWhy Choose This Path?Migration Path 1: shadcn/ui (Recommended)Quick StartManual Migration StepsBenefits of This ApproachMigration Path 2: @strongtie/design-system PackageBreaking ChangesPackage Name ChangeVersion ResetCSS Reset No Longer IncludedPackage Migration StepsStep 1: Set Up Azure Artifacts AuthenticationStep 2: Update Your Dependencies2.1 Remove the Old Package2.2 Install the New Package2.3 Update package.jsonStep 3: Update Your ImportsBefore (Old):After (New):Automated Find & ReplaceStep 4: Update CSS/Style ImportsBefore (Old):After (New):Step 5: Verify Your ApplicationMinimal Code Changes RequiredCI/CD ConfigurationTroubleshooting (Both Paths)Issue: "Unable to authenticate"Issue: "Package not found"Issue: "Module not found" after migrationIssue: Type errors after migrationIssue: Styles not loading"My app looks broken after migration""Component spacing looks different""I can't override component styles"Additional ResourcesNeed Help?Next Steps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page