---
title: "Supported languages"
type: REFERENCE
updated: 2026-09-23
---

# Supported languages

Panolayer parses the source formats below. Parsing support does not mean that caller resolution and verification have equal coverage in every language.

Last updated 2026-09-23

## Source formats

| Language or format | Parsed | Detected frameworks or stacks |
| --- | --- | --- |
| TypeScript and TSX | Yes | Next.js, TanStack Start, React, Angular, Node.js |
| JavaScript and JSX | Yes | Next.js, React, Vue, Node.js |
| Vue single-file components | Yes | Vue, Nuxt |
| Svelte | Yes | SvelteKit |
| Python | Yes | Django, FastAPI, Flask |
| Go | Yes | Wails, Gin, Echo, Fiber, Chi, Connect RPC, gRPC, Cobra |
| Swift | Yes | Swift |
| Kotlin and Java | Yes | JVM |
| Rust | Yes | Rust |
| Ruby, C, C++, C#, PHP | Yes | No framework-specific claim |
| Bash, Lua, Scala, Elixir | Yes | No framework-specific claim |
| Markdown and MDX | Yes | No framework-specific claim |

## Coverage limits

Dynamic calls, reflection, and generated code need a closer look. A parsed function is not a guarantee that Panolayer can resolve every caller or check every expectation. Framework detection identifies the stack; it does not establish complete framework coverage.

## Repositories with several apps

Panolayer detects apps within monorepos. Inspect Architecture to check which apps and relationships appear. Do not assume that every nested app or generated dependency was discovered.

## Continue learning

- [Install and set up Panolayer](/docs/getting-started)

- [What Panolayer doesn’t do](/docs/concepts/limits)
