Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Jan 16, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

alanjhughes and others added 8 commits January 16, 2026 10:00
# Why

This PR adds support for monograms on Apple Maps markers, as documented
in Apple's MapKit API:
https://developer.apple.com/documentation/mapkit/marker/init(_:monogram:coordinate:)-2ojcy
Monograms allow displaying short text (typically initials like "JD" for
"John Doe") directly on the marker balloon, which is useful for
contact-style markers or location codes without requiring a custom SF
Symbol.

# How

Added a new optional `monogram` property to `AppleMapsMarker`:

- **TypeScript**: Added `monogram?: string` field to the
`AppleMapsMarker` type
- **Swift**: Added `monogram` field to `MapMarker` struct with a
computed `hasMonogram` property
- **iOS17/iOS18 Views**: Updated marker rendering to conditionally use
the `Marker(_:monogram:coordinate:)` initializer when a monogram is
provided and no `systemImage` is set

The `systemImage` property takes precedence over `monogram` if both are
provided, ensuring backward compatibility.

# Test Plan

1. Create markers with the `monogram` property set to initials (e.g.,
"AB", "JD")
2. Verify the marker displays the monogram text on the balloon instead
of a pin icon
3. Test that markers with `systemImage` still display the SF Symbol
correctly
4. Test that markers with both `systemImage` and `monogram` use
`systemImage` (precedence)
5. Test on both iOS 17+ and iOS 18+ devices to ensure both view
implementations work
# Why

There is swiftlint issue in our native ios code

# How

run `swiftlint lint --config [path-to-expo-repo]/.swiftlint.yml --strict
[path-to-expo-repo]/packages/expo-router --fix`

# Test Plan

CI

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why

@tomekzaw reported an issue, that in his setup he gets an error:
`'Logger' is ambiguous for type lookup`.

The other type that was found is `os.Logger`. I couldn't reproduce the
issue locally, but the approach used in this PR solves it, by specifying
which `Logger` to use.

# How

Change `Logger` to `ExpoModulesCore.Logger`

# Test Plan

1. Build the router-e2e app

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
…fig plugin (#42231)

# Why

Add a comment to make it clear, which library set this plugin to true

# How

<!--
How did you build this feature or fix this bug and why?
-->

# Test Plan

<!--
Please describe how you tested this change and how a reviewer could
reproduce your test, especially if this PR does not include automated
tests! If possible, please also provide terminal output and/or
screenshots demonstrating your test/reproduction.
-->

# Checklist

<!--
Please check the appropriate items below if they apply to your diff.
-->

- [ ] I added a `changelog.md` entry and rebuilt the package sources
according to [this short
guide](https://github.com/expo/expo/blob/main/CONTRIBUTING.md#-before-submitting)
- [ ] This diff will work correctly for `npx expo prebuild` & EAS Build
(eg: updated a module plugin).
- [ ] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
# Why
The promises resolve after the test ends. A race condition caused
`writeContactToFileAsync` to throw an exception - contacts were deleted
before the function even started.

# How

Rewrite the test to use async/await properly and to run in isolation
from other tests.

# Test Plan

Tested on bare-expo
…42203)

# Why
Fixes an issue with adding a contact when a default account is set to
cloud:
`Cannot add contacts to local or SIM accounts when default account is
set to cloud`

The problem seems to occur only on pure Android - I reproduced it on
Google Pixel, while for example on Xiaomi it doesn't happen.
The cause is adding a contact with the account type/name hardcoded to
null, whereas those fields should be overwritten with the system default
type.

# How
Removes unnecessary hardcoded ACCOUNT_TYPE and ACCOUNT_NAME when
creating a contact. When they are not present, the system can create a
contact in its default location.

# Test Plan
Tested on BareExpo on Google Pixel 9 and Xiaomi Poco X3 Pro
@pull pull bot locked and limited conversation to collaborators Jan 16, 2026
@pull pull bot added the ⤵️ pull label Jan 16, 2026
@pull pull bot merged commit a5b0c32 into code:main Jan 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants