# Function: ~~experimental_standaloneMiddleware()~~

> 

> **experimental\_standaloneMiddleware**\<`TCtx`\>(): `object`

Defined in: [packages/server/src/unstable-core-do-not-import/middleware.ts:197](https://github.com/trpc/trpc/blob/7c907acfd8b31929214792e3b8c2ad7a8ac72563/packages/server/src/unstable-core-do-not-import/middleware.ts#L197)

Creates a middleware that isn't tied to a root object, for the context,
metadata and input types you give it.

## Type Parameters

| Type Parameter |
| ------ |
| `TCtx` *extends* `object` |

## Returns

`object`

### ~~create()~~

> **create**: \<`$ContextOverrides`\>(`fn`) => `MiddlewareBuilder`\<`TCtx` *extends* `object` ? `T` : `any`, `TCtx` *extends* `object` ? `T` : `object`, `$ContextOverrides`, `TCtx` *extends* `object` ? `T` : `unknown`\>

#### Type Parameters

| Type Parameter |
| ------ |
| `$ContextOverrides` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `fn` | `MiddlewareFunction`\<`TCtx` *extends* `object` ? `T` : `any`, `TCtx` *extends* `object` ? `T` : `object`, `object`, `$ContextOverrides`, `TCtx` *extends* `object` ? `T` : `unknown`\> |

#### Returns

`MiddlewareBuilder`\<`TCtx` *extends* `object` ? `T` : `any`, `TCtx` *extends* `object` ? `T` : `object`, `$ContextOverrides`, `TCtx` *extends* `object` ? `T` : `unknown`\>

## Deprecated

Use `.concat()` with a procedure builder instead.

## See

https://trpc.io/docs/server/middlewares#concat
