Skip to content

v1.0.0-alpha.10 — Native Places map

Choose a tag to compare

@NateIsern NateIsern released this 12 Apr 17:00
· 101 commits to main since this release

Native Places map rewrite

Map screen

  • Replaced MarkerView with native ShapeSource + CircleLayer + SymbolLayer — GPU-rendered pins with drop shadows, zoom-responsive radii, and text labels.
  • Switched camera centering to the documented fitBounds(ne, sw, [top, right, bottom, left], duration) path. The selected pin always lands in the visible upper portion of the screen above the bottom sheet.
  • Google-Maps-style interaction model:
    • Sticky floating search pill with deeper shadow.
    • Sticky category filter chips that pin below the title row.
    • Floating grab handle that scrolled rows pass behind (transparent overlay).
    • Smooth drag-synchronised top padding via Reanimated as the sheet expands behind the pill.
  • Replaced Alert.alert with a Bloom Prompt dialog for the location-denied path.
  • Added haptic feedback on marker / row selection and directions button.

Places data

  • Extended the Place model with minimumSpend, acceptsFairToFiat, localCurrency, fiatPayoutMethods, maxFiatPayout, openingHours.
  • New PlaceFacts block surfaces them inside the detail view.
  • Enriched all 16 seed places with realistic values.

Other

  • Migrated FlatListFlashList in contacts and language screens.
  • Replaced the deprecated BottomSheetFlashList wrapper with the documented useBottomSheetScrollableCreator hook.
  • Splash screen now uses the transparent adaptive-icon-foreground asset.

Test plan

  • Open map, verify pins render with category colors and text labels
  • Tap a pin, verify camera animates to it and detail sheet shows
  • Drag sheet up, verify smooth transition and search pill stays visible
  • Filter by category, verify pins and list update
  • Search for a place, verify sheet expands to full screen
  • Tap directions / call / website, verify they open correctly
  • Verify location-denied shows a Bloom Prompt (not native Alert)

🤖 Generated with Claude Code