[frameit] Add iPhone 16 and iPhone 17 device frame support#29921
Conversation
- Add embedded frame PNGs for iPhone 16, 16 Plus, 16 Pro, 16 Pro Max, iPhone 17, 17 Pro, and 17 Pro Max directly in the repo - Add new Color constants: Teal, Ultramarine, Black Titanium, Desert Titanium, Natural Titanium, White Titanium, Cosmic Orange, Deep Blue, Mist Blue, Sage, Lavender - Add device entries with correct screen resolutions and priorities - Update TemplateFinder and Offsets to fall back to embedded assets - Extend rounded corner support to iPhone 16 and 17 series - Add tests for device detection and template lookup
The fastlane gem has a 1.5 MB size limit. Frame PNGs must be hosted on the separate frameit-frames repo and downloaded at runtime via `fastlane frameit download_frames`. Reverts the embedded frames fallback in TemplateFinder and Offsets. Keeps device definitions, color constants, editor changes, and tests.
|
Companion PR for the frame images and offsets: fastlane/frameit-frames#40 |
|
Thanks! Let me read up on how the frames repo works with this. Unsure if I need to version/cut a release of frames or it somehow is referenced purely via code. |
There was a problem hiding this comment.
Pull request overview
Adds iPhone 16 and iPhone 17 series support to frameit so newer screenshot resolutions can be detected and mapped to the correct device/frame templates, with accompanying tests and minor supporting updates.
Changes:
- Added new
Frameit::Devicesentries for iPhone 16/16 Plus/16 Pro/16 Pro Max and iPhone 17/17 Pro/17 Pro Max, plus additionalFrameit::Colorconstants. - Extended rounded-corner masking logic to include iPhone 16 and 17 series.
- Added/updated specs covering device detection, forced device selection, and template naming.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| snapshot/lib/snapshot/reports_generator.rb | Adds new simulator device-name mappings for iPhone 16/17 in Snapshot HTML report generation. |
| frameit/lib/frameit/device_types.rb | Introduces new iPhone 16/17 device definitions and new color constants used by frame selection. |
| frameit/lib/frameit/editor.rb | Expands rounded-corner masking eligibility to include iPhone 16/17 series. |
| frameit/spec/device_spec.rb | Adds RSpec coverage for detection/forcing behavior for iPhone 16/17 devices. |
| frameit/spec/template_finder_spec.rb | Adds a template-finder expectation for iPhone 17 Pro naming. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This comment was marked as low quality.
This comment was marked as low quality.
- snapshot: add missing base "iPhone 17" report mapping - frameit: drop shared APP_IPHONE_61 deliver_screen_id from IPHONE_17 so "iOS-6.1-in" deterministically resolves to IPHONE_17_PRO (matches iPhone 16 convention where only the Pro variant owns the display id) - frameit: clarify rounded-corner comment to match 14/16/17 allowlist - frameit/spec: fix misleading test descriptions and update forced display-type expectation Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
|
@iBotPeaches Could you please take a look now? I addressed all the comments from the Copilot. You might want to run it once more. Otherwise i think we are golden to merge. Thanks |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Hey @Events-Mate-Apps 👋
Thank you for your contribution to fastlane and congrats on getting this pull request merged 🎉
The code change now lives in the master branch, however it wasn't released to RubyGems yet.
We usually ship about once a month, and your PR will be included in the next one.
Please let us know if this change requires an immediate release by adding a comment here 👍
We'll notify you once we shipped a new release with your changes 🚀"
There was a problem hiding this comment.
Congratulations! 🎉 This was released as part of fastlane 2.234.0 🚀


Summary
Closes #29920
Adds device definitions for iPhone 16 and iPhone 17 series to frameit so screenshots with these resolutions are correctly detected and framed.
Code changes (this PR):
Frame PNGs (separate update needed):
The actual frame images and offsets need to be added to the frameit-frames repo. I have the Apple Design Resources bezels ready for upload — happy to submit a PR there as well.
Screen resolutions:
Test plan
bundle exec rspec frameit/spec/— 58 examples, 0 failuresbundle exec rubocop -a frameit/— 26 files, 0 offenses