Codeblocks
The PostHog website has a custom codeblock component that comes with a number of useful features built-in:
Basic codeblock
Codeblocks in PostHog are created by enclosing your snippet using three backticks (```) or three tildes (~~~), as shown below:
```{"name": "Max, Hedgehog in Residence","age": 2}```
This will produce the following codeblock:
{"name": "Max, Hedgehog in Residence","age": 2}
Adding syntax highlighting
Syntax highlighting can be added by specifying a language for the codeblock, which is done by appending the name of the language directly after the opening backticks or tildes as shown below.
```json{"name": "Max, Hedgehog in Residence","age": 2}```
This will produce the following output:
{"name": "Max, Hedgehog in Residence","age": 2}
Supported languages
Here is a list of all the languages that are supported in codeblocks:
Frontend
HTML | html |
CSS / SCSS / LESS | css / less |
JavaScript | js |
JSX | jsx |
TypeScript | ts |
TSX | tsx |
Swift | swift |
Dart | dart |
Objective-C | objectivec |
Backend
Node.js | node |
Elixir | elixir |
Golang | go |
Java | java |
PHP | php |
Ruby | ruby |
Python | python |
C / C++ | c / cpp |
Misc.
Terminal | bash or shell |
JSON | json |
XML | xml |
SQL | sql |
GraphQL | graphql |
Markdown | markdown |
MDX | mdx |
YAML | yaml |
Git | git |
Note: If you want syntax highlighting for a snippet in another language, feel free to add your language to the imports here and open a PR.
Multiple code snippets in one block
With PostHog's MultiLanguage
component, it's possible to group multiple code snippets together into a single block.
<MultiLanguage>```jsconsole.log("Hello world!")``````html<div>Hello world!</div>```</MultiLanguage>
Note: Make sure to include empty lines between all your code snippets, as well as above and below the
MultiLanguage
tag
This will render the following codeblock:
console.log("Hello world!")
Specifying which file a snippet is from
You can specify a filename that a code snippet belongs to using the file
parameter, which will be displayed in the top bar of the block.
```yaml file=values.yamlcloud: 'aws'ingress:hostname: <your-hostname>nginx:enabled: truecert-manager:enabled: true```
Note: Make sure not to surround your filename in quotes. Each parameter-value pair is delimited by spaces.
This produces the following codeblock:
cloud: 'aws'ingress:hostname: <your-hostname>nginx:enabled: truecert-manager:enabled: true