# Pins

## Overview

Sometimes you'll want to pin your favorite activity to a feed. You can pin an activity like this:

<codetabs>

<codetabs-item value="swift" label="Swift">

```swift
let activity = client.activity(
    for: "activity_123",
    in: FeedId(group: "user", id: "john")
)
// Pin an activity
try await activity.pin()

// Unpin an activity
try await activity.unpin()
```

</codetabs-item>

<codetabs-item value="kotlin" label="Kotlin">

```kotlin
val activity = client.activity(
    activityId = "activity_123",
    fid = FeedId(group = "user", id = "john")
)
// Pin an activity
activity.pin()

// Unpin an activity
activity.unpin()
```

</codetabs-item>

<codetabs-item value="javascript" label="JavaScript">

```js
// Pin an activity
client.pinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});

// Unpin an activity
client.unpinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});
```

</codetabs-item>

<codetabs-item value="react" label="React">

```js
// Pin an activity
client.pinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});

// Unpin an activity
client.unpinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});
```

</codetabs-item>

<codetabs-item value="reactnative" label="React Native">

```js
// Pin an activity
client.pinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});

// Unpin an activity
client.unpinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
});
```

</codetabs-item>

<codetabs-item value="dart" label="Dart">

```dart
final activity = client.activity(
  activityId: 'activity_123',
  fid: const FeedId(group: 'user', id: 'john'),
);
// Pin an activity
await activity.pin();

// Unpin an activity
await activity.unpin();
```

</codetabs-item>

<codetabs-item value="nodejs" label="Node">

```js
// Pin an activity
client.feeds.pinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
  user_id: "<user id>",
});

// Unpin an activity
client.feeds.unpinActivity({
  feed_group_id: feed.group,
  feed_id: feed.id,
  activity_id: "activity_123",
  user_id: "<user id>",
});
```

</codetabs-item>

<codetabs-item value="go" label="Go">

```go
_, err = client.Feeds().PinActivity(context.Background(), feedGroupID, feedID, activityID, &getstream.PinActivityRequest{
  UserID: getstream.PtrTo("john"),
})

if err != nil {
  log.Fatal("Error pinning activity:", err)
}
```

</codetabs-item>

<codetabs-item value="java" label="Java">

```java
PinActivityRequest pinRequest = PinActivityRequest.builder().userID(testUserId).build();

PinActivityResponse response = testFeed.pinActivity(activityId, pinRequest).getData();
```

</codetabs-item>

<codetabs-item value="php" label="php">

```php
$activityId = 'activity_123';
$feedGroupId = 'user';
$feedId = 'eric';
$response = $feedsClient->pinActivity(
    $feedGroupId,
    $feedId,
    $activityId,
    new GeneratedModels\PinActivityRequest(userID: "eric")
);
```

</codetabs-item>

<codetabs-item value="csharp" label="C#">

```csharp
var response = await _feedsV3Client.PinActivityAsync(
    "user",
    _testFeedId,
    activityId,
    new PinActivityRequest
    {
        UserID = _testUserId
    }
);
```

</codetabs-item>

<codetabs-item value="python" label="Python">

```python
response = self.test_feed.pin_activity(activity_id, user_id=self.test_user_id)
```

</codetabs-item>

<codetabs-item value="ruby" label="Ruby">

```ruby
require 'getstream_ruby'

client = GetStreamRuby.manual(
  api_key: 'api_key',
  api_secret: 'api_secret'
)

# Pin an activity
pin_request = GetStream::Generated::Models::PinActivityRequest.new(
  user_id: 'john'
)
pin_response = client.feeds.pin_activity('user', 'john', 'activity_123', pin_request)
```

</codetabs-item>

</codetabs>

When you read a feed pinned activities are automatically returned:

<codetabs>

<codetabs-item value="swift" label="Swift">

```swift
try await feed.getOrCreate()
print(feed.state.pinnedActivities)
```

</codetabs-item>

<codetabs-item value="kotlin" label="Kotlin">

```kotlin
feed.getOrCreate()
feed.state.pinnedActivities.collect { pinData ->
    println(pinData)
}
```

</codetabs-item>

<codetabs-item value="javascript" label="JavaScript">

```js
const response = await feed.getOrCreate();
console.log(response.pinned_activities);
```

</codetabs-item>

<codetabs-item value="react" label="React">

```js
const response = await feed.getOrCreate();
console.log(response.pinned_activities);
```

</codetabs-item>

<codetabs-item value="reactnative" label="React Native">

```js
const response = await feed.getOrCreate();
console.log(response.pinned_activities);
```

</codetabs-item>

<codetabs-item value="dart" label="Dart">

```dart
await feed.getOrCreate();
print(feed.state.pinnedActivities);
```

</codetabs-item>

<codetabs-item value="nodejs" label="Node">

```js
const response = await feed.getOrCreate({ user_id: "sara" });
console.log(response.pinned_activities);
```

</codetabs-item>

<codetabs-item value="go" label="Go">

```go
_, err = client.Feeds().UnpinActivity(context.Background(), feedGroupID, feedID, activityID, &getstream.UnpinActivityRequest{
  UserID: getstream.PtrTo("john"),
})
if err != nil {
  log.Fatal("Error unpinning activity:", err)
}
```

</codetabs-item>

<codetabs-item value="java" label="Java">

```java
UnpinActivityRequest unpinRequest = UnpinActivityRequest.builder().UserID(testUserId).build();

UnpinActivityResponse response = testFeed.unpinActivity(activityId, unpinRequest).getData();
```

</codetabs-item>

<codetabs-item value="php" label="php">

```php
$activityId = 'activity_123';
$feedGroupId = 'user';
$feedId = 'eric';

$response = $feedsClient->unpinActivity(
    $feedGroupId,
    $feedId,
    $activityId,
    'eric'
);
```

</codetabs-item>

<codetabs-item value="csharp" label="C#">

```csharp
var response = await _feedsV3Client.UnpinActivityAsync(
    "user",
    _testFeedId,
    activityId,
    new { user_id = _testUserId }
);
```

</codetabs-item>

<codetabs-item value="python" label="Python">

```python
response = self.test_feed.unpin_activity(activity_id, self.test_user_id)
```

</codetabs-item>

<codetabs-item value="ruby" label="Ruby">

```ruby
require 'getstream_ruby'

client = GetStreamRuby.manual(
  api_key: 'api_key',
  api_secret: 'api_secret'
)

# Unpin an activity
unpin_response = client.feeds.unpin_activity('user', 'john', 'activity_123', 'john')
```

</codetabs-item>

</codetabs>


---

This page was last updated at 2026-03-10T10:48:21.523Z.

For the most recent version of this documentation, visit [https://getstream.io/activity-feeds/docs/javascript/pins/](https://getstream.io/activity-feeds/docs/javascript/pins/).