# General Translation Key Concepts: Dynamic Content
URL: https://generaltranslation.com/en-GB/docs/key-concepts/dynamic-content.mdx
---
title: Dynamic Content
description: A brief overview of working with Dynamic Content in GT.
---
## Overview
**Dynamic Content** is generally any content that can change based on the user, context, environment, etc.
This contrasts with **Static Content**, which remains the same regardless of the user, context, environment, etc.
TL;DR
* Static Content never changes (raw strings, text, etc.).
* Dynamic Content can change (names, emails, time, language, etc.).
**What is Static Content?**
Static Content generally refers to any raw text that exists in the bundle served to your users.
A good rule of thumb is that any text or strings a developer can read in the source code are static text.
For example, consider this file:
```jsx title="Landing.jsx" copy
export default function Landing() {
return (
<> Welcome to my app!>
);
}
```
The text, "Welcome to my app!", is Static Content because it never changes.
But what if we wanted to change the page so that it responded when the user was logged in:
```jsx title="Landing.jsx" copy
export default function Landing(user) {
if (user) {
return (
Welcome to my app, {user.name}!
);
}
return (
Welcome to my app!
);
}
```
Even though these two phrases are rendered conditionally, they are both still considered static text.
Remember our rule of thumb: we can see this content by reading the source code in `landing.jsx`.
However, `{user.name}` is considered dynamic content because it can change.
We cannot know what will be rendered on the user's screen just by reading the `landing.jsx` file.
## "To Tx or not to Tx"
Sometimes, we want to translate dynamic content, but at other times we want it to remain the same.
A good example would be a user's email address or name.
Another example might be a bank account balance or a user's SSN.
Such items are (1) unlikely to need translation when your app is rendered in a different language and (2) can vary (in this case from user to user).
### Example
```jsx title="Greeting.jsx" copy
import { T, Var } from 'gt-next'
export default function Greeting(name) {
return (
Hello, {name}!
);
}
```
In terms of translation, this has two benefits:
1. You do not have to create a translation for every possible name.
* Using ``, we only generate one translation that essentially looks like this:
* `¡Hola, ${name}!`
* If we do not use ``, we would have to perform an on-demand translation for every unique name:
* "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
2. You also do not have to worry about names themselves being changed to translated versions: (i.e. "¡Hola, Alicia!", "¡Hola, Roberto!", ...).
**Note:** The ``, ``, ``, and `` components are available in `gt-next`, `gt-react`, and `gt-react-native`.
As you can see, the `` component should be used to wrap any content that should remain the same regardless of locale.
This avoids the need to create translations for every possible value of the dynamic content.
By wrapping private information in a `` component, you can ensure that the information is not sent to the General Translation API.
**Exceptions**
The exceptions to the statement above are (1) in the case of a nested `` component used inside a `` component (i.e. the children of the nested `` component will be translated)
or (2) when data is intentionally passed to our API by some other means within a child of the `` component (i.e. a fetch call).
However, this is not the intended use of the `` component or the General Translation API, and doing so can harm load times and performance.