{"id":2964670,"date":"2026-05-13T08:00:40","date_gmt":"2026-05-13T15:00:40","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2964670"},"modified":"2026-05-14T13:56:33","modified_gmt":"2026-05-14T20:56:33","slug":"whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","title":{"rendered":"What&#8217;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0"},"author":359632,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191],"tags":[780803,38851,27971,28391],"industry":[],"product":[769142,776202,768902,769152,768912,36601],"class_list":["post-2964670","blog","type-blog","status-publish","format-standard","hentry","category-developers","tag-arcgis-maps-sdk-for-native-maps","tag-developers","tag-editing","tag-geometry","product-sdk-net","product-sdk-flutter","product-sdk-kotlin","product-sdk-qt","product-sdk-swift","product-developers"],"acf":{"authors":[{"ID":359632,"user_firstname":"Hamish","user_lastname":"Duff","nickname":"Hamish Duff","user_nicename":"hduff","display_name":"Hamish Duff","user_email":"hduff@esri.com","user_url":"","user_registered":"2024-07-26 10:03:08","user_description":"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/07\/99325835-213x200.jpeg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"short_description":"Discover how release 300.0 of the Native Maps SDKs improves curve handling editing experiences in connected and offline environments.","flexible_content":[{"acf_fc_layout":"content","content":"<p>True curve geometries are an essential part of many datasets for land parcels, transport infrastructure and utility networks. They are used in workflows where curved features such as roads, rivers, and pipelines must be represented accurately.<\/p>\n<p>Over the past few months, the ArcGIS system has expanded support for creating and editing true curves. ArcGIS Pro has long supported these workflows, and in February that support also expanded to the <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/web-editor\/announcements\/whats-new-in-arcgis-web-editor-february-2026\">ArcGIS Web Editor<\/a>, <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/announcements\/whats-new-in-map-viewer-february-2026\">Map Viewer<\/a>, and the <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/announcements\/arcgis-maps-sdk-for-javascript-whats-new-in-5-0\">ArcGIS Maps SDK for JavaScript<\/a>.<\/p>\n<p>As <a href=\"https:\/\/developers.arcgis.com\/net\/geometry-and-spatial-reference\/geometry\/#true-curves\">true curves<\/a> become more common across the platform, Native Maps SDK 300.0 strengthens its support for mobile and desktop developers. This blog summarizes what has changed and what it means for your apps.<\/p>\n<p>Note: While this blog\u2019s content applies to all platforms in Native Maps SDKs (Kotlin, Qt, Swift, Flutter, and .NET), the code snippets are from .NET.<\/p>\n"},{"acf_fc_layout":"content","content":"<ol>\n<li><a href=\"#true_curve_clients_by_default\">True curve clients by default<\/a>\n<ol style=\"list-style-type: lower-alpha;padding-left: 20px\">\n<li><a href=\"#true_curves_vs_densified_curves\">True curves vs densified curves<\/a><\/li>\n<li><a href=\"#what_makes_true_curve_client\">What makes an app a true curve client?<\/a><\/li>\n<li><a href=\"#what_does_this_mean_for_you\">What does this mean for you?<\/a><\/li>\n<li><a href=\"#when_do_you_need_to_take_extra_care\">When do you need to take extra care?<\/a><\/li>\n<li><a href=\"#when_not_true_curve_client\">When might you want to choose not to be a true curve client?<\/a><\/li>\n<li><a href=\"#service_policy_client_mode\">How true curve editing is determined by feature service settings and client mode<\/a><\/li>\n<\/ol>\n<\/li>\n<li><a href=\"#true_curves_offline_replicas\">True curves in offline replicas<\/a><\/li>\n<li><a href=\"#editing_true_curves_with_geometryeditor\">Editing true curves with GeometryEditor<\/a><\/li>\n<li><a href=\"#supported_curve_types\">Supported curve types<\/a><\/li>\n<li><a href=\"#true_curves_3d_scenes\">True curves in 3D scenes<\/a><\/li>\n<li><a href=\"#summary\">Summary<\/a><\/li>\n<\/ol>\n<h2 id=\"true_curve_clients_by_default\">True curve clients by default<\/h2>\n<p>In release 300.0, we changed the default behavior of <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.ServiceCurveGeometryMode.html\">ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/a>. Previously, the default value was <code>DensifyCurves<\/code>. It is now <code>TrueCurveClient<\/code>.<\/p>\n<h3 id=\"true_curves_vs_densified_curves\">True curves vs densified curves<\/h3>\n<p>A densified curve uses connected line segments to approximate a curve (curve can look segmented and non-smooth). A true curve uses a mathematically defined arc and is smooth.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3 id=\"what_makes_true_curve_client\">What makes an app a true curve client?<\/h3>\n<p>A true curve client is an app that <strong>retrieves<\/strong> and <strong>preserves<\/strong> <strong>true curve geometries<\/strong> when working with feature services.<\/p>\n<p>When your app has <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> set to <code>TrueCurveClient<\/code> it can update true curve geometries when the service&#8217;s <code>ArcGISFeatureServiceInfo.OnlyAllowTrueCurveUpdatesByTrueCurveClients<\/code> is <code>true<\/code>. When this property is <code>false<\/code>, the service allows updates from all clients.<\/p>\n<p>With a true curve client, features with true curves can be edited or replaced with straight segments, so apps should ensure these edits are intentional and appropriate for the dataset.<\/p>\n<h3 id=\"what_does_this_mean_for_you\">What does this mean for you?<\/h3>\n<p>By default, apps now retrieve true curves and act as true curve clients when editing feature services where true curves are supported. This means that mobile geodatabases and map packages also preserve curves when generated.<\/p>\n<p>Your app, by default, meets the requirement for editing feature services where <code>ArcGISFeatureServiceInfo.OnlyAllowTrueCurveUpdatesByTrueCurveClients<\/code> is <code>true<\/code>.<\/p>\n<p>If editing services where this property is <code>false<\/code>, as an app developer you can decide whether you need to adjust your code to account for true curves being fetched, and preserve true curves in editing workflows, if you think it&#8217;s appropriate.<\/p>\n<h3 id=\"when_do_you_need_to_take_extra_care\">When do you need to take extra care?<\/h3>\n<p>By default, your app behaves as a true curve client because <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> is set to <code>TrueCurveClient<\/code>. Unless you explicitly set this to <code>DensifyCurves<\/code>, your app can update true curve geometries. Because of this, <strong>it is important<\/strong> to review editing workflows and <strong>prevent changes that might unintentionally replace true curves with densified ones<\/strong>. If you work with services where true curve geometries are important, consider adding safeguards such as confirmation prompts and undo support.<\/p>\n<p>Be especially careful when using <a href=\"https:\/\/developers.arcgis.com\/net\/geometry-and-spatial-reference\/work-with-geometry\/#geometry-engine\">GeometryEngine<\/a> APIs for operations such as buffering or offsetting. Methods like <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Geometry.GeometryEngine.Buffer.html\">GeometryEngine.Buffer(Geometry, double)<\/a> and <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Geometry.GeometryEngine.Offset.html\">GeometryEngine.Offset(Geometry, double, GeometryOffsetType, double, double)<\/a> return densified geometries.<\/p>\n<p>For example, imagine a transportation department maintaining road data that includes curved ramps and roundabouts. Those features need to remain true curves for accuracy, and the service only allows updates from true curve clients. The transportation department may create buffers to enlarge roundabouts or use offsets to reposition a curved road segment. <strong>Replacing the original true curve geometry with either result would replace true curves with densified data<\/strong>.<\/p>\n<p>It&#8217;s up to you as a developer to choose an appropriate workflow for your app and dataset. If your app needs to create or replace curve segments you can use <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Geometry.EllipticArcSegment.html\">EllipticArcSegment<\/a> and <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Geometry.CubicBezierSegment.html\">CubicBezierSegment<\/a> and insert these into your geometry.<\/p>\n<h3 id=\"when_not_true_curve_client\">When might you want to choose not to be a true curve client?<\/h3>\n<p>Set <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> to <code>ServiceCurveGeometryMode.DensifyCurves<\/code> if your app does not preserve true curves in its editing workflows.<\/p>\n<p>Note: the <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> <strong>property must be set before the app makes any service calls and cannot be changed afterward<\/strong>. It&#8217;s recommended that you set this property at the start of your app.<\/p>\n<p>Returning to the transportation example, <code>ServiceCurveGeometryMode.DensifyCurves<\/code> setting is safer for apps that do not need true curve data and might otherwise write densified shapes back to a service. It avoids treating the app as a true curve client while still allowing geometry updates.<\/p>\n<p>Furthermore, <strong>if you know your app does not handle true curve data, it may be more appropriate for your app to choose not to be a true curve client<\/strong>.<\/p>\n<h3 id=\"service_policy_client_mode\">How true curve editing is determined by feature service settings and client mode<\/h3>\n<p>The following flowchart summarizes how the service setting <code>ArcGISFeatureServiceInfo.OnlyAllowTrueCurveUpdatesByTrueCurveClients<\/code> works with the client setting to determine whether an app can update true curve geometries.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2965311,"id":2965311,"title":"Client mode and service policy","filename":"ServicePolicyTrueCurveClient.png","filesize":143150,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\/servicepolicytruecurveclient","alt":"Flowchart showing the impact of the service policy and client mode when editing true curves","author":"359632","description":"The impact of the service policy and client mode when editing true curves","caption":"The impact of the service policy and client mode when editing true curves","name":"servicepolicytruecurveclient","status":"inherit","uploaded_to":2964670,"date":"2026-05-11 10:53:50","modified":"2026-05-11 10:54:24","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1325,"height":640,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","medium-width":464,"medium-height":224,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","medium_large-width":768,"medium_large-height":371,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","large-width":1325,"large-height":640,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","1536x1536-width":1325,"1536x1536-height":640,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","2048x2048-width":1325,"2048x2048-height":640,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient-826x399.png","card_image-width":826,"card_image-height":399,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png","wide_image-width":1325,"wide_image-height":640}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/ServicePolicyTrueCurveClient.png"},{"acf_fc_layout":"content","content":"<p>A client is considered a true curve client if either of these conditions is met:<\/p>\n<ol>\n<li>The client is an app where <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> is set to <code>TrueCurveClient<\/code>.<\/li>\n<li>The client is a replica where <code>Geodatabase.IsTrueCurveClient<\/code> is <code>true<\/code>.<\/li>\n<\/ol>\n<h2 id=\"true_curves_offline_replicas\">True curves in offline replicas<\/h2>\n<p><strong>When you generate a sync-enabled replica, true curves are now taken offline by default.<\/strong> The replica then synchronizes as a true curve client, so you can create or edit curve geometries offline and sync them back later.<\/p>\n<p>If you do not want true curves in a replica, set <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> to <code>ServiceCurveGeometryMode.DensifyCurves<\/code> before generating it. Curves will be densified in the replica, and it will not sync as a true curve client.<\/p>\n<p>We added <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Data.Geodatabase.IsTrueCurveClient.html\">Geodatabase.IsTrueCurveClient<\/a>, which indicates whether a <strong>sync-enabled replica will be treated as a true curve client<\/strong>. This is useful to check before enabling geometry editing workflows in your app.<\/p>\n<p>The <code>Geodatabase.IsTrueCurveClient<\/code> property is set when the replica is created and the property is fixed for the lifetime of the replica. If you&#8217;d like to include true curves in existing replicas, recreate the replica with your app <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> set to <code>ServiceCurveGeometryMode.TrueCurveClient<\/code>.<\/p>\n<p>As in the transportation example, if your app uses <code>GeometryEngine<\/code> APIs to perform operations such as creating buffers, you can use <code>Geodatabase.IsTrueCurveClient<\/code> to decide whether those operations should be disabled while a user is editing geometry.<\/p>\n<p>Note: when syncing a replica <code>Geodatabase.IsTrueCurveClient<\/code> is what determines whether the replica is a true curve client, not the value of <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> at sync time. The <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> only determines whether the replica is a true curve client at the time of generation.<\/p>\n<h2 id=\"editing_true_curves_with_geometryeditor\">Editing true curves with GeometryEditor<\/h2>\n<p><a href=\"https:\/\/developers.arcgis.com\/net\/edit-features\/edit-geometry\/#geometry-editor\">GeometryEditor<\/a> now <strong>supports editing geometries that contain true curves<\/strong>, with some important limitations designed to preserve those curve segments.<\/p>\n<p>Polygons and polylines containing true curves can be edited. However, curve segment editing is limited to vertex movement only.<\/p>\n<p>Whole geometries and parts containing true curve segments can be moved, rotated, and scaled.<\/p>\n<p>Non-uniform scaling by interactive editing is disabled for parts containing circular arcs. <a href=\"https:\/\/doc.arcgis.com\/en\/arcgis-online\/manage-data\/manage-editing-hfl.htm\">ArcGIS Online currently supports circular arcs<\/a>, but not Bezier curves or elliptic arcs. Non-uniform scaling would convert a circular arc to an elliptic arc, which cannot be saved back to ArcGIS Online.<\/p>\n<p>Note: non-uniform scaling can be achieved programmatically using <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.Editing.GeometryEditor.ScaleSelectedElement.html\">GeometryEditor.ScaleSelectedElement(double, double, MapPoint)<\/a>.<\/p>\n<p>Mid-vertices are hidden and vertex insertion is disabled on curve segments for interactive tools. If your app needs vertex insertion on curve segments, use <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.Editing.ProgrammaticReticleTool.html\">ProgrammaticReticleTool<\/a> or implement this behavior with <code>GeometryEditor<\/code> APIs.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.Editing.GeometryEditor.InsertVertex.html#Esri_ArcGISRuntime_UI_Editing_GeometryEditor_InsertVertex_Esri_ArcGISRuntime_Geometry_MapPoint_\">GeometryEditor.InsertVertex(MapPoint)<\/a><\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.Editing.ProgrammaticReticleTool.PlaceElementAtReticle.html\">ProgrammaticReticleTool.PlaceElementAtReticle()<\/a><\/p>\n<p>This release focuses on foundational curve editing support, with an emphasis on preserving existing true curve geometries. Today that includes vertex editing for curve segments and safeguards such as disabling non-uniform scaling for geometries that contain circular arcs. We are continuing to evaluate additional curve editing capabilities for future releases, although there are no firm plans to share at this time.<\/p>\n<p>In the following video you can see an example of true curve editing using <code>GeometryEditor<\/code>.<\/p>\n"},{"acf_fc_layout":"kaltura","video_id":"1_63exu5b3","time":false,"start":0},{"acf_fc_layout":"content","content":"<h2 id=\"supported_curve_types\">Supported curve types<\/h2>\n<p>Not every data source supports every kind of true curve, so release 300.0 adds a <code>SupportedCurveTypes<\/code> property to <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.ArcGISServices.ArcGISFeatureServiceInfo.html\">ArcGISFeatureServiceInfo<\/a> and <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.ArcGISServices.ArcGISFeatureLayerInfo.html\">ArcGISFeatureLayerInfo<\/a> to help your app understand what is allowed. <strong>You can use this information when creating or editing features so your workflows stay aligned with the capabilities of the service you are working with<\/strong>.<\/p>\n<p>As noted earlier, ArcGIS Online currently supports circular arcs, but not Bezier curves or elliptic arcs. If your app is working with a service that only supports circular arcs, <strong>you can use the<\/strong> <code>SupportedCurveTypes<\/code> <strong>property to ensure your editing workflows only create or modify circular arcs<\/strong>.<\/p>\n<h2 id=\"true_curves_3d_scenes\">True curves in 3D scenes<\/h2>\n<p>In 3D scenes, true curves in polygons and polylines can now be <strong>displayed<\/strong>, <strong>identified<\/strong>, and <strong>selected<\/strong> in graphics overlays and feature layers when using <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Mapping.SurfacePlacement.html\">SurfacePlacement.DrapedFlat<\/a>.<\/p>\n<p>An example of identification and selection of draped 3D curve features is shown in the video below.<\/p>\n"},{"acf_fc_layout":"kaltura","video_id":"1_yakzttn1","time":false,"start":0},{"acf_fc_layout":"content","content":"<p>Note: in release 300.0, true curves are not supported in 3D scenes using dynamic rendering mode. To display true curves in 3D, set <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.GraphicsOverlay.RenderingMode.html#Esri_ArcGISRuntime_UI_GraphicsOverlay_RenderingMode\">GraphicsOverlay.RenderingMode<\/a> to <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.UI.GraphicsRenderingMode.html\">GraphicsRenderingMode.Static<\/a> for graphics and <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Mapping.FeatureLayer.RenderingMode.html\">FeatureLayer.RenderingMode<\/a> to <a href=\"https:\/\/developers.arcgis.com\/net\/api-reference\/api\/net\/Esri.ArcGISRuntime\/Esri.ArcGISRuntime.Mapping.FeatureRenderingMode.html\">FeatureRenderingMode.Static<\/a> for features.<\/p>\n<h2 id=\"summary\">Summary<\/h2>\n<p>Native Maps SDKs release 300.0 brings curve handling in line with broader platform support by making true curve workflows the default, allowing true curves to be taken offline in replicas, and enabling <code>GeometryEditor<\/code> support for curve geometries. It also adds clearer service capability information through <code>SupportedCurveTypes<\/code> and extends true curve display and identification to 3D scenes with <code>SurfacePlacement.DrapedFlat<\/code>.<\/p>\n<p>If your apps work with true curve data, review editing workflows to ensure they preserve curves where required. If your apps do not need true curve handling, consider setting <code>ArcGISRuntimeEnvironment.ServiceCurveGeometryMode<\/code> to <code>ServiceCurveGeometryMode.DensifyCurves<\/code>.<\/p>\n<p>Tell us about your experience with curves in Native Maps SDKs and what you\u2019d like to see next on <a href=\"https:\/\/www.esri.com\/arcgis-blog\/overview\">ArcGIS Blogs<\/a> or the <a href=\"https:\/\/community.esri.com\/t5\/arcgis-maps-sdks-for-native-apps\/ct-p\/arcgis-runtime-sdks\">Esri Community<\/a> forums.<\/p>\n<h3>Useful resources<\/h3>\n<p>Check out these resources to learn more about geometry in the ArcGIS Maps SDK for Native Apps and how to work with them in your apps:<\/p>\n<ul>\n<li><a href=\"https:\/\/developers.arcgis.com\/net\/geometry-and-spatial-reference\/geometry\/\">Geometry in ArcGIS Maps SDK for .NET<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/net\/edit-features\/edit-geometry\/\">Edit geometry with ArcGIS Maps SDK for .NET<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/documentation\/mapping-and-location-services\/get-started\/\">Sign up for an ArcGIS Location Platform or ArcGIS Online trial account<\/a><\/li>\n<\/ul>\n"}],"related_articles":[{"ID":2963262,"post_author":"3811","post_date":"2026-04-21 06:37:47","post_date_gmt":"2026-04-21 13:37:47","post_content":"","post_title":"What\u2019s new in ArcGIS Maps SDKs for Native Apps 300.0","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"whats-new-in-arcgis-maps-sdks-for-native-apps-300-0","to_ping":"","pinged":"","post_modified":"2026-05-14 15:45:37","post_modified_gmt":"2026-05-14 22:45:37","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2963262","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2937934,"post_author":"359632","post_date":"2025-09-02 08:08:08","post_date_gmt":"2025-09-02 15:08:08","post_content":"","post_title":"How to implement custom geometry editing workflows with the programmatic reticle tool","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"implement-custom-geometry-editing-workflows-with-programmatic-reticle-tool","to_ping":"","pinged":"","post_modified":"2025-09-02 08:08:08","post_modified_gmt":"2025-09-02 15:08:08","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2937934","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"show_article_image":false,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/TrueCurveBlogCard.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/TrueCurveBlogWide.png"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What&#039;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What&#039;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-14T20:56:33+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\"},\"author\":{\"name\":\"Hamish Duff\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/776665929a66fa840b76139acd87f394\"},\"headline\":\"What&#8217;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0\",\"datePublished\":\"2026-05-13T15:00:40+00:00\",\"dateModified\":\"2026-05-14T20:56:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\"},\"wordCount\":12,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS Maps SDK for Native Maps\",\"Developers\",\"editing\",\"geometry\"],\"articleSection\":[\"Developers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\",\"name\":\"What's changed for curves in ArcGIS Maps SDKs for Native Apps 300.0\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2026-05-13T15:00:40+00:00\",\"dateModified\":\"2026-05-14T20:56:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What&#8217;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/776665929a66fa840b76139acd87f394\",\"name\":\"Hamish Duff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/07\/99325835-213x200.jpeg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/07\/99325835-213x200.jpeg\",\"caption\":\"Hamish Duff\"},\"description\":\"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team.\",\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What's changed for curves in ArcGIS Maps SDKs for Native Apps 300.0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","og_locale":"en_US","og_type":"article","og_title":"What's changed for curves in ArcGIS Maps SDKs for Native Apps 300.0","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2026-05-14T20:56:33+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0"},"author":{"name":"Hamish Duff","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/776665929a66fa840b76139acd87f394"},"headline":"What&#8217;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0","datePublished":"2026-05-13T15:00:40+00:00","dateModified":"2026-05-14T20:56:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0"},"wordCount":12,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS Maps SDK for Native Maps","Developers","editing","geometry"],"articleSection":["Developers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0","name":"What's changed for curves in ArcGIS Maps SDKs for Native Apps 300.0","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2026-05-13T15:00:40+00:00","dateModified":"2026-05-14T20:56:33+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/whats-changed-for-curves-in-arcgis-maps-sdks-for-native-apps-300-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"What&#8217;s changed for curves in ArcGIS Maps SDKs for Native Apps 300.0"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/776665929a66fa840b76139acd87f394","name":"Hamish Duff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/07\/99325835-213x200.jpeg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/07\/99325835-213x200.jpeg","caption":"Hamish Duff"},"description":"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team.","url":""}]}},"text_date":"May 13, 2026","author_name":"Hamish Duff","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/TrueCurveBlogWide.png","primary_product":"Developers","tag_data":[{"term_id":780803,"name":"ArcGIS Maps SDK for Native Maps","slug":"arcgis-maps-sdk-for-native-maps","term_group":0,"term_taxonomy_id":780803,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":38851,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":38851,"taxonomy":"post_tag","description":"","parent":0,"count":79,"filter":"raw"},{"term_id":27971,"name":"editing","slug":"editing","term_group":0,"term_taxonomy_id":27971,"taxonomy":"post_tag","description":"","parent":0,"count":169,"filter":"raw"},{"term_id":28391,"name":"geometry","slug":"geometry","term_group":0,"term_taxonomy_id":28391,"taxonomy":"post_tag","description":"","parent":0,"count":10,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":433,"filter":"raw"}],"product_data":[{"term_id":769142,"name":"ArcGIS Maps SDK for .NET","slug":"sdk-net","term_group":0,"term_taxonomy_id":769142,"taxonomy":"product","description":"","parent":36601,"count":43,"filter":"raw"},{"term_id":776202,"name":"ArcGIS Maps SDK for Flutter","slug":"sdk-flutter","term_group":0,"term_taxonomy_id":776202,"taxonomy":"product","description":"","parent":36601,"count":21,"filter":"raw"},{"term_id":768902,"name":"ArcGIS Maps SDK for Kotlin","slug":"sdk-kotlin","term_group":0,"term_taxonomy_id":768902,"taxonomy":"product","description":"","parent":36601,"count":37,"filter":"raw"},{"term_id":769152,"name":"ArcGIS Maps SDK for Qt","slug":"sdk-qt","term_group":0,"term_taxonomy_id":769152,"taxonomy":"product","description":"","parent":36601,"count":41,"filter":"raw"},{"term_id":768912,"name":"ArcGIS Maps SDK for Swift","slug":"sdk-swift","term_group":0,"term_taxonomy_id":768912,"taxonomy":"product","description":"","parent":36601,"count":36,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":770,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=developers","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2964670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/359632"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2964670"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2964670\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2964670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2964670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2964670"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2964670"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2964670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}