# Conflicts:
# Sources/StreamFeeds/generated/feeds/models/AIAudioConfigRequest.swift
# Sources/StreamFeeds/generated/feeds/models/AIAudioConfigResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AIImageLabelDefinition.swift
# Sources/StreamFeeds/generated/feeds/models/APIError.swift
# Sources/StreamFeeds/generated/feeds/models/AWSRekognitionRule.swift
# Sources/StreamFeeds/generated/feeds/models/ActionLogResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ActivityRequest.swift
# Sources/StreamFeeds/generated/feeds/models/ActivityResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AddActivityRequest.swift
# Sources/StreamFeeds/generated/feeds/models/AddActivityResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AddCommentReactionRequest.swift
# Sources/StreamFeeds/generated/feeds/models/AddCommentReactionResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AddCommentRequest.swift
# Sources/StreamFeeds/generated/feeds/models/AddCommentResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AddReactionRequest.swift
# Sources/StreamFeeds/generated/feeds/models/AddReactionResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AggregatedActivityResponse.swift
# Sources/StreamFeeds/generated/feeds/models/AppealItemResponse.swift
# Sources/StreamFeeds/generated/feeds/models/BanInfoResponse.swift
# Sources/StreamFeeds/generated/feeds/models/BanRequest.swift
# Sources/StreamFeeds/generated/feeds/models/BlockActionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/BlockListConfig.swift
# Sources/StreamFeeds/generated/feeds/models/BlockListResponse.swift
# Sources/StreamFeeds/generated/feeds/models/BookmarkFolderResponse.swift
# Sources/StreamFeeds/generated/feeds/models/BookmarkResponse.swift
# Sources/StreamFeeds/generated/feeds/models/BypassActionRequest.swift
# Sources/StreamFeeds/generated/feeds/models/CollectionRequest.swift
# Sources/StreamFeeds/generated/feeds/models/CommentResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ConfigResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ContentCountryCodeParameters.swift
# Sources/StreamFeeds/generated/feeds/models/ContentCustomPropertyCountParameters.swift
# Sources/StreamFeeds/generated/feeds/models/ContentCustomPropertyParameters.swift
# Sources/StreamFeeds/generated/feeds/models/CreateBlockListRequest.swift
# Sources/StreamFeeds/generated/feeds/models/CreateFeedsBatchRequest.swift
# Sources/StreamFeeds/generated/feeds/models/CreatePollRequest.swift
# Sources/StreamFeeds/generated/feeds/models/DeleteActivitiesRequest.swift
# Sources/StreamFeeds/generated/feeds/models/DeleteActivityRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeleteCommentRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeletePollAnswerRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeletePollOptionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeletePollRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeleteReactionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/DeliveryReceiptsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/EnrichedActivity.swift
# Sources/StreamFeeds/generated/feeds/models/EnrichedCollectionResponse.swift
# Sources/StreamFeeds/generated/feeds/models/EnrichedReaction.swift
# Sources/StreamFeeds/generated/feeds/models/EnrichmentOptions.swift
# Sources/StreamFeeds/generated/feeds/models/EscalatePayload.swift
# Sources/StreamFeeds/generated/feeds/models/EscalationMetadata.swift
# Sources/StreamFeeds/generated/feeds/models/FeedInput.swift
# Sources/StreamFeeds/generated/feeds/models/FeedRequest.swift
# Sources/StreamFeeds/generated/feeds/models/FeedResponse.swift
# Sources/StreamFeeds/generated/feeds/models/FeedSuggestionResponse.swift
# Sources/StreamFeeds/generated/feeds/models/FeedsPreferences.swift
# Sources/StreamFeeds/generated/feeds/models/FilterConfigResponse.swift
# Sources/StreamFeeds/generated/feeds/models/FlagCountRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/FloodConfig.swift
# Sources/StreamFeeds/generated/feeds/models/FloodIdenticalConfig.swift
# Sources/StreamFeeds/generated/feeds/models/FloodIdenticalRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/FloodSimilarConfig.swift
# Sources/StreamFeeds/generated/feeds/models/FloodSimilarRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/FollowBatchRequest.swift
# Sources/StreamFeeds/generated/feeds/models/FollowBatchResponse.swift
# Sources/StreamFeeds/generated/feeds/models/FollowRequest.swift
# Sources/StreamFeeds/generated/feeds/models/FriendReactionsOptions.swift
# Sources/StreamFeeds/generated/feeds/models/GetCommentRepliesResponse.swift
# Sources/StreamFeeds/generated/feeds/models/GetCommentsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/GetFollowSuggestionsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/GetOrCreateFeedRequest.swift
# Sources/StreamFeeds/generated/feeds/models/GetOrCreateFeedResponse.swift
# Sources/StreamFeeds/generated/feeds/models/IPContentCountRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/IPFlagCountRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/ImageContentParameters.swift
# Sources/StreamFeeds/generated/feeds/models/ImageRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/IntentConfigRequest.swift
# Sources/StreamFeeds/generated/feeds/models/IntentConfigResponse.swift
# Sources/StreamFeeds/generated/feeds/models/IntentRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/IntentTopicRequest.swift
# Sources/StreamFeeds/generated/feeds/models/IntentTopicResponse.swift
# Sources/StreamFeeds/generated/feeds/models/LLMConfig.swift
# Sources/StreamFeeds/generated/feeds/models/ListBlockListResponse.swift
# Sources/StreamFeeds/generated/feeds/models/MarkReviewedRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/MediaDisplayResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationActionConfigResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationFlagResponse.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationFlaggedEvent.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationMarkReviewedEvent.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationPayload.swift
# Sources/StreamFeeds/generated/feeds/models/ModerationV2Response.swift
# Sources/StreamFeeds/generated/feeds/models/NotificationComment.swift
# Sources/StreamFeeds/generated/feeds/models/NotificationParentActivity.swift
# Sources/StreamFeeds/generated/feeds/models/NotificationTarget.swift
# Sources/StreamFeeds/generated/feeds/models/NotificationTrigger.swift
# Sources/StreamFeeds/generated/feeds/models/OCRContentParameters.swift
# Sources/StreamFeeds/generated/feeds/models/PollOptionResponseData.swift
# Sources/StreamFeeds/generated/feeds/models/PollResponseData.swift
# Sources/StreamFeeds/generated/feeds/models/PollVoteResponse.swift
# Sources/StreamFeeds/generated/feeds/models/PollVoteResponseData.swift
# Sources/StreamFeeds/generated/feeds/models/PrivacySettingsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/PushPreferenceInput.swift
# Sources/StreamFeeds/generated/feeds/models/PushPreferencesResponse.swift
# Sources/StreamFeeds/generated/feeds/models/PushScheduleInput.swift
# Sources/StreamFeeds/generated/feeds/models/PushScheduleResponse.swift
# Sources/StreamFeeds/generated/feeds/models/QueryActivitiesRequest.swift
# Sources/StreamFeeds/generated/feeds/models/QueryBookmarksRequest.swift
# Sources/StreamFeeds/generated/feeds/models/QueryCommentsRequest.swift
# Sources/StreamFeeds/generated/feeds/models/QueryFeedsRequest.swift
# Sources/StreamFeeds/generated/feeds/models/QueryFollowsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/QueryReviewQueueRequest.swift
# Sources/StreamFeeds/generated/feeds/models/QueryReviewQueueResponse.swift
# Sources/StreamFeeds/generated/feeds/models/QueryUsersPayload.swift
# Sources/StreamFeeds/generated/feeds/models/QuietHoursRuleInput.swift
# Sources/StreamFeeds/generated/feeds/models/QuietHoursRuleResponse.swift
# Sources/StreamFeeds/generated/feeds/models/Reaction.swift
# Sources/StreamFeeds/generated/feeds/models/RejectAppealRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/RestoreActionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/ReviewQueueItemResponse.swift
# Sources/StreamFeeds/generated/feeds/models/RuleBuilderAction.swift
# Sources/StreamFeeds/generated/feeds/models/RuleBuilderCondition.swift
# Sources/StreamFeeds/generated/feeds/models/ShadowBlockActionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/ShareResponse.swift
# Sources/StreamFeeds/generated/feeds/models/SingleFollowResponse.swift
# Sources/StreamFeeds/generated/feeds/models/SortParamRequest.swift
# Sources/StreamFeeds/generated/feeds/models/SubmitActionRequest.swift
# Sources/StreamFeeds/generated/feeds/models/SubmitActionResponse.swift
# Sources/StreamFeeds/generated/feeds/models/TextContentParameters.swift
# Sources/StreamFeeds/generated/feeds/models/TextRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/ThreadedCommentResponse.swift
# Sources/StreamFeeds/generated/feeds/models/TypingIndicatorsResponse.swift
# Sources/StreamFeeds/generated/feeds/models/UnblockActionRequestPayload.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateActivityPartialRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateActivityRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateBlockListRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateCommentRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateFeedRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpdateFollowRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpsertActivitiesRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UpsertActivitiesResponse.swift
# Sources/StreamFeeds/generated/feeds/models/UpsertConfigRequest.swift
# Sources/StreamFeeds/generated/feeds/models/UserBannedEvent.swift
# Sources/StreamFeeds/generated/feeds/models/UserDeactivatedEvent.swift
# Sources/StreamFeeds/generated/feeds/models/UserIdenticalContentCountParameters.swift
# Sources/StreamFeeds/generated/feeds/models/UserIdenticalImageCountParameters.swift
# Sources/StreamFeeds/generated/feeds/models/UserReactionCountRuleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/UserReactivatedEvent.swift
# Sources/StreamFeeds/generated/feeds/models/UserRoleParameters.swift
# Sources/StreamFeeds/generated/feeds/models/VideoContentParameters.swift
# Sources/StreamFeeds/generated/feeds/models/WSAuthMessage.swift
🔗 Issue Links
Fixes: IOS-2162
Related: IOS-2206
Stacked on #83
🎯 Goal
Reduce size of the SDK, improve thread-safety, and reduce future breaking changes by replacing enums
📝 Summary
raw_representable_over_enum: string enums becomeRawRepresentableclasses, which reduces SDK size and keeps unknown server valuesstring_coding_keys: one sharedStringCodingKeyreplaces the per-modelCodingKeysenums, which reduces SDK sizeimmutable_models:letproperties and checkedSendablemake generated models thread safenumber_as_floatremoved: numbers areDouble, matching the JSONencodable_only_models,decodable_only_modelsandcodable_models: requests are onlyEncodable, and responses and events onlyDecodable, which reduces SDK size🛠 Implementation
Because the generated models are immutable,
FeedAddActivityRequestandActivityAddCommentRequestnow build their generated request when it is sent instead of mutating it. The FEEDS-546createdAtworkaround is removed, since the backend fixed it in July 2025.🎨 Showcase
N/A
🧪 Manual Testing Notes
☑️ Contributor Checklist
docs-contentrepo