<commit_before>---
title: Native Components
---

The core elements of Arez are [Observables](observables.md), [Observers](observers.md) and
[ComputedValues](computed_values.md) and these are all that is needed at runtime for Arez to build complex
applications. The first Arez applications were constructed using just these primitives.

Constructing primitives in this manner was tedious at best. Humans tend to want to use higher level abstractions
and so was born the annotation driven [Component Model](components.md). Arez users could
define "components" that consisted of {@api_url: annotations.Observable} properties,
{@api_url: annotations.Computed} properties and {@api_url: annotations.Track} or {@api_url: annotations.Autorun}<commit_msg>Fix cases<commit_after>---
title: Native Components
---

The core elements of Arez are [observables](observables.md), [observers](observers.md) and
[computed values](computed_values.md) and these are all that is needed at runtime for Arez to build complex
applications. The first Arez applications were constructed using just these primitives.

Constructing primitives in this manner was tedious at best. Humans tend to want to use higher level abstractions
and so was born the annotation driven [Component Model](components.md). Arez users could
define "components" that consisted of {@api_url: annotations.Observable} properties,
{@api_url: annotations.Computed} properties and {@api_url: annotations.Track} or {@api_url: annotations.Autorun}
{'fraction_non_alphanumeric': 0.07780013413816231, 'fraction_numerical': 0.0, 'mean_word_length': 5.93953488372093, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6115364', 'n_tokens_mistral': 402, 'n_tokens_neox': 384, 'n_words': 173}