Our belief
Next-gen JS/TS toolchains should stay coherent.
Unified pipeline
One AST, resolver, and interop story for lint, test, build, and ship so semantics stay aligned and parsing happens once.
Native-speed core
Foundational pieces are built in compile-to-native stacks to unlock heavier optimizations without slowing the editor loop.
Composable pieces
Every capability arrives as a small building block you can wire together or swap independently as needs change.
Runtime neutral
Core logic avoids binding to a single JS runtime so browser, server, and edge all benefit from the same pipeline.
project.json
gofetch-wasm
A WebAssembly-backed HTTP client compiled from Go for JavaScript/TypeScript applications, providing consistent HTTP behavior across runtimes.
- Compile-to-native core with typed responses
- Familiar client methods: get, post, put, patch, delete
- Plays well with Vite and modern bundlers
DX snapshot
npm i gofetch-wasmUsage sketch
import gofetch from "gofetch-wasm"; // Initialize the clientconst client = await gofetch.newClient(); // Configure the clientclient.setBaseURL("https://api.example.com");client.setTimeout(10000);client.setHeader("Authorization", "Bearer token123"); // Make requestsconst response = await client.get("/users/1");console.log(response.data);project.json
gofetch
A robust and extensible HTTP client written in Go, designed as the core engine behind gofetch-wasm and usable as a standalone Go library.
- Native Go HTTP client built on net/http
- Request & response interceptors
- Data transformers and progress tracking
- Context-aware requests with cancellation
- Designed to be compiled to WebAssembly
DX snapshot
go get github.com/fourth-ally/gofetchUsage sketch
package main import ( "context" "fmt" "time" "github.com/fourth-ally/gofetch") type User struct { ID int \`json:"id"\` Name string \`json:"name"\` Email string \`json:"email"\`} func main() { client := gofetch.NewClient(). SetBaseURL("https://api.example.com"). SetTimeout(10 * time.Second). SetHeader("Authorization", "Bearer token123") var user User resp, err := client.Get(context.Background(), "/users/1", nil, &user) if err != nil { panic(err) } fmt.Printf("User: %s (%s)\n", user.Name, user.Email)}What is next
We are exploring what to build next, with you.
Built with you
Future tools ship from real-world pain points gathered from users and the community.
Interop first
Whatever comes next will play nicely with modern stacks, bundlers, and runtimes.
Stable cores
We favor lean, well-tested primitives so you can assemble your own stack.