Releases: GeoNode/geonode
5.0.0
Release Notes
New Layout
GeoNode 5 introduces a completely redesigned layout aimed at improving usability, clarity, and visual consistency. The new interface offers a more intuitive navigation flow and a streamlined, modern look that enhances the user experience across the entire platform.
Beyond aesthetics, the redesigned layout enables a much higher degree of customization. Integrators and administrators can now easily compose custom pages and sections for individual projects, without requiring deep code-level changes. This flexible structure allows GeoNode to adapt smoothly to the specific workflows and branding needs of different deployments.
Metadata Engine and Editor
One of the most transformative changes in GeoNode 5 is the complete rewrite of the metadata engine and the metadata editor. The new system allows full customization of metadata schemas and validation rules without modifying GeoNode’s codebase or its internal models. All metadata behavior is now defined through configurable JSON Schemas, resulting in a cleaner, modular, and extensible metadata framework. You can find all the details and further information in the documentation.
This new design makes it easy to adapt standards such as ISO to specialized profiles. For example, the Italian INSPIRE profile (RNDT) has been fully rewritten using the new JSON Schema–based system, demonstrating the engine’s ability to support diverse and complex metadata standards.
GeoNode 5 also upgrades the PyCSW engine to version 3 Beta, opening the door for support of the new OGC APIs currently under development. GeoNode is now better positioned to integrate the next generation of interoperable geospatial services.
Dataset Replacement and Update
GeoNode 5 reintroduces the highly requested ability to replace datasets with newer versions. This feature is available for both vector and raster datasets, making it simple to update published data without duplicating or recreating resources.
Alongside replacement, the system now includes an experimental Update mode specifically designed for vector datasets. The functionality has been tested in several scenarios, but we wait to have it battle-tested in production environments before it can be considered a stable solution.
Update operations allow GeoNode to:
- update existing records,
- insert new records,
- and intelligently compare incoming data with existing data.
This comparison is based on a primary key, which by default is the FID field. GeoNode now automatically generates this field when a dataset is imported. To perform an update, the incoming dataset must contain the same primary key field so that GeoNode can match records correctly.
Notably:
- Updates work even if the incoming data is in a different vector format from the original dataset.
- Update operations fully support data validation, ensuring consistency and integrity.
Validation, Constraints, and Dataset Creation
Thanks to support introduced in GeoServer 2.27.3, it is now possible to define constraints on vector dataset fields, including numeric ranges and predefined lists of allowed values. GeoNode integrates these constraints as validation rules during dataset updates or replacement operations.
The newly rewritten dataset creation interface in GeoNode allows users to:
- define field constraints directly when creating a new dataset,
- have these constraints automatically propagated to GeoServer,
- enforce validation consistently across all data interactions, including manual edits in the attribute table.
For fields with enumerated values, the interface automatically shows dropdown menus. For numeric fields, values outside the defined range are blocked.
This significantly strengthens data quality management throughout the entire dataset lifecycle.
Permissions and Access Rules
GeoNode 5 introduces a new dynamic rule-based permission system that makes access control more flexible and customizable than ever. Access rules can now be defined using virtually any criteria — including temporal or contextual conditions — and custom rules can be added through plugins.
A new optional control has also been introduced to regulate whether resource editors are allowed to modify sharing permissions. Administrators can now restrict the ability to make resources public or share them broadly, ensuring that publication workflows remain properly supervised. When enabled, users who create resources cannot make them public until a staff member or administrator approves.
New Download Formats
This release adds two widely requested download formats: Excel and CSV. These formats offer greater flexibility for exporting tabular data, making it easier to analyse and share datasets using common spreadsheet tools or external systems.
MapStore Version Updates
Since GeoNode’s client is built on the MapStore framework, a major effort has been made during the development of GeoNode 5 to improve synchronisation between the two products. The client now follows MapStore’s release cycle much more closely.
As a result, GeoNode 5 includes all recent MapStore enhancements, including:
- new and improved mapping tools,
- updated and extended plugins,
- enhancements to GeoStories,
- significant improvements to dashboards and widget interactions.
This ensures a more feature-rich, modern, and consistent user experience across the client.
Asynchronous engine upgrade [Breaking Change]
GeoNode 5 also modernizes the way background tasks are executed by introducing Redis as the core component for Celery’s result backend and message handling. In previous versions, Celery relied on RabbitMQ as the broker and used the database to track task results. With GeoNode 5, Redis now manages both responsibilities, providing a much lighter and more efficient execution layer.
This shift brings several advantages. Long-running processes — such as harvesting remote services — become significantly more resilient, as Redis handles task state far more efficiently than the database. By reducing the workload on the main database, the overall performance and stability of the system improves, particularly under heavy or sustained asynchronous activity.
From an operational perspective, this migration also simplifies deployments: Redis is easier to configure, maintain, and monitor compared to a dedicated RabbitMQ service. As a result, the background processing pipeline becomes both cleaner and more scalable.
It is worth noting that this migration is the only breaking change that requires adjustments to deployment configurations when upgrading from GeoNode 4 to GeoNode 5. As outlined in the official Migration Guidelines, installations previously using RabbitMQ must update their environment settings to align with the new Redis-based configuration.
Enhanced Harvesting System Architecture
GeoNode 5 introduces several backend improvements that make the harvesting subsystem faster, more resilient, and easier to operate.
Harvesting often involves long-running operations. GeoNode 5 now applies dynamic task expiration, allowing Celery to adjust timeouts based on workload and execution context. This reduces premature failures and improves stability when interacting with slow or large remote services.
A new monitoring layer provides clearer insight into each step of the harvesting pipeline, from service discovery to metadata synchronization. This enhances troubleshooting, makes failures easier to interpret, and improves overall observability of long-running harvesting tasks.
Several internal steps in the harvesting process have been consolidated or optimized, reducing the number of Celery tasks and inter-process calls. These changes increase harvesting throughput, lower processing overhead, and improve scalability during intensive synchronization cycles.
Observable harvesting system
The harvesting subsystem has received several backend improvements in GeoNode 5, making it faster, more robust, and easier to operate.
Dynamic expiration of asynchronous tasks allows harvesting jobs to adapt to workload and execution context, reducing premature failures when dealing with slow or large remote services. A new monitoring layer provides clearer visibility into each step of the harvesting pipeline, improving troubleshooting and observability.
At the same time, internal workflow optimizations reduce the number of processing steps and Celery tasks involved, increasing throughput and scalability during intensive harvesting operations.
QGIS Plugin Update
The GeoNode QGIS plugin has been updated to version 2.1.0, now supporting both GeoNode 4 and 5. Support for GeoNode 3 has been deprecated. The new plugin is already available in the official QGIS Plugin Repository, ensuring seamless integration with the latest GeoNode capabilities.
Other Software Updates
Several underlying technologies have been updated to modern, secure, and well-supported versions:
- The standard Docker images are now based on Ubuntu 24.04, addressing numerous system-level security vulnerabilities.
- GeoNode now supports Python 3.12.
- The Django framework has been upgraded to version 5, ensuring long-term stability and compatibility with modern tooling.
- All legacy front-end libraries and unused components were removed from the front-end system to clean the codebase and simplify long-term maintenance
Full changelog
5.0.0 Milestone (2025-12-16)
4.4.4
4.4.3
4.4.2
Changelog
4.4.2 (2025-03-17)
Improvements:
- [#1917 (client)] Info panel for a dataset can be opened from the map's table of contents (TOC) in the context of a map
- [#1907 (client)] Backport of MapStore WMS adaptive legends for maps
- [#12872] Improved Entra ID configurations for IdP integration
- [#12815] Add Recaptcha support for GeoNode Sign-In Form
- [#12789] Improve handling of 3D Tiles index file names
- [#12847] Stop using Gravatar service as avatar icon fallback
- [#12828] Improved the handling of auto-registration of remote services inside Proxy allowed URLs
- [#12904] Allow editing Documents advertised flag inside the Django admin
Fixes
- [#12880] Fixed the download of 3DTiles assets
- [#12883] Fixed the passing of parameters from metadata parsers to metadata storers
- [#1937 (client)] Fixed the custom map layers setting panel for GeoNode local datasets not showing up
- [#1966 (client)] Fixed the assignement of new custom map layers styles to Geoserver layers
Upgrades
- Bumped to geoserver-restoconfig 2.0.13 which improves the handling of SLD 1.1.0 files.
- Updated MapStore to commit 092ecdfafb (branch
2024.02.xx)
4.4.1
Changelog
4.4.1 (2024-11-06)
Improvements:
- [#1879] Include fullscreen button in embed pages
Fixes
- [#12639] User defined permissions will break the permissions exposed by the API
- [#12651] Map extent calculation throws exception for empty maps
Upgrades
- Updated MapStore to commit 092ecdfafb (branch
2024.02.xx)that includes fixes to the handling of GetFeatureInfo results popup for Geostories
4.4.0
Changelog
4.4.0 (2024-10-09)
New features and improvements
-
3D Tiles: This release extends the work started with GeoNode 4.3.0, where 3D visualization was introduced. Now 3D Tiles resources are first-citizen resources in GeoNode. 3D Tiles assets can be uplaoded from the Dataset upload area. The asset must be uploaded as a .zip file containing an index file named
tileset.json. This file will be parsed by the GeoNode backend to validate and extract metadata and spatial information about the 3D Tiles asset.
3D Tiles resources can also be created from remote URLs. A new option inside the Dataset upload panel gives the option to insert the URL to the index file of an online 3D Tiles resource. The same as for local uploads, the index file will be parsed to obtain the minimal information to setup the GeoNode remote resources.
A new filter has been added for filtering 3D Tiles resources. -
Assets: With this version a new concept has landed into GeoNode, the Assets. This model has been introduced to extend and improve the relationship between resources and any file that exists behind them. These files was kind of hidden behind the scenes, and weren't exposed to the internal GeoNode APIs. Assets introduce a model that makes the management of fiels explicit and decoupled from resources. For the moment this isn't visible to end users, but in the future there are plans to implement an asset manager area, where files can be uploaded and managed independently from catalog resources. Eventually a resoruce can be created from an existing asset at a later stage. This is what GeoNode does now: when a new resource is uploaded, GeoNode creates an asset for the file(s) and then creates a resource connect to the asset(s) through Links.
Assets were also implemented to introduce the option to attach multiple files to a single resource. This is already doable by manually creating an asset and then connecting it to a resource through a link, but this is only doable from the Django admin interface, which is restricted to GeoNode administrators.
Notice that the uploaded files now are stored at the path configured by the newASSETS_FOLDERsettings. -
Map Extent: Map extents calculation has been fixed, finally! When a new map is created or updated the extent of the map is recalculated from the extent of its layers, taking into account the CRSs of the layers.
-
API: The is_published and is_approved attributes are writable now. They can be set inside PATCH requests, and the API will check the required authorizations for their modification (including the specific rules enforces by the advanced workflow mechanism).
Software upgrades:
- Django 4.2.9
- Geoserver 2.24.4
- MapStore 2024.02.00
- PostgreSQL >=12
Important note for the upgrade
GNIP 100: Assets introduces changes to the location where uploaded files are stored. A manual command must be executed to migrate pre-existing files to the new location and ensure that all GeoNode functionality will work correctly.
The full list of changes:
4.3.1
Changelog
4.3.1 (2024-07-19)
- Upgrade to Geoserver 2.24.4. The new version of Geoserver includes the fix for CVE-2024-36401
- 5ac3601: Fixed OSM tiles loading inside 3D views
- 8a2eaa5: Fixed autocomplete for the Group filter
- 750457b: A new regenerate_xml management command is available to regenerate the XML metadata files in batch
- 5ebe7fc: The restore of GWC tile layers during the Backup and Restore procedure has been moved to the
restore.shscript file. This grants that tile layer are recreated only after the catalogue resources have been completely restored - 7197e76: Fixed that layout of the
re-captchafield inside theSignUpandLogInpages - GeoNode/geonode-mapstore-client@676241e: A new "All Resource" button has been to added to viewers to let users navigate back to the full catalogue
- GeoNode/geonode-mapstore-client@8cdee07: Fixes a regression that removed the GeoNode catalogue from Dashboards and Geostories
The full list of changes here
4.3.0
Changelog
4.3.0 (2024-05-30)
New features and improvements
- 3D and MapSore catalog plugins available for maps: This release includes a major upgrade of the MapStore framework upon which the GeoNode client is built. One of the key benefits brought by the alignment to the latest MapStore versions, is the integration of new plugins powered by MapStore. Two of these plugins have been enabled by default for maps: 3D view, powered by Cesium and the Catalog tool which gives users the option to include external layers (from WMS, TMS, CSW, etc. services) directly into a map. The 3D view is the first step toward the publishing of 3D content with GeoNode. Meanwhile external 3D Tiles sources can already be viewed inside a GeoNode map thanks to the Catalog service for 3D Tiles.
- Map Viewers: Thanks again to the work done to extend the integration with MapStore, its concept of Application Contexts have been adapted and integrated in GeoNode under the the name "Map Viewers". With a Map Viewer the list of tools and plugins available in a map can be configured. Map Viewers can be created from a map (the feature is available under the Edit menu) and they can be used by multiple maps. With Map Viewers all the plugins offered by MapStore can be used inside GeoNode maps.
- Hiding resources from catalog listing: There are cases where a resource is created only to be used within other resources. Images uploaded to be included in a geostory, datasets only meant to be viewed inside maps, are examples. Sometimes we don't want these resoruces to be visibile inside the catalog list, or inside search results. For these cases a new "Advertized" attribute is available under the Settings tab of the Metadata editor. When this flag is turned off the resource will only be listed to its owner. This doesn't affect the permissions on the resource. Users with view permissions can still visualize the resource, but it won't be listed in the catalog to them.
- Extended Users API: The User API has been extended to support the full management of GeoNode accounts. This API makes GeoNode compliant with the Data policies that request to give users the option to delete their account and their data from apps. The new APIs also support the transfer of resource ownership to another user and the ability to step down from the Group Manager role for a user.
- Groups facet: A new facet (filter) has been added to the filters panel for filtering resources by Group.
Other minor improvements and fixes
- Backup/Restore: Several improvements that make the B/R service more robust and performant. Code customizations (layouts, etc.) are excluded now from projects backups.
- Owner was update when geoapp were saved: This fixes a problem with geoapps (geostories and dashboards) where the current user was assigned as owner when the resource was saved.
- Fixed textara for rich HTML metadata fields: It wasn't editable due to a regression introduced in previous versions.
- Metadata and SLD file uploads: Fixed a problem with the legacy code that prevented the upload of XML and SLD metadata files for an existing resource.
!! IMPORTANT !! Breaking change
The minimum supported version for PostgreSQL is 12. If you have a previous version installed you will need to perform a backup and restore procedure od the DB.
Software upgrades:
- Django 4.2.9
- Geoserver 2.24.3
- MapStore 2024.01.00
- PostgreSQL >=12
The full list of changes here
4.2.5
What's Changed
- Bump 4.2.x to dev by @giohappy in #12212
- [Backport 4.2.x] [Fixes #12237] Extend tests for permissions assignment by @github-actions in #12264
- [Backport 4.2.x] [Fixes #12261] Current user is assigned as owner on geoapp update by @github-actions in #12265
- Release 4.2.5 by @giohappy in #12289
Full Changelog: 4.2.4...4.2.5