|
| 1 | +--- |
| 2 | +title: "What’s New in the R–ArcGIS Bridge (Q1 2026)" |
| 3 | +authors: ["Josiah", "Martha", "Nick"] |
| 4 | +categories: ["R", "Developers", "ArcGIS Bridge"] |
| 5 | +--- |
| 6 | + |
| 7 | +<!-- Whats New - PR for doc site in what's new section (date, not version number), Blog should be more paragraphs about why users should care --> |
| 8 | + |
| 9 | +## Introduction |
| 10 | + |
| 11 | +The R–ArcGIS Bridge continues to grow as a powerful way to connect your R workflows with ArcGIS data, services, and analysis tools. This quarter brings major improvements across authentication, feature service editing, geoprocessing, Shiny integration, and developer ergonomics. Whether you're building reproducible data pipelines, interactive apps, or advanced spatial analyses, these updates make it easier than ever to work with your ArcGIS content directly from R. |
| 12 | + |
| 13 | +Below is a look at the most impactful enhancements across the R-ArcGIS Bridge. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## 🔐 Authentication & Identity |
| 18 | + |
| 19 | +### Interactive OAuth + Shiny App Login |
| 20 | +**Packages:** `{arcgisutils}` (dev) |
| 21 | + |
| 22 | +- New `auth_shiny()` and `oauth_provider_arcgis()` functions make it possible to authenticate users directly inside Shiny apps. |
| 23 | +- `{shinyOAuth}` is now a suggested dependency, enabling smoother integration with existing OAuth flows. |
| 24 | +- Token validation improvements in `arc_base_req()` ensure more reliable authenticated requests. |
| 25 | + |
| 26 | +### Portal & User Management Enhancements |
| 27 | +**Packages:** `{arcgisutils}` 0.4.0 |
| 28 | + |
| 29 | +- `arc_user_self()` retrieves metadata for the currently authenticated user. |
| 30 | +- New helpers for exploring your ArcGIS Enterprise portal: |
| 31 | + - `arc_portal_servers()` lists federated servers. |
| 32 | + - `arc_portal_users()` lists all users. |
| 33 | + - `arc_portal_resources()` lists file resources for a given item. |
| 34 | + - `arc_group_content()` and `arc_user_content()` fetch content listings. |
| 35 | + |
| 36 | +These updates make it far easier to build R workflows that understand *who* is logged in and *what* they have access to. |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +## 🗂️ Feature Services: Editing, Definitions & Attachments |
| 41 | + |
| 42 | +### Faster, Parallelized Feature Editing |
| 43 | +**Packages:** `{arcgislayers}` 0.5.0 |
| 44 | + |
| 45 | +- `update_features()` and `delete_features()` now run in parallel and operate in chunks for significantly improved performance on large datasets. |
| 46 | +- Both functions now return a `data.frame` instead of a list, simplifying downstream processing. |
| 47 | +- Improved error messaging when `objectid` fields are not integers. |
| 48 | + |
| 49 | +### New Attachment Editing |
| 50 | +**Packages:** `{arcgislayers}` 0.5.0 |
| 51 | + |
| 52 | +- `update_attachments()` lets you add, update, or delete attachments on feature services directly from R. |
| 53 | + |
| 54 | +### Layer & Service Definition Management |
| 55 | +**Packages:** `{arcgislayers}` 0.5.0 |
| 56 | + |
| 57 | +- New administrative helpers: |
| 58 | + - `add_definition()` |
| 59 | + - `update_definition()` |
| 60 | + - `delete_definition()` |
| 61 | + |
| 62 | +These functions make it possible to manage FeatureServer and FeatureLayer definitions programmatically. |
| 63 | + |
| 64 | +### Smarter Field Value Handling |
| 65 | +**Packages:** `{arcgislayers}` 0.5.1 |
| 66 | + |
| 67 | +- `encode_field_values(codes = "replace-valid")` now allows invalid coded values to be preserved. |
| 68 | +- Better handling of numeric coded value domains and range domains. |
| 69 | + |
| 70 | +### More Robust Layer Access |
| 71 | +**Packages:** `{arcgislayers}` 0.5.0–dev |
| 72 | + |
| 73 | +- `arc_open()` now accepts item IDs and a wider variety of ArcGIS URLs (items, users, groups, and more). |
| 74 | +- `get_layer()` now warns correctly on invalid layer names. |
| 75 | +- `arc_select()` returns an empty `data.frame` instead of `NULL` when no features match a query. |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## 🌐 Geoprocessing Services |
| 80 | + |
| 81 | +### First-Class GP Service Support |
| 82 | +**Packages:** `{arcgisutils}` 0.4.0 + dev |
| 83 | + |
| 84 | +- New S7 classes for interacting with geoprocessing services: |
| 85 | + - `arc_gp_job` |
| 86 | + - `arc_job_status` |
| 87 | + - `arc_form_params` |
| 88 | +- `gp_job_from_url()` creates a job object directly from a GP service URL. |
| 89 | +- New utilities for parsing and creating GP service JSON (`?gp_params`). |
| 90 | + |
| 91 | +These additions lay the groundwork for richer geoprocessing workflows entirely from R. |
| 92 | + |
| 93 | +--- |
| 94 | + |
| 95 | +## 🔍 Content Search & URL Utilities |
| 96 | + |
| 97 | +### Improved Item Search |
| 98 | +**Packages:** `{arcgisutils}` 0.4.0 |
| 99 | + |
| 100 | +- `search_item()` now includes automatic pagination, making it easier to retrieve large result sets. |
| 101 | + |
| 102 | +### URL Parsing & Type Detection |
| 103 | +**Packages:** `{arcgisutils}` 0.4.0 |
| 104 | + |
| 105 | +- Experimental helpers: |
| 106 | + - `arc_url_parse()` |
| 107 | + - `arc_url_type()` |
| 108 | + - `is_url()` |
| 109 | + |
| 110 | +These utilities help developers build more robust functions that accept a wide variety of ArcGIS URLs. |
| 111 | + |
| 112 | +--- |
| 113 | + |
| 114 | +## 🧭 Geocoding Improvements |
| 115 | + |
| 116 | +### Updated World Geocoder Interface |
| 117 | +**Packages:** `{arcgisgeocode}` 0.4.0 |
| 118 | + |
| 119 | +- The `world_geocoder` object has been replaced with the new `world_geocoder()` function. |
| 120 | +- Fixes issues with parsing geocoding results when certain fields are missing (#41, #42). |
| 121 | + |
| 122 | +--- |
| 123 | + |
| 124 | +## 🧱 Shiny UI Components with Calcite Design System |
| 125 | + |
| 126 | +### Expanded Calcite Component Library |
| 127 | +**Packages:** `{calcite}` (dev) |
| 128 | + |
| 129 | +The Calcite package continues to grow into a comprehensive UI toolkit for Shiny developers. New or improved components include: |
| 130 | + |
| 131 | +- **Layout containers:** `page_navbar()`, `page_sidebar()`, `page_actionbar()` |
| 132 | +- **Inputs:** |
| 133 | + `calcite_input_text()`, `calcite_input_number()`, `calcite_input_message()`, `calcite_select()`, `calcite_switch()` |
| 134 | +- **UI elements:** |
| 135 | + `calcite_action()`, `calcite_block()`, `calcite_tile()`, `calcite_tile_group()`, `calcite_slider()`, |
| 136 | + `calcite_segmented_control_item()`, `calcite_notice()`, `calcite_panel()`, `calcite_link()` |
| 137 | +- **Alerts:** |
| 138 | + `calcite_alert()`, `calcite_alert_info()`, `calcite_alert_warning()`, `calcite_alert_success()`, |
| 139 | + `calcite_alert_danger()`, `calcite_alert_brand()` |
| 140 | +- **Accordions:** |
| 141 | + `calcite_accordion()`, `calcite_accordion_item()` |
| 142 | + |
| 143 | +### Examples Included |
| 144 | + |
| 145 | +Use `open_example()` to explore new components, such as: |
| 146 | + |
| 147 | +- `inst/examples/calcite-accordion.R` |
| 148 | +- `inst/examples/calcite-action-button.R` |
| 149 | + |
| 150 | +These additions make it easier to build polished, accessible, ArcGIS‑styled Shiny apps. |
| 151 | + |
| 152 | +--- |
| 153 | + |
| 154 | +## 🧭 Routing (In Progress) |
| 155 | + |
| 156 | +### Early Routing Enhancements |
| 157 | +**Packages:** `{arcgisrouting}` (in progress) |
| 158 | + |
| 159 | +- Initial support for geoprocessing‑based routing workflows via `{arcgisutils}` GP service classes. |
| 160 | + |
| 161 | +More updates are expected in upcoming releases. |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## 🧭 Spatial Reference & Geometry Helpers |
| 166 | + |
| 167 | +**Packages:** `{arcgisutils}` (dev) |
| 168 | + |
| 169 | +- `from_envelope()` and `from_spatial_reference()` convert Esri JSON geometry objects into `sf` bbox objects. |
| 170 | + |
| 171 | +These utilities help bridge Esri geometry formats with the broader R spatial ecosystem. |
| 172 | + |
| 173 | +--- |
| 174 | + |
| 175 | +## 📦 Other Developer Experience Improvements |
| 176 | + |
| 177 | +- `{arcgislayers}` now requires **R 4.2+**. |
| 178 | +- `list_service_raster_fns()` is deprecated in favor of `list_raster_fns()`. |
| 179 | +- New `data_frame()` helper in `{arcgisutils}` creates tibble‑like output without requiring the tibble package. |
| 180 | + |
| 181 | +--- |
| 182 | + |
| 183 | +## What Should We Build Next? |
| 184 | + |
| 185 | +We’d love to hear what features would make your R + ArcGIS workflows even better. |
| 186 | +[Start a discussion](https://github.com/R-ArcGIS/arcgis/discussions/new?category=ideas) or open an issue on our GitHub repositories - your feedback helps shape our roadmap. |
| 187 | + |
| 188 | +And if you're attending the [**2026 Esri Developer & Technology Summit**](https://www.google.com/aclk?sa=L&ai=DChsSEwiQ1Z_A5KySAxUwl-4BHfTlGcwYACICCAEQABoCZHo&ae=2&co=1&ase=2&gclid=Cj0KCQiA4eHLBhCzARIsAJ2NZoLM-NEdt3SuDmNAr7eYNBFX9Q5q3c1WDUlZP0054cgX3nzjzsWDroYaAlDyEALw_wcB&cid=CAASWeRoaON6h_k6nRAv_8-euL4AfSMig4NTSNt6YfPAvDOG8cSAWiBYrmk8mOIlfoVgSqdJypOpQKkFr4UNDiaPPyqbytdvrTDiOT5U83Q-nAa5DAaBerGCpOnH&cce=2&category=acrcp_v1_71&sig=AOD64_0SOYLxUzhS8Wvu9USFCVRJ7WdCIQ&q&nis=4&adurl&ved=2ahUKEwjX3ZTA5KySAxWeKUQIHUkbIxgQ0Qx6BAgXEAE), come say hello. We’d love to show you what’s new and what’s coming next. |
| 189 | + |
0 commit comments