<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic ServiceFeatureTable.populateFromService silently returns 0 features when returnGeometry=false + spatial filter in Kotlin Maps SDK Questions</title>
    <link>https://community.esri.com/t5/kotlin-maps-sdk-questions/servicefeaturetable-populatefromservice-silently/m-p/1703559#M647</link>
    <description>&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;FeatureRequestMode.ManualCache&lt;/STRONG&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ServiceFeatureTable.populateFromService(...)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;with a spatial predicate (&lt;/SPAN&gt;&lt;STRONG&gt;geometry&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;+&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;spatialRelationship&lt;/STRONG&gt;&lt;SPAN&gt;) silently drops every server-returned feature when&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;returnGeometry = false&lt;/STRONG&gt;&lt;SPAN&gt;. The SDK appears to re-apply the spatial filter locally against the just-cached rows; those rows carry null geometry because the SDK itself requested&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;returnGeometry=false&lt;/STRONG&gt;&lt;SPAN&gt;; a local&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;intersects(envelope, null)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;returns false for every row, so the cache evaluates to empty even though the server replied with the correct features. No exception, no log warning.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;How to reproduce&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Layer&lt;/TD&gt;&lt;TD width="50%"&gt;URL&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Forests&lt;/TD&gt;&lt;TD width="50%"&gt;&lt;A href="https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3" target="_blank" rel="noopener"&gt;https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Sites&lt;/TD&gt;&lt;TD width="50%"&gt;&lt;A href="https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0" target="_blank" rel="noopener"&gt;https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Both support&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;esriSpatialRelIntersects&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;esriSpatialRelEnvelopeIntersects&lt;/STRONG&gt;&lt;SPAN&gt;. Both queryable anonymously.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;REST Baseline&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;GET https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3/query
  ?where=1=1
  &amp;amp;geometry=-122.3,44.7,-121.4,45.7
  &amp;amp;geometryType=esriGeometryEnvelope
  &amp;amp;inSR=4326
  &amp;amp;spatialRel=esriSpatialRelEnvelopeIntersects
  &amp;amp;outFields=OBJECTID,COMMONNAME
  &amp;amp;returnGeometry=false
  &amp;amp;f=json&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Returns 4 features:&lt;/P&gt;&lt;P&gt;OBJECTID COMMONNAME&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;61961&lt;/TD&gt;&lt;TD&gt;Gifford Pinchot National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61964&lt;/TD&gt;&lt;TD&gt;Mt. Hood National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61972&lt;/TD&gt;&lt;TD&gt;Willamette National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61974&lt;/TD&gt;&lt;TD&gt;Columbia River Gorge National Scenic Area&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sites (point) — Trillium Lake area inside Mt. Hood NF.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Bbox&amp;nbsp;&lt;/SPAN&gt;-121.80,45.20,-121.65,45.30&lt;SPAN&gt;&amp;nbsp;(WGS84).&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;GET https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0/query
  ?where=1=1
  &amp;amp;geometry=-121.80,45.20,-121.65,45.30
  &amp;amp;geometryType=esriGeometryEnvelope
  &amp;amp;inSR=4326
  &amp;amp;spatialRel=esriSpatialRelEnvelopeIntersects
  &amp;amp;outFields=OBJECTID,PUBLIC_SITE_NAME
  &amp;amp;returnGeometry=false
  &amp;amp;f=json&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Returns 10 features: Pioneer Woman's Grave Trailhead, Jackpot Meadows, Trillium Lake Campground, Trillium Lake Day Use Area, Barlow Pass Snow Park &amp;amp; Trailhead, Snow Bunny Sliding Area Sno-Park, Frog Lake Snow Park &amp;amp; Trailhead, Devils Half Acre, Trillium Snow Park, Frog Lake Campground.&lt;/P&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;SDK reproducer — minimal standalone&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;The reproducer below uses only the public SDK API. It can be dropped into a fresh Android project's&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;MainActivity.onCreate&amp;nbsp;(with&amp;nbsp;viewModelScope.launch { ... })&lt;/STRONG&gt; and run against the URLs above.&lt;/P&gt;&lt;LI-CODE lang="kotlin"&gt;import com.arcgismaps.data.FeatureRequestMode
import com.arcgismaps.data.QueryParameters
import com.arcgismaps.data.ServiceFeatureTable
import com.arcgismaps.data.SpatialRelationship
import com.arcgismaps.geometry.Envelope
import com.arcgismaps.geometry.SpatialReference

suspend fun reproduce(serviceUrl: String, envelope: Envelope, outFields: List&amp;lt;String&amp;gt;) {
    for (returnGeometry in listOf(false, true)) {
        val table = ServiceFeatureTable(serviceUrl).apply {
            featureRequestMode = FeatureRequestMode.ManualCache
        }
        table.load().getOrThrow()
        val params = QueryParameters().apply {
            whereClause = "1=1"
            this.returnGeometry = returnGeometry
            geometry = envelope
            spatialRelationship = SpatialRelationship.Intersects // SDK coerces to EnvelopeIntersects for an Envelope input
        }
        val features = table.populateFromService(
            parameters = params,
            clearCache = true,
            outFields = outFields
        ).getOrThrow().toList()
        println("$serviceUrl  returnGeometry=$returnGeometry  → ${features.size} feature(s)")
    }
}

// Forests (polygon, expect 4)
reproduce(
    "https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3",
    Envelope(-122.3, 44.7, -121.4, 45.7, SpatialReference.wgs84()),
    listOf("OBJECTID", "COMMONNAME")
)
// Sites (point, expect 10)
reproduce(
    "https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0",
    Envelope(-121.80, 45.20, -121.65, 45.30, SpatialReference.wgs84()),
    listOf("OBJECTID", "PUBLIC_SITE_NAME")
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;Observed delta&lt;/STRONG&gt; — deterministic one-flag reproducer (verified 2026-05-21 against SDK 200.8.0 and 300.0.0 on Android 16, emulator arm64-v8a)&lt;/DIV&gt;&lt;P&gt;Same code path, same envelope; only&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;QueryParameters.returnGeometry&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;changes.&lt;/P&gt;&lt;P&gt;Layer returnGeometry SDK 200.8.0 result SDK 300.0.0 result Server response (HTTP 200)&lt;/P&gt;&lt;TABLE width="745px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;Layer&lt;/TD&gt;&lt;TD width="44.0312px"&gt;returnGeometry&lt;/TD&gt;&lt;TD width="154.828px"&gt;SDK 200.8&lt;/TD&gt;&lt;TD width="154.828px"&gt;SDK 300.0&lt;/TD&gt;&lt;TD width="141.75px"&gt;Server Response&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/3 — forests, polygon&lt;/TD&gt;&lt;TD width="44.0312px"&gt;false&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;4 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/3 — forests, polygon&lt;/TD&gt;&lt;TD width="44.0312px"&gt;true&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;4 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;4 features&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;4 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/0 — sites, point&lt;/TD&gt;&lt;TD width="44.0312px"&gt;false&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;10 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/0 — sites, point&lt;/TD&gt;&lt;TD width="44.0312px"&gt;true&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;10 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;10 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;10 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Server returns the correct features in all eight runs. With&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;returnGeometry = false&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;the SDK silently filters them all out before returning to the caller. No exception, no log warning.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;The bug is unchanged between 200.8.0 and the most recent 300.0.0 release.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SDK result counts pasted from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SdkBugReproducer&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;logcat output; server responses verified by&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SdkRequestCaptureInterceptor&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;wire capture (see verbatim excerpts below).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Verbatim wire capture — forests layer,&amp;nbsp;returnGeometry=false&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;SdkRequestCapture: → Get https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3/query
  hdr User-Agent: ArcGISMaps-Kotlin/200.8.0 (Android 16.0; arm64-v8a; GOOGLE-SDK_GPHONE64_ARM64) gov.usda.fs.nfg.dev
  params:
    f=json
    geometry={"xmin":-122.3,"ymin":44.700000000000003,"xmax":-121.40000000000001,"ymax":45.700000000000003}
    geometryType=esriGeometryEnvelope
    inSR=4326
    outFields=OBJECTID,COMMONNAME
    outSR=3857
    returnDistinctValues=false
    returnGeometry=false
    returnM=true
    returnZ=true
    spatialRel=esriSpatialRelEnvelopeIntersects
    where=1=1
SdkRequestCapture: ← code=200
  body: {"objectIdFieldName":"OBJECTID",…,"features":[
    {"attributes":{"OBJECTID":61961,"COMMONNAME":"Gifford Pinchot National Forest"}},
    {"attributes":{"OBJECTID":61964,"COMMONNAME":"Mt. Hood National Forest"}},
    {"attributes":{"OBJECTID":61974,"COMMONNAME":"Columbia River Gorge National Scenic Area"}},
    {"attributes":{"OBJECTID":61972,"COMMONNAME":"Willamette National Forest"}}
  ]}
SdkBugReproducer: returnGeometry=false → 0 feature(s) in 248ms (REST baseline 4)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The server returned 4 features. The SDK delivered 0 features to its caller.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;With&amp;nbsp;&lt;STRONG&gt;returnGeometry=true&lt;/STRONG&gt;&amp;nbsp;flipped (next run, ~200 ms later), the SDK delivered all 4 features:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;SdkBugReproducer: returnGeometry=true → 4 feature(s) in 254ms (REST baseline 4)
  OBJECTID=61961  COMMONNAME=Gifford Pinchot National Forest
  OBJECTID=61964  COMMONNAME=Mt. Hood National Forest
  OBJECTID=61972  COMMONNAME=Willamette National Forest
  OBJECTID=61974  COMMONNAME=Columbia River Gorge National Scenic Area&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 21 May 2026 19:13:19 GMT</pubDate>
    <dc:creator>BenHaas4</dc:creator>
    <dc:date>2026-05-21T19:13:19Z</dc:date>
    <item>
      <title>ServiceFeatureTable.populateFromService silently returns 0 features when returnGeometry=false + spatial filter</title>
      <link>https://community.esri.com/t5/kotlin-maps-sdk-questions/servicefeaturetable-populatefromservice-silently/m-p/1703559#M647</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;FeatureRequestMode.ManualCache&lt;/STRONG&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ServiceFeatureTable.populateFromService(...)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;with a spatial predicate (&lt;/SPAN&gt;&lt;STRONG&gt;geometry&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;+&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;spatialRelationship&lt;/STRONG&gt;&lt;SPAN&gt;) silently drops every server-returned feature when&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;returnGeometry = false&lt;/STRONG&gt;&lt;SPAN&gt;. The SDK appears to re-apply the spatial filter locally against the just-cached rows; those rows carry null geometry because the SDK itself requested&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;returnGeometry=false&lt;/STRONG&gt;&lt;SPAN&gt;; a local&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;intersects(envelope, null)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;returns false for every row, so the cache evaluates to empty even though the server replied with the correct features. No exception, no log warning.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;How to reproduce&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE border="1" width="100%"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Layer&lt;/TD&gt;&lt;TD width="50%"&gt;URL&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Forests&lt;/TD&gt;&lt;TD width="50%"&gt;&lt;A href="https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3" target="_blank" rel="noopener"&gt;https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="50%"&gt;Sites&lt;/TD&gt;&lt;TD width="50%"&gt;&lt;A href="https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0" target="_blank" rel="noopener"&gt;https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Both support&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;esriSpatialRelIntersects&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;and&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;esriSpatialRelEnvelopeIntersects&lt;/STRONG&gt;&lt;SPAN&gt;. Both queryable anonymously.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;REST Baseline&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;GET https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3/query
  ?where=1=1
  &amp;amp;geometry=-122.3,44.7,-121.4,45.7
  &amp;amp;geometryType=esriGeometryEnvelope
  &amp;amp;inSR=4326
  &amp;amp;spatialRel=esriSpatialRelEnvelopeIntersects
  &amp;amp;outFields=OBJECTID,COMMONNAME
  &amp;amp;returnGeometry=false
  &amp;amp;f=json&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Returns 4 features:&lt;/P&gt;&lt;P&gt;OBJECTID COMMONNAME&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;61961&lt;/TD&gt;&lt;TD&gt;Gifford Pinchot National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61964&lt;/TD&gt;&lt;TD&gt;Mt. Hood National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61972&lt;/TD&gt;&lt;TD&gt;Willamette National Forest&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;61974&lt;/TD&gt;&lt;TD&gt;Columbia River Gorge National Scenic Area&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sites (point) — Trillium Lake area inside Mt. Hood NF.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Bbox&amp;nbsp;&lt;/SPAN&gt;-121.80,45.20,-121.65,45.30&lt;SPAN&gt;&amp;nbsp;(WGS84).&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;GET https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0/query
  ?where=1=1
  &amp;amp;geometry=-121.80,45.20,-121.65,45.30
  &amp;amp;geometryType=esriGeometryEnvelope
  &amp;amp;inSR=4326
  &amp;amp;spatialRel=esriSpatialRelEnvelopeIntersects
  &amp;amp;outFields=OBJECTID,PUBLIC_SITE_NAME
  &amp;amp;returnGeometry=false
  &amp;amp;f=json&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Returns 10 features: Pioneer Woman's Grave Trailhead, Jackpot Meadows, Trillium Lake Campground, Trillium Lake Day Use Area, Barlow Pass Snow Park &amp;amp; Trailhead, Snow Bunny Sliding Area Sno-Park, Frog Lake Snow Park &amp;amp; Trailhead, Devils Half Acre, Trillium Snow Park, Frog Lake Campground.&lt;/P&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;SDK reproducer — minimal standalone&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;The reproducer below uses only the public SDK API. It can be dropped into a fresh Android project's&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;MainActivity.onCreate&amp;nbsp;(with&amp;nbsp;viewModelScope.launch { ... })&lt;/STRONG&gt; and run against the URLs above.&lt;/P&gt;&lt;LI-CODE lang="kotlin"&gt;import com.arcgismaps.data.FeatureRequestMode
import com.arcgismaps.data.QueryParameters
import com.arcgismaps.data.ServiceFeatureTable
import com.arcgismaps.data.SpatialRelationship
import com.arcgismaps.geometry.Envelope
import com.arcgismaps.geometry.SpatialReference

suspend fun reproduce(serviceUrl: String, envelope: Envelope, outFields: List&amp;lt;String&amp;gt;) {
    for (returnGeometry in listOf(false, true)) {
        val table = ServiceFeatureTable(serviceUrl).apply {
            featureRequestMode = FeatureRequestMode.ManualCache
        }
        table.load().getOrThrow()
        val params = QueryParameters().apply {
            whereClause = "1=1"
            this.returnGeometry = returnGeometry
            geometry = envelope
            spatialRelationship = SpatialRelationship.Intersects // SDK coerces to EnvelopeIntersects for an Envelope input
        }
        val features = table.populateFromService(
            parameters = params,
            clearCache = true,
            outFields = outFields
        ).getOrThrow().toList()
        println("$serviceUrl  returnGeometry=$returnGeometry  → ${features.size} feature(s)")
    }
}

// Forests (polygon, expect 4)
reproduce(
    "https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3",
    Envelope(-122.3, 44.7, -121.4, 45.7, SpatialReference.wgs84()),
    listOf("OBJECTID", "COMMONNAME")
)
// Sites (point, expect 10)
reproduce(
    "https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/0",
    Envelope(-121.80, 45.20, -121.65, 45.30, SpatialReference.wgs84()),
    listOf("OBJECTID", "PUBLIC_SITE_NAME")
)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;STRONG&gt;Observed delta&lt;/STRONG&gt; — deterministic one-flag reproducer (verified 2026-05-21 against SDK 200.8.0 and 300.0.0 on Android 16, emulator arm64-v8a)&lt;/DIV&gt;&lt;P&gt;Same code path, same envelope; only&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;QueryParameters.returnGeometry&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;changes.&lt;/P&gt;&lt;P&gt;Layer returnGeometry SDK 200.8.0 result SDK 300.0.0 result Server response (HTTP 200)&lt;/P&gt;&lt;TABLE width="745px"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;Layer&lt;/TD&gt;&lt;TD width="44.0312px"&gt;returnGeometry&lt;/TD&gt;&lt;TD width="154.828px"&gt;SDK 200.8&lt;/TD&gt;&lt;TD width="154.828px"&gt;SDK 300.0&lt;/TD&gt;&lt;TD width="141.75px"&gt;Server Response&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/3 — forests, polygon&lt;/TD&gt;&lt;TD width="44.0312px"&gt;false&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;4 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/3 — forests, polygon&lt;/TD&gt;&lt;TD width="44.0312px"&gt;true&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;4 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;4 features&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;4 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/0 — sites, point&lt;/TD&gt;&lt;TD width="44.0312px"&gt;false&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;0 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;10 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD width="248.562px"&gt;FeatureServer/0 — sites, point&lt;/TD&gt;&lt;TD width="44.0312px"&gt;true&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;10 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="154.828px"&gt;&lt;STRONG&gt;10 features&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD width="141.75px"&gt;10 features in body&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Server returns the correct features in all eight runs. With&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;returnGeometry = false&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;the SDK silently filters them all out before returning to the caller. No exception, no log warning.&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;The bug is unchanged between 200.8.0 and the most recent 300.0.0 release.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SDK result counts pasted from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SdkBugReproducer&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;logcat output; server responses verified by&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SdkRequestCaptureInterceptor&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;wire capture (see verbatim excerpts below).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Verbatim wire capture — forests layer,&amp;nbsp;returnGeometry=false&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;SdkRequestCapture: → Get https://services1.arcgis.com/gGHDlz6USftL5Pau/ArcGIS/rest/services/FS_Recreation_One_App_Online_View/FeatureServer/3/query
  hdr User-Agent: ArcGISMaps-Kotlin/200.8.0 (Android 16.0; arm64-v8a; GOOGLE-SDK_GPHONE64_ARM64) gov.usda.fs.nfg.dev
  params:
    f=json
    geometry={"xmin":-122.3,"ymin":44.700000000000003,"xmax":-121.40000000000001,"ymax":45.700000000000003}
    geometryType=esriGeometryEnvelope
    inSR=4326
    outFields=OBJECTID,COMMONNAME
    outSR=3857
    returnDistinctValues=false
    returnGeometry=false
    returnM=true
    returnZ=true
    spatialRel=esriSpatialRelEnvelopeIntersects
    where=1=1
SdkRequestCapture: ← code=200
  body: {"objectIdFieldName":"OBJECTID",…,"features":[
    {"attributes":{"OBJECTID":61961,"COMMONNAME":"Gifford Pinchot National Forest"}},
    {"attributes":{"OBJECTID":61964,"COMMONNAME":"Mt. Hood National Forest"}},
    {"attributes":{"OBJECTID":61974,"COMMONNAME":"Columbia River Gorge National Scenic Area"}},
    {"attributes":{"OBJECTID":61972,"COMMONNAME":"Willamette National Forest"}}
  ]}
SdkBugReproducer: returnGeometry=false → 0 feature(s) in 248ms (REST baseline 4)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The server returned 4 features. The SDK delivered 0 features to its caller.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;With&amp;nbsp;&lt;STRONG&gt;returnGeometry=true&lt;/STRONG&gt;&amp;nbsp;flipped (next run, ~200 ms later), the SDK delivered all 4 features:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;SdkBugReproducer: returnGeometry=true → 4 feature(s) in 254ms (REST baseline 4)
  OBJECTID=61961  COMMONNAME=Gifford Pinchot National Forest
  OBJECTID=61964  COMMONNAME=Mt. Hood National Forest
  OBJECTID=61972  COMMONNAME=Willamette National Forest
  OBJECTID=61974  COMMONNAME=Columbia River Gorge National Scenic Area&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 May 2026 19:13:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/kotlin-maps-sdk-questions/servicefeaturetable-populatefromservice-silently/m-p/1703559#M647</guid>
      <dc:creator>BenHaas4</dc:creator>
      <dc:date>2026-05-21T19:13:19Z</dc:date>
    </item>
  </channel>
</rss>

