The Telegram for macOS beta build 13.0.283318 from October 15 includes a client for a new tab: a feed of posts from channels, which Telegram curates based on user interests, named “For you”, and a second feed — from channels the user is already subscribed to. The same build also features a screen where stickers from collectible gifts can be applied to the Telegram wallet card. Neither feature can be used yet: both are enabled by the server, and the necessary methods are not present in the public API schema.

The post on Telegram — @gramnews
The “For you” feed and wallet stickers in Telegram for macOS beta

What's New in the October 15 Build

The macOS beta is distributed via the update feed mac-updates.telegram.org; each build is a standard zip archive containing the application. Build 13.0.283309 from October 11 contains neither the feed nor the stickers on the card. In 13.0.283318 from October 15, both sets appear at once: the NewsUI interface module, three core files in the TelegramEngine/Feed folder, and descriptions of new API types.

The client's core — TelegramCore — is shared between Telegram for macOS and iOS: it is linked from the iPhone application's source code. The TelegramEngine/Feed folder is not yet present in the public Telegram-iOS repository, and the NewsUI module is absent from the public macOS client. The feed's code only exists in the compiled beta.

How the “For you” Feed Works

The module manages two feeds simultaneously. The first, forYouFeed, is a selection curated by the server. The second, addedFeed in the code, contains posts from channels the user is subscribed to, with an empty state message “Posts from your channels appear here”. Each has its own list and scrolling, and they are switched via segments at the top of the screen.

The curated selection starts with the question “What are you interested in?” and a series of interest chips, each with an emoji. The client does not store the list of interests: it requests it from the server using the interestCategories type and caches it — the type has an interestCategoriesNotModified variant, which the server uses to respond "the list has not changed." The client sends the selected interest back and displays the confirmation “Got it! More of this in For you”.

The rest is familiar from any feed. Posts are loaded downwards in pages and updated with a pull-to-refresh gesture; a "new posts" pill appears above the list; an empty curated selection displays “No posts for you yet”, and an error displays “Couldn't load posts”. There is a “Mark All as Read” button: the feed marks read items on the server, and the server sends the client an updateReadFeed update — this way, the read status propagates across all account devices, just as chat read status does now.

The tab has its own animated icon tab_news. In the build's resources, it is located next to the icons of the four current tabs — tab_contacts, tab_calls, tab_chats, and tab_settings — meaning the feed is intended as a separate tab in the main menu, not a section within the chat list.

Why You Can't Enable the Tab Yourself

The binary does not contain a server configuration key that would enable the feed — for most features, such a key is a string, and it shows that the feature is being rolled out via a flag. The tab's visibility is controlled by an internal showNewsTab flag, which is off at startup. According to the code's structure, it is enabled only when the server returns a non-empty feed.

The content of both feeds arrives via methods from the feed namespace — getForYou and related ones. The server decides whether to provide them to an account, and for those accounts where the feed is not enabled, it returns an empty response. Therefore, modifying the application itself at best shows the tab with the message “No posts for you yet”: the screen is drawn, but there's nothing to populate it with.

The public API schema for Telegram Desktop, layer 230, does not contain forYouFeed, feedMessages, or interestCategories. New methods usually appear in public schemas when the feature is released, so the schema will indicate when the feed moves beyond beta.

More about feed types

The feed namespace in the build contains types forYouFeed (curated selection), feedMessages and feedMessagesNotModified (post page and "nothing new" response), feedItemMessage and feedPosition (feed item and position to continue loading from), interestCategory and interestCategories (interests). The updateReadFeed update arrives in the general stream of account updates. The code for the curated selection is in ForYouFeedContext, for the subscription feed in AddedFeedContext, and for interests in FeedInterests.

Gift Stickers on the Wallet Card

The second discovery relates to the wallet built into Telegram. The wallet has a card — a panel with balance and address at the top of the screen. In build 13.0.283318, card and cardSticker types in the wallet namespace and an inputWalletCardSticker input type have been added to it: stickers can be placed on the card, and the client saves their arrangement on the server. A “Remove from Card” menu item is available for stickers.

The stickers are taken from collectible gifts — those that are structured as NFTs in Telegram. The wallet's collection screen in the beta draws a gift tile with a ribbon and instance number, and the tile has a "peeled-off" state: the gift can be removed from the tile like a sticker and transferred to the card. The card itself received a layer of glare over the stickers and a gift-specific style, CardGiftStyle.

The post on Telegram — @adele_toberg
Gift stickers on the wallet card

What is allowed is checked by the server — this is evident from the errors the client is capable of displaying. There are no detailed explanations for them in the client; the meaning is inferred from their names:

ErrorMeaning by Name
WALLET_NFT_NOT_OWNEDthe gift does not belong to the wallet owner
WALLET_NFT_INVALIDthe gift was not found or is unsuitable
WALLET_STICKER_DUPLICATEthis gift is already applied
WALLET_STICKER_LIMIT_EXCEEDEDthere is no more space on the card
WALLET_STICKER_INVALIDthe sticker failed validation
WALLET_STICKER_SAVED_PROFILErelated to gifts saved in the profile; what exactly it prohibits cannot be understood from the name

The number of stickers that fit on the card is not recorded in the client: the server maintains the limit and only reports it via an error. Like the feed, stickers on the card cannot be enabled by modifying the application — saving the arrangement is checked by the server, and while the wallet namespace already exists in the public schema layer 230, the card and cardSticker types are not present in it.