<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9" -->

---
title: Custom bindings in SwiftUI: closures vs subscripts
description: When creating custom bindings in SwiftUI, using `Binding(get:set:)` with closures causes new closure allocations on every body evaluation, which can trigger...
canonical: https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Custom bindings in SwiftUI: closures vs subscripts | daily.dev
og:description: When creating custom bindings in SwiftUI, using `Binding(get:set:)` with closures causes new closure allocations on every body evaluation, which can trigger...
og:url: https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9
og:image: https://api.daily.dev/og/posts/KJdoek5y9.png
og:image:alt: Custom bindings in SwiftUI: closures vs subscripts
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom bindings in SwiftUI: closures vs subscripts

**[Nil Coalescing](https://daily.dev/sources/nilcoalescing)** · 6 min read · 0 upvotes · 0 comments

## Summary

When creating custom bindings in SwiftUI, using `Binding(get:set:)` with closures causes new closure allocations on every body evaluation, which can trigger unnecessary child view re-renders even when unrelated state changes. A more stable alternative is to define a labeled subscript on the observable model. SwiftUI can then form the binding through the model projection and subscript access, giving the framework enough structure to track dependencies accurately and skip re-evaluating child views when unrelated properties change.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://nilcoalescing.com/blog/CustomBindingsInSwiftUIClosuresVsSubscripts>

## Similar posts on daily.dev

- [SwiftUI data dependencies and their effect on view updates](https://daily.dev/posts/swiftui-data-dependencies-and-their-effect-on-view-updates-2kp42i6if) · Nil Coalescing · 1 upvotes · 0 comments
- [Who Told The View To Update?](https://daily.dev/posts/who-told-the-view-to-update--xvxtydysb) · Medium · 0 upvotes · 0 comments

---

Tags: [#performance](https://daily.dev/tags/performance), [#ios](https://daily.dev/tags/ios), [#swift](https://daily.dev/tags/swift), [#swiftui](https://daily.dev/tags/swiftui)

[View this post on daily.dev](https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Custom bindings in SwiftUI: closures vs subscripts","url":"https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9"},"datePublished":"2026-08-02T07:15:04.495Z","dateModified":"2026-08-02T07:31:31.647Z","description":"When creating custom bindings in SwiftUI, using `Binding(get:set:)` with closures causes new closure allocations on every body evaluation, which can trigger...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e38204b9513f11aadff3a872324f510?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e38204b9513f11aadff3a872324f510?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Nil Coalescing","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Nil Coalescing","logo":"https://media.daily.dev/image/upload/s--rcEu6sag--/f_auto,q_auto/v1785654899/logos/nilcoalescing?_a=BAMAMicg0","url":"https://daily.dev/sources/nilcoalescing"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/custom-bindings-in-swiftui-closures-vs-subscripts-kjdoek5y9","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"performance,ios,swift,swiftui","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Nil Coalescing","item":"https://daily.dev/sources/nilcoalescing"},{"@type":"ListItem","position":3,"name":"Custom bindings in SwiftUI: closures vs subscripts"}]}
```

