[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Resource](https://evolu.dev/docs/api-reference/common/Resource) › createSharedResourceByKey

## Call Signature

```ts
function createSharedResourceByKey<K, T, D>(
  create: (key: K) => Task<T, never, D>,
): Task<SharedResourceByKey<K, T>, never, D>;
```

Defined in: [packages/common/src/Resource.ts:708](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Resource.ts#L708)

Creates [SharedResourceByKey](https://evolu.dev/docs/api-reference/common/Resource/interfaces/SharedResourceByKey).

The `create` callback returns a Task scoped to one key. The returned Task
must not fail, matching [createSharedResource](https://evolu.dev/docs/api-reference/common/Resource/functions/createSharedResource).

Create each resource with [disposable](https://evolu.dev/docs/api-reference/common/Function/functions/disposable) when its shape supports it. The
same disposal-guard recommendation as [createSharedResource](https://evolu.dev/docs/api-reference/common/Resource/functions/createSharedResource) applies.

The returned Task must not directly or transitively acquire the same logical
key or call `forEachCurrent` on this registry. Same-key acquisition is
non-reentrant, and `forEachCurrent` attempts to acquire every registered key.
Different keys remain independent.

Like [createSharedResource](https://evolu.dev/docs/api-reference/common/Resource/functions/createSharedResource), dependencies are captured when the registry
is created; dependencies provided to later acquire calls do not change what
the returned Task observes.

## Call Signature

```ts
function createSharedResourceByKey<K, T, D, L>(
  create: (key: K) => Task<T, never, D>,
  options: SharedResourceByKeyOptions<K, L>,
): Task<SharedResourceByKey<K, T>, never, D>;
```

Defined in: [packages/common/src/Resource.ts:717](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Resource.ts#L717)

Creates [SharedResourceByKey](https://evolu.dev/docs/api-reference/common/Resource/interfaces/SharedResourceByKey) with lookup or lifecycle options.