# Add an additional widget to a widget set
Widget sets allow you to publish multiple widgets from a single code repository for code sharing and performance optimizations. This page explains how to add an additional widget to a widget set and assumes a project structure starting from our provided templates using React, Vite, and [`@osdk/widget.vite-plugin` ↗](https://www.npmjs.com/package/@osdk/widget.vite-plugin).
A widget set can contain a maximum of 50 widgets.
The following project structure contains two widgets:
```text
repo/
├── src/
│ ├── first.tsx
│ ├── first.config.ts
│ ├── second.tsx
│ ├── second.config.ts
│ └── ...
│── first.html
│── second.html
│── vite.config.ts
└─ ...
```
## Define an additional widget
Create a new TypeScript file to define the widget's metadata with `defineConfig` for type safety:
```TypeScript tab="second.config.ts"
import { defineConfig } from "@osdk/widget.client";
export default defineConfig({
id: "secondWidgetId",
name: "Second Widget",
description: "A second widget",
type: "workshop",
parameters: {},
events: {},
});
```
Create a new TypeScript file as the entrypoint to render your widget, and provide the context for parameters and events:
```TypeScript tab="second.tsx"
import { FoundryWidget } from "@osdk/widget.client-react";
import { createRoot } from "react-dom/client";
import Second from "./second.config.js";
const root = document.getElementById("root")!;
createRoot(root).render(