# SharedStorage

**URL:** <https://hotbunny.dev/t/sharedstorage/56>\
**Category:** API Reference\
**Created:** [October 21, 2026, 4:02pm UTC](https://hotbunny.dev/t/sharedstorage/56 "2026-10-21T16:02:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![SteelWaffe7](https://hotbunny.dev/user_avatar/hotbunny.dev/steelwaffe7/32/11_2.png) [@SteelWaffe7](https://hotbunny.dev/u/SteelWaffe7)\
**Post date:** [October 21, 2026, 4:02pm UTC](https://hotbunny.dev/t/sharedstorage/56/1 "2026-10-21T16:02:54Z")

</div>

The `SharedStorage` namespace provides persistent key-value storage shared between all mods. Data persists across game sessions. All mods read and write to the same key space.

Use descriptive key names prefixed with your mod ID to avoid collisions (e.g. `"mymod.leaderboard"`).

For mod-private persistent storage, use [Storage](https://hotbunny.dev/t/storage/53).

**No permission required.**

## Import

```typescript
import { SharedStorage } from "@hotbunny/hackhub-content-sdk";

```

## Methods

### `SharedStorage.get<T>(key)`

Get a shared value by key. Returns `undefined` if not found.

**Returns:** `T | undefined`

```typescript
const board = SharedStorage.get<LeaderboardEntry[]>("mymod.leaderboard");

```

### `SharedStorage.set(key, value)`

Set a shared value by key. Value must be JSON-serializable.

```typescript
SharedStorage.set("mymod.leaderboard", [
    { name: "Player1", score: 100 },
    { name: "Player2", score: 85 },
]);

```

### `SharedStorage.remove(key)`

Remove a shared key.

```typescript
SharedStorage.remove("mymod.leaderboard");

```

### `SharedStorage.getAll()`

Get all shared key-value pairs.

**Returns:** `Record<string, any>`

## Use Cases

### Cross-mod data sharing

```typescript
// Mod A: Publish data
SharedStorage.set("economy-mod.exchangeRate", 1.25);

// Mod B: Read it
const rate = SharedStorage.get<number>("economy-mod.exchangeRate");

```

### Shared leaderboards

```typescript
const key = "mymod.leaderboard";
const board = SharedStorage.get<{ name: string; score: number }[]>(key) || [];
board.push({ name: "NewPlayer", score: 50 });
board.sort((a, b) => b.score - a.score);
SharedStorage.set(key, board.slice(0, 10));

```

## Key Naming Convention

Since all mods share the same key space, use a prefix to avoid collisions:

```auto
{mod-id}.{key-name}

```

Examples:

- `"my-quest-mod.completedQuests"`
- `"economy-mod.exchangeRate"`
- `"social-mod.friendsList"`
