Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
apollo-client
Advanced tools
The apollo-client npm package is a comprehensive state management library for JavaScript that enables you to manage both local and remote data with GraphQL. It is designed to work seamlessly with modern React applications, providing tools for querying, caching, and updating application state.
Querying Data
This feature allows you to query data from a GraphQL endpoint. The code sample demonstrates how to set up an Apollo Client instance, define a GraphQL query, and execute it to fetch data.
const { ApolloClient, InMemoryCache, gql } = require('@apollo/client');
const client = new ApolloClient({
uri: 'https://example.com/graphql',
cache: new InMemoryCache()
});
client.query({
query: gql`
query GetBooks {
books {
title
author
}
}
`
}).then(result => console.log(result));
Mutating Data
This feature allows you to perform mutations to modify data on the server. The code sample shows how to set up a mutation to add a new book to the database and execute it with the required variables.
const { ApolloClient, InMemoryCache, gql } = require('@apollo/client');
const client = new ApolloClient({
uri: 'https://example.com/graphql',
cache: new InMemoryCache()
});
client.mutate({
mutation: gql`
mutation AddBook($title: String!, $author: String!) {
addBook(title: $title, author: $author) {
id
title
author
}
}
`,
variables: {
title: 'New Book',
author: 'Author Name'
}
}).then(result => console.log(result));
Caching
Apollo Client provides powerful caching capabilities to optimize data fetching and reduce network requests. The code sample demonstrates how to configure the cache with type policies to manage data normalization and caching behavior.
const { ApolloClient, InMemoryCache } = require('@apollo/client');
const client = new ApolloClient({
uri: 'https://example.com/graphql',
cache: new InMemoryCache({
typePolicies: {
Book: {
keyFields: ['id']
}
}
})
});
Relay is a JavaScript framework for building data-driven React applications. It is similar to Apollo Client in that it also uses GraphQL for data fetching and state management. Relay is known for its strong emphasis on performance and its unique approach to data fetching with static queries and compile-time optimizations.
urql is a highly customizable and lightweight GraphQL client for React. It offers a simpler API compared to Apollo Client and focuses on flexibility and ease of use. urql provides core features like querying, mutations, and caching, but allows developers to extend its functionality with additional packages.
graphql-request is a minimalistic GraphQL client for Node.js and browsers. It is much simpler than Apollo Client and does not include advanced features like caching or state management. It is ideal for use cases where you need a lightweight solution for making GraphQL requests without the overhead of a full-fledged client.
A simple but functional GraphQL client with a great development experience.
Running tests locally:
# nvm use node
npm install
npm test
This project uses TypeScript for static typing and TSLint for linting. You can get both of these built into your editor with no configuration by opening this project in Visual Studio Code, an open source IDE which is available for free on all platforms.
Should be moved into some kind of CONTRIBUTING.md soon...
If you're getting booted up as a contributor, here are some discussions you should take a look at:
FAQs
A simple yet functional GraphQL client.
We found that apollo-client demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.