Emerge's Bits & Bytes: August 2023
Welcome to the inaugural Emerge newsletter! Our goal for this newsletter is to share updates on what we’re working on + share anything interesting in the world of (mobile) development.
If you found this interesting, we'd love if you could sign up and share it!
What we're building
We’re very excited about our new Snapshot product. In our experience, snapshot testing is one of the most effective ways to ensure UI & accessibility correctness.
But it's harder than it should be. Devs need to:
- Create tests for every view + generate and store images
- Maintain a base set of snapshots to compare against
- Diff head vs. base and surface result
And this is usually done by stitching together a handful of services & custom implementations. We want to abstract that all away.
Emerge’s Snapshot product leverages existing code, using PreviewProvider & Compose Previews to automatically generate images – no extra test suites or code needed. As for processing and comparing build data, that’s our bread and butter.
We’re excited to use this newsletter to showcase what we’ve been building and be on the lookout for more updates soon!
Auto expanding views & landscape support (iOS)Our iOS snapshots now automatically expand to their full height, allowing you to view below the fold and catch any potential diffs (link). We also now support snapshots of landscape previews.
When we first built Snapshots for Android, we followed a normal Android pattern and required previews to be denoted in a test source set. This is different from iOS, which extracts all previews in a project automatically. Following feedback from a cross-platform user, we’ve made it so you can automatically snapshot all Composable previews in the main source set, matching the experience on iOS.
Outside SnapshotsOther notable work includes completely open sourcing our Android SDK and supporting uploads in .IPA format.
What we're writing
Deep-DivesA lot (most) people know us from our app analysis on Twitter. Twitter is great for distribution, healthy discussion, and overall stability 🙃. But its format limits how we can convey information. This month we made our first two deep-dive pages for Threads and Candy Crush Saga. With these pages we detail how apps are built, embed visualizations, share relevant code snippets, and write in complete sentences.
Moving ETTrace from CocoaPods to Swift Package ManagerTechnically this came out at the end of June, but who’s counting. Here we detail why we made the switch, benefits we’re seeing, and difficulties we encountered.
How companies use Emerge - Duolingo, Square, and FullstoryWe had great case studies come out from three clients: Duolingo on reducing iOS app size, Square on continuously monitoring APK size, and FullStory on reducing their SDK’s impact on Android startup.
What we're reading
User Centric Mobile PerformanceGreat reminder from PY to always keep the user and their perception of performance at the forefront of all performance work.
Composable Styles in SwiftUIFor people not familiar with SwiftUI, this is a fantastic piece on how to compose SwiftUI styles.
Reducing Memory Footprint When Using UIImageThis is several years old, but saw it making the rounds recently. In addition to the memory footprint of UIImage, we've also measured a runtime impact of using UIImage with large dimension images.
If you liked this first edition, please do us a favor and share this link on your socials & let us know if there are topics you’d like us to cover!
Until next time, hope you enjoyed these bits and bytes!