{"id":37426197,"url":"https://github.com/utsmannn/compose-remote-layout","last_synced_at":"2026-01-16T06:14:44.866Z","repository":{"id":278820195,"uuid":"932939234","full_name":"utsmannn/compose-remote-layout","owner":"utsmannn","description":"Server-Driven UI component with Compose Multiplatform","archived":false,"fork":false,"pushed_at":"2025-10-05T15:30:01.000Z","size":20192,"stargazers_count":134,"open_issues_count":2,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-05T16:11:23.972Z","etag":null,"topics":["android","compose","compose-multiplatform","ios","kotlin","server-driven-ui"],"latest_commit_sha":null,"homepage":"https://utsmannn.github.io/compose-remote-layout/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/utsmannn.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-14T19:58:30.000Z","updated_at":"2025-10-05T15:30:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"1729e265-41d1-4c44-a586-e3b10e2ae3ec","html_url":"https://github.com/utsmannn/compose-remote-layout","commit_stats":null,"previous_names":["utsmannn/compose-remote-layout"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/utsmannn/compose-remote-layout","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utsmannn%2Fcompose-remote-layout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utsmannn%2Fcompose-remote-layout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utsmannn%2Fcompose-remote-layout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utsmannn%2Fcompose-remote-layout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/utsmannn","download_url":"https://codeload.github.com/utsmannn/compose-remote-layout/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/utsmannn%2Fcompose-remote-layout/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","compose","compose-multiplatform","ios","kotlin","server-driven-ui"],"created_at":"2026-01-16T06:14:44.423Z","updated_at":"2026-01-16T06:14:44.857Z","avatar_url":"https://github.com/utsmannn.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n  \u003ca href=\"https://central.sonatype.com/artifact/io.github.utsmannn/compose-remote-layout/overview\"\u003e\u003cimg alt=\"Maven Central Version\" src=\"https://img.shields.io/maven-central/v/io.github.utsmannn/compose-remote-layout\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/utsmannn/compose-remote-layout/actions/workflows/publish.yaml\"\u003e\u003cimg alt=\"Publish to Maven Central\" src=\"https://github.com/utsmannn/compose-remote-layout/actions/workflows/publish.yaml/badge.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Compose Remote Layout\n\nArticle published\non [Medium](https://medium.com/@utsmannn/server-driven-ui-with-compose-remote-layout-bdc902d973f8)\n\n## Documentation\n\nAll documentation is available in the [docs](https://utsmannn.github.io/compose-remote-layout/)\n\n## Background and Motivation\n\nIn modern app development, the ability to update UI components without deploying new app versions is\nincreasingly important. While solutions like React Native and Flutter offer this capability, they\noften require learning new frameworks or languages. Compose Remote Layout bridges this gap for\nKotlin Multiplatform applications by enabling dynamic UI updates while staying within the Compose\necosystem.\n\nThis library was created to solve several key challenges:\n\n- The need for rapid UI iterations without app store submissions\n- A/B testing requirements for UI components\n- Platform-specific UI customization from a central source\n- Real-time UI updates for critical changes\n\n## Key Features\n\nThe `compose-remote-layout` module provides several core features:\n\n1. **Component System**\n    - Built-in support for basic Compose components (Column, Row, Box, Text, Button, Card)\n    - All components can be defined and modified through JSON\n    - Component properties map directly to Compose parameters\n\n2. **Dynamic Updates**\n    - Load layouts from remote sources (API, Firebase, local files)\n    - Update UI without app redeployment\n    - Handle layout changes in real-time\n\n3. **Value Binding**\n    - Dynamic text updates using the BindsValue system\n    - Template-based value substitution\n    - Real-time value changes support\n\n4. **Modifier System**\n    - Comprehensive modifier support matching Compose capabilities\n    - Scoped modifiers for specific component types\n    - JSON-based modifier definition\n\n5. **Custom Components**\n    - Register custom Composable functions\n    - Map JSON definitions to custom UI elements\n    - Pass custom parameters and handle specific logic\n\n6. **iOS Support**\n    - Independent iOS implementation using SwiftUI\n    - Swift Package Manager integration\n\n### Demo Video\n\nhttps://github.com/user-attachments/assets/6479f0c1-338e-4d1e-90e9-25c2ebf72395\n\n## Download\n\nAdd the dependencies to your `build.gradle.kts`:\n\n```kotlin\n// Kotlin Multiplatform\nimplementation(\"io.github.utsmannn:compose-remote-layout:{version}\")\n\n// Choose platform-specific implementations as needed:\nimplementation(\"io.github.utsmannn:compose-remote-layout-android:{version}\")\nimplementation(\"io.github.utsmannn:compose-remote-layout-jvm:{version}\")\nimplementation(\"io.github.utsmannn:compose-remote-layout-iosx64:{version}\")\nimplementation(\"io.github.utsmannn:compose-remote-layout-iosarm64:{version}\")\nimplementation(\"io.github.utsmannn:compose-remote-layout-js:{version}\")\n```\n\n### SPM Integration for iOS independent integration without Kotlin Multiplatform\n\nFor iOS projects without Kotlin Multiplatform, use Swift Package Manager:\n\nOnce you have your Swift package set up, adding ComposeRemoteLayoutSwift as a dependency is as easy\nas adding it to the dependencies value of your Package.swift or the Package list in Xcode.\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/utsmannn/compose-remote-layout-swift.git\", .upToNextMajor(from: \"0.0.1-alpha05\"))\n]\n```\n\nOr add it via Xcode:\n\n- Open your project in Xcode\n- Go to File \u003e Swift Packages \u003e Add Package Dependency\n- Enter the package URL: `https://github.com/utsmannn/compose-remote-layout-swift.git`\n- Select the version you want to use (0.0.1-alpha05)\n- Click Finish\n- Add `import ComposeRemoteLayoutSwift` to your Swift files\n- Build your project\n\nSee: [compose-remote-layout-swift](https://github.com/utsmannn/compose-remote-layout-swift)\n\n## Important Disclaimer\n\n⚠️ **Early Development Stage**\n\nThis library is currently in alpha stage (version {version}) and has several important\nconsiderations:\n\n1. **Production Use**: Not recommended for production applications at this time\n2. **API Stability**: The API may change significantly between versions\n3. **Performance**: Not fully optimized for large-scale applications\n4. **Testing**: Limited real-world testing and validation\n5. **Documentation**: May be incomplete or subject to changes\n\nWe recommend:\n\n- Using this library for experimental projects\n- Contributing feedback and bug reports\n- Waiting for stable releases before production use\n- Testing thoroughly in your specific use case\n\nPlease report issues and suggestions through the GitHub repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futsmannn%2Fcompose-remote-layout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Futsmannn%2Fcompose-remote-layout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Futsmannn%2Fcompose-remote-layout/lists"}