Repost and sharing system in mobile app

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Repost and sharing system in mobile app
Medium
from 1 business day to 3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Developing Repost/Share System in a Mobile App

Repost within app and share outside — technically different tasks, though button is one. Internal repost — publish someone else's content in your feed with attribution. External share — transfer content to another app via system share sheet. Usually both needed.

Internal Repost: Data Model

Two approaches:

1. Copy content — new post with field reposted_from_id. Display simplicity, but when original edited, copy becomes stale.

2. Link to original — post with repost_of_id, body not copied, fetched on request. When original deleted, repost shows "Original deleted." Telegram and Twitter/X use exactly this approach.

Second approach is correct. In user's feed, repost renders as embedded original card inside reposter's bubble.

Display in Feed

// iOS — post cell with embedded card
if let repostOf = post.repostOf {
    // Draw RepostCardView inside PostCell
    let repostCard = RepostCardView(post: repostOf)
    contentStack.addArrangedSubview(repostCard)
}

Embedded card — UIView with rounded corners, CALayer.borderColor stroke, original author's avatar and name. Important: no infinite nesting — repost of repost shows only one nesting level (original card).

On Compose: if (post.repostOf != null) EmbeddedPostCard(post = post.repostOf).

Counter and Uniqueness

Table reposts (user_id, original_post_id, UNIQUE) — user can repost original once. Repost button after press becomes active (highlighted), repeat press — cancels repost. Counter reposts_count in original post table.

External Share

iOSUIActivityViewController:

let items: [Any] = [postText, URL(string: deeplink)!]
let vc = UIActivityViewController(activityItems: items, applicationActivities: nil)
// On iPad need popoverPresentationController
vc.popoverPresentationController?.sourceView = shareButton
present(vc, animated: true)

For sharing post image — render UIView to UIImage via UIGraphicsImageRenderer and add to activityItems.

AndroidIntent.ACTION_SEND:

val intent = Intent(Intent.ACTION_SEND).apply {
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, "$postText\n$deeplinkUrl")
}
startActivity(Intent.createChooser(intent, "Share"))

For images — Intent.ACTION_SEND with type = "image/*" and URI via FileProvider. Direct file:// URI doesn't work on Android 7+, only content:// via FileProvider.

Fluttershare_plus package:

await Share.shareXFiles([XFile(imagePath)], text: '$postText\n$deeplinkUrl');

Deeplink for Share

External share without deeplink loses meaning. Link should open specific post in app. On iOS — Universal Links (apple-app-site-association on server + NSUserActivityTypes in Info.plist). On Android — App Links (assetlinks.json on server + intent-filter in manifest). If app absent — fallback to web post version.

Workflow

Design repost model → implement API (create/delete repost, counters) → UI embedded card in feed → external share with deeplink → test un-repost and deleted originals display.

Timeline

Internal repost with UI — 1-2 days. External share with deeplink — another 1-2 days. Full system with both modes — 2-3 days with parallel platform development. Cost calculated individually.