{"id":14981491,"url":"https://github.com/figma/dynamic-universal-app","last_synced_at":"2025-04-10T01:08:30.656Z","repository":{"id":39788034,"uuid":"363147848","full_name":"figma/dynamic-universal-app","owner":"figma","description":"Size efficient alternative to macOS universal binaries","archived":false,"fork":false,"pushed_at":"2025-03-27T00:02:07.000Z","size":42,"stargazers_count":62,"open_issues_count":3,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-10T01:08:25.773Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/figma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-04-30T13:22:38.000Z","updated_at":"2025-04-04T02:15:14.000Z","dependencies_parsed_at":"2024-09-24T07:00:26.992Z","dependency_job_id":null,"html_url":"https://github.com/figma/dynamic-universal-app","commit_stats":{"total_commits":28,"total_committers":5,"mean_commits":5.6,"dds":0.25,"last_synced_commit":"d6588d67ecfb460f2d7d12b40062467529044843"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/figma%2Fdynamic-universal-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/figma%2Fdynamic-universal-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/figma%2Fdynamic-universal-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/figma%2Fdynamic-universal-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/figma","download_url":"https://codeload.github.com/figma/dynamic-universal-app/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137887,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-09-24T14:03:42.677Z","updated_at":"2025-04-10T01:08:30.636Z","avatar_url":"https://github.com/figma.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Dynamic Universal App\n\nDynamic Universal App (DUA) is tiny bootstrap app that simplifies the user\ndownload process for macOS applications with Intel and Apple Silicon builds.\nIt is an bandwidth efficient alternative to [universal fat binaries](https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary).\n\nUsers download the DUA bundle (customized with the real app name and icon)\ninstead of the real app. On launch, it will automatically download the\narchitecture specific build of your app, replace itself with the real app, and\nfinally switch over to the real app.\n\n\u003cimg width=\"512\" alt=\"figma-dua\" src=\"https://user-images.githubusercontent.com/1319028/116702718-1bd37000-a9d2-11eb-9f36-bf7ede60de1b.png\"\u003e\n\nCompared to normal universal binaries or listing architecture specific\ndownload links, this has the following benefits:\n\n* Simpler download page for your users. They won't have to know what \"Intel\" or\n  \"Apple Silicon\" means.\n\n* Faster downloads. Normal universal binaries can make your app up to 2x\n  larger.\n\n* In the future, even faster downloads with XZ compression. Traditionally\n  macOS apps are distributed as ZIPs or DMGs, but they offer subpar\n  compression ratios. DUA will optionally able to download the real app from\n  an XZ package to reduce download time even further. For basic Electron apps,\n  XZ reduces the download from 80MB to 60MB.\n\n### Notes\n\nDUA will not work for enterprise deployments where the end-users do not have\nwrite access to `/Applications`. You will likely want to provide direct links\nto architecture-specfic builds somewheree for use by enterprise admins.\n\n### Packaging\n\nThis needs to be automated, but here are manual steps:\n\n```sh\nxcodebuild -project DynamicUniversalApp.xcodeproj -configuration Release\n\nAPP_DIR=\"build/Release/DynamicUniversalApp.app\"\nINFO_PLIST=\"$APP_DIR/Contents/Info.plist\"\n/usr/libexec/PlistBuddy -c 'set CFBundleIdentifier com.figma.desktop.dynamic-universal-app' \"$INFO_PLIST\"\n/usr/libexec/PlistBuddy -c 'set TargetAppName Figma' \"$INFO_PLIST\"\n/usr/libexec/PlistBuddy -c 'set TargetDownloadURLs:aarch64 https://desktop.figma.com/mac-arm/Figma.zip' \"$INFO_PLIST\"\n/usr/libexec/PlistBuddy -c 'set TargetDownloadURLs:x86_64 https://desktop.figma.com/mac/Figma.zip' \"$INFO_PLIST\"\n\n/usr/libexec/PlistBuddy -c 'add CFBundleIconFile string icon.icns' \"$INFO_PLIST\"\ncp /path/to/icon.icns \"$APP_DIR/Contents/Resources/icon.icns\"\n\nmv DynamicUniversalApp.app Figma.app\n\ncodesign --force --options=runtime --timestamp --sign \"Developer ID Application: ...\" Figma.app\ncd ~/figma/figma/desktop\nnode scripts/notarize.js com.figma.desktop.dynamic-universal-app \"$APP_DIR\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffigma%2Fdynamic-universal-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffigma%2Fdynamic-universal-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffigma%2Fdynamic-universal-app/lists"}