Choosing Between Main Symbols and Symbol Instances in Sketch Design Systems
A decision guide to editing Main Symbols, applying Instance Overrides, or detaching in Sketch, with a validation walkthrough and the trade-offs behind each choice.
01 Jan 2026, 06:58 UTC

The Decision and Its Constraints
When a component in a Sketch library needs to change, you have three supported paths: edit the Main Symbol (the master definition), apply an Override to a single Symbol Instance (a linked copy placed on the canvas), or Detach the instance into ordinary layers. The choice determines whether the change propagates to every usage, to one usage, or to none.
The constraint that drives the decision is propagation. Main Symbol edits are global and cheap to maintain but inflexible. Overrides are local and preserve the link, so geometry and style changes still flow through. Detaching is fully independent and permanently breaks the link, which is why it accumulates maintenance cost.
Options Compared
| Option | What it changes | Propagation after the change | Use when |
|---|---|---|---|
| Edit Main Symbol | The source definition | All linked instances update | The change should apply everywhere, such as a brand color or a layout fix |
| Override on an instance | A single property: text, image, or color | Link stays intact; other properties still follow the Main Symbol | You need a one-off variation, such as a different button label |
| Detach Symbol | Converts the instance into a plain layer group | None; the connection is severed | You need a genuinely independent composition that will never receive updates |
Trade-offs Worth Naming
- Main Symbol edits give consistency by construction. The cost is that a change made for one screen ships to every screen using that symbol.
- Overrides are the middle ground. They survive later geometry changes to the Main Symbol, so a renamed button keeps its label while still inheriting a height adjustment.
- Detaching is the expensive option. Each detached copy is a “snowflake” component that no longer tracks the library, so fixes must be applied by hand in every copy.
- Nesting compounds these effects. A Button symbol placed inside a Navigation Bar symbol means an edit to the Button propagates through every instance of the Navigation Bar. Deep nesting is powerful but can slow large documents, so keep the tree as shallow as the design allows.
A Concrete Validation Walkthrough
The steps below are a procedure to run in a scratch document, not a recorded test result. Menu labels and keyboard shortcuts vary between Sketch releases, so confirm them in your installed version before standardizing a team workflow.
- Create a Main Symbol. Draw a rectangle with a text label, select both layers, and choose
Create Symbolfrom the toolbar or the Symbols menu. Name itButton/Main. - Place three instances. Drag
Button/Mainfrom the Symbols panel onto the canvas three times. Label them A, B, and C for reference. - Check global propagation. Select the Main Symbol and change its fill color. All three instances should adopt the new color. If one does not, it has been detached or is a separate symbol.
- Apply a text override. Select instance B only, then edit its text layer value in the Inspector. The link to the Main Symbol remains.
- Check override resilience. Return to the Main Symbol and change its geometry, for example the rectangle height. Instances A and C should follow the height change; instance B should keep its overridden text and also adopt the new height.
- Detach one instance. Select instance C and choose
Detach from Symbol. It becomes a regular group. Make a further edit to the Main Symbol and confirm C no longer responds.
How to Confirm the Result
- After step 3, every instance shows the Main Symbol’s new fill — propagation works.
- After step 5, instance B keeps its label while matching the Main Symbol’s updated geometry — the override is intact and non-destructive.
- After step 6, instance C ignores later Main Symbol edits — detachment is confirmed.
Limitations and Guardrails
- Deleting a Main Symbol while instances still exist leaves those instances orphaned and hard to trace. Reassign or remove instances first.
- Frequent detaching quietly forks the design system. If a detach is unavoidable, record why so the divergence can be revisited.
- Heavy nesting can degrade performance in large files; measure responsiveness in your own document rather than assuming a threshold.
- Symbol behavior has been stable for a long time, but exact menu wording, shortcuts, and library-sync behavior should be verified against your Sketch version and your team’s library setup before you document it as policy.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.