Ensure API design follows consistent patterns for naming, typing, and composition to improve developer experience and maintainability. **Key principles:**
Ensure API design follows consistent patterns for naming, typing, and composition to improve developer experience and maintainability.
Key principles:
Use fully qualified names in deprecation messages - Include the full path like MetaArgs.loaderData
instead of just loaderData
to provide clear migration guidance.
Prefer type-only imports for types - Use import type { ServerBuild }
instead of import { ServerBuild }
when importing only for type annotations.
Context
over abbreviated forms like C
for better readability:
export interface LoaderFunction<Context = any> {
(args: LoaderFunctionArgs<Context>): Promise<DataFunctionValue> | DataFunctionValue;
}
export type
for simple function signatures instead of interfaces when no extension is needed:
export type HeadersFunction = (args: HeadersArgs) => Headers | HeadersInit;
export const redirectWithReload: RedirectFunction = (url, init) => {
let response = redirect(url, init);
response.headers.set("X-Remix-Reload-Document", "true");
return response;
};
let loaderRequest = new Request(request.url, {
body: null,
headers: request.headers,
method: request.method,
redirect: request.redirect,
signal: request.signal,
});
These patterns improve API discoverability, reduce confusion during migrations, and create more predictable interfaces for developers.
Enter the URL of a public GitHub repository