# Recipe: From Next.js to Trilha > A Next.js-style web framework for Go: a folder under app/ is a route, HTML is written in Go, and nothing outside the standard library is imported. > /trilha/llms/recipes/from-next.txt - [From Next.js to Trilha](/trilha/cookbook/from-next): The React patterns you reach for without thinking — useEffect + fetch, useState for a modal, toast, useSearchParams — and the one line of Go that replaces each. · 3613 tokens est. - [Listings](/trilha/reference/listings): ListParams reads the state of a listing from the URL; ui.DataTable renders it. · 1938 tokens est. - [Live fragments](/trilha/reference/live): ui.Poll refreshes a fragment on a clock; ui.Live and ui.On refresh it when the server says so. · 1465 tokens est. - [ui](/trilha/reference/ui): The kit's components, variants, assets and the theme contract. · 11620 tokens est. - [Shell](/trilha/reference/shell): ui.Shell is the frame of an internal app — sidebar, header, user menu — and ui.PageHeader is the title of the screen inside it. · 1113 tokens est. 5 page(s) · 19749 tokens est. in all --- This page is for whoever already builds screens in Next.js and is now looking at a Go file wondering where the state went. It is a translation table, not an argument: the app being moved is a dashboard of articles — a list with filter and ordering, a queue that refreshes itself, a confirmation modal, a PDF — and each section shows the React you would write and the Trilha that replaces it. The short version of the whole page: **the state that lived in the browser lives in the URL or on the server**, and what is left in the browser is the little the kit already ships. | In the React app | Here | |---|---| | `useEffect` + `fetch` + `useState(loading)` | a page function that reads the data and returns the HTML | | a Server Action (`"use server"`) and `