2.0.0 - 22-01-2026
Major breaking release with significant architectural improvements and API changes. See UPGRADE.md for migration guide.
Added
New weather and forecast APIs: current_weather, one_call, forecast_5day, forecast_hourly, forecast_16day, historical
Air quality APIs with pollution data and forecasts: air_pollution, air_pollution_forecast, air_pollution_history
Geocoding APIs to convert between location names and coordinates: geocode, reverse_geocode
Explicit batch functions with *_batch suffix for concurrent multi-location requests
Location validation via ExOwm.Location module with constructors: by_city, by_coords, by_id, by_zip
Telemetry support with [:ex_owm, :request, :start] and [:ex_owm, :request, :stop] events
Configurable cache TTL per endpoint with per-request overrides
Optional caching - can be disabled via :cache_enabled config (enabled by default)
Modern HTTP client using Req instead of HTTPoison for better retry and telemetry
Consistent error tuples with detailed feedback
Upgrade guide in UPGRADE.md with migration examples
Changed
Breaking changes:
get_weather renamed to one_call for API clarity
Single location requests return {:ok, data} instead of [{:ok, data}]
Batch requests require explicit *_batch function calls
All Coordinator GenServers removed - simplified to direct function calls
Worker modules unified into ExOwm.Client
HTTPoison replaced with Req
Improvements:
Error tuples are now consistent (always 2 or 3 elements)
Location maps still work but ExOwm.Location constructors recommended
Simplified supervision tree - only Cache supervised
Removed ~400 lines of code for better maintainability
Deprecated
Old v1.x function names (will be removed in v3.0.0):
get_current_weather/2 - Use current_weather/2 or current_weather_batch/2
get_weather/2 - Use one_call/2 or one_call_batch/2
get_five_day_forecast/2 - Use forecast_5day/2 or forecast_5day_batch/2
get_hourly_forecast/2 - Use forecast_hourly/2 or forecast_hourly_batch/2
get_sixteen_day_forecast/2 - Use forecast_16day/2 or forecast_16day_batch/2
get_historical_weather/2 - Use historical/2 or historical_batch/2
OpenWeatherMap deprecated APIs:
one_call/2 and one_call_batch/2 - One Call API 2.5 deprecated by OpenWeatherMap in June 2024. Consider using specific endpoint APIs instead.
historical/2 and historical_batch/2 - Historical data via One Call API 2.5 deprecated. Use air_pollution_history for air quality historical data.
All deprecated functions currently work with deprecation warnings.
Removed
ExOwm.Supervisor module - replaced by inline supervision in Application
All ExOwm.*Weather.Coordinator modules - 6 GenServers removed
All ExOwm.*Weather.Worker modules - 6 modules removed
ExOwm.WorkerHelper module - functionality moved to Client
Direct GenServer access - use main ExOwm module functions
Migration Path
Minimal changes (keep using deprecated API):
# Your v1.x code continues to work with deprecation warnings
ExOwm.get_current_weather([%{city: "Warsaw"}])
# => Warning: deprecated, use current_weather_batch insteadRecommended migration:
# Before
ExOwm.get_current_weather([%{city: "Warsaw"}], units: :metric)
# => [{:ok, data}]
# After
location = ExOwm.Location.by_city("Warsaw")
ExOwm.current_weather(location, units: :metric)
# => {:ok, data}See UPGRADE.md for complete migration guide with all patterns.
Technical Details
Architecture Changes:
- Removed 6 stateless Coordinator GenServers that added no value
- Removed 6 duplicate Worker modules (240 lines of duplicated code)
- Unified request logic into single
ExOwm.Clientmodule - Direct Task.async_stream for concurrent requests (no GenServer indirection)
- Simplified supervision tree from 7 processes to 1 (Cache)
Dependencies:
- Added:
req ~> 0.5(modern HTTP client) - Added:
telemetry ~> 1.0(observability) - Removed:
httpoison(replaced by Req)
Performance:
- Reduced process overhead (no unnecessary GenServer serialization)
- Better concurrent request handling with Task.async_stream
- Smart default TTL per endpoint type
- Maintained backward compatibility for smooth migration
1.1.1 - 16-12-2018
Added
- Formatter and changelog files.Modified
- Split coordinator into separate GenServer processes.
- Re-factor and re-name main modules.
- Format whole project.