Key Outcomes
- Released API changes in version 2.3 of the iOS Places SDK. See Release Notes.
- Led stakeholder engagements and modified the Place Picker API to give developers control over the display of the Place Picker widget.
- Increased test coverage and reduced the Place Picker’s UI test suite run time.
More Information
As part of my internship in Google’s Places API team, I worked on improving the developer experience when using the iOS Place Picker. I had ownership of designing, implementing, and testing changes in the Place Picker’s UI elements. I produced a technical design document to invite feedback about proposed changes, and organised and led the resulting stakeholder engagements. As a result of this work, I implemented a new API endpoint that would allow developers to initialise the Place Picker in a UIViewController component, and subsequently modified the public demo pages to showcase the usage of this new endpoint. These changes were released in version 2.3 of the iOS Places SDK.
The Place Picker is a widget available to iOS developers via the Google iOS Places SDK. This component can be embedded into iOS applications and allows developers to use Google’s place selection and suggestion functionality in their own applications. At the time of this project, the Place Picker was only available as a UIWindow component. With no additional means of customisation provided via the API, using the UIWindow component meant the the Place Picker could only be displayed in full screen mode. This restriction limited the ability of developers to customise the Place Picker animations and navigation bar, and led to the Place Picker feeling out of place within their base applications.
To address this issue, I created an additional endpoint in the iOS Places SDK that allowed developers to initialise and access the Place Picker’s UIViewController component. Having access to the UIViewController would allow developers to place the widget in whatever view they want. For example, in a popover, a tab view controller, a navigation stack, or even in full screen mode. One of the key challenges of exposing the view controller was ensuring that the internal implementation details remained hidden, and that the UIWindow implementation of the Place Picker remained stable to ensure changes to the API would not cause issues for developers using it. This also included ensuring the stability of vital behaviour, such as logging, quota checking, and dismissal, which involved undertaking stakeholder engagements and working with related teams (such as the Google Geo UX team) to ensure that UI updates, new error messages, and images were correctly chosen and displayed following the Place Picker’s style guidelines. Through the course of making these changes, I also reduced the Place Picker’s UI test suite runtime by fixing flaky tests, rewriting old tests, and migrating all the UI tests to use EarlGrey, Google’s iOS UI automation test framework.
Overall, these changes lead to the improvement of the developer experience of using the iOS Place Picker by making the API easier to understand and use, and allowing developers to have more control over how the Place Picker was displayed within their applications.