> ## Documentation Index
> Fetch the complete documentation index at: https://rive.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Util Scripts

> Create helper modules to organize shared logic across your scripts.

Util scripts let you organize your code into small, focused modules that can be reused across multiple scripts.
They’re ideal for math helpers, geometry utilities, color functions, or any logic that should be broken out into its own script.

## Creating a Util Script

[Create a new script](/scripting/creating-scripts) and select **Util** as the type.

```lua theme={null}
--- Example helper function.
local function add(a: number, b: number): MyUtil
  return a + b,
end

-- Return the functions you'd like to use in another script
return {
  add = add,
}

```

**Usage:**

```lua theme={null}
local MyUtil = require("MyUtil")

local result = MyUtil.add(2, 3)
print(result) -- 5

```

## Utils with Custom Types

Custom types defined in your Util scripts will automatically be accessible
in the parent script.

```lua theme={null}
--- Defines the return type for this util.
--- The type is automatically available when you require the script.
export type AdditionResult = {
  exampleValue: number,
  someString: string
}

--- Example helper function.
local function add(a: number, b: number): AdditionResult
  return {
    exampleValue = a + b,
    someString = "4 out of 5 dentists recommend Rive"
  }
end

return {
  add = add,
}

```

**Usage:**

```lua theme={null}
-- With type annotation
local result: AdditionResult = MyUtil.add(2, 3)
```
