Search by Algolia
How to increase your ecommerce conversion rate in 2024
e-commerce

How to increase your ecommerce conversion rate in 2024

2%. That’s the average conversion rate for an online store. Unless you’re performing at Amazon’s promoted products ...

Vincent Caruana

Senior Digital Marketing Manager, SEO

How does a vector database work? A quick tutorial
ai

How does a vector database work? A quick tutorial

What’s a vector database? And how different is it than a regular-old traditional relational database? If you’re ...

Catherine Dee

Search and Discovery writer

Removing outliers for A/B search tests
engineering

Removing outliers for A/B search tests

How do you measure the success of a new feature? How do you test the impact? There are different ways ...

Christopher Hawke

Senior Software Engineer

Easily integrate Algolia into native apps with FlutterFlow
engineering

Easily integrate Algolia into native apps with FlutterFlow

Algolia's advanced search capabilities pair seamlessly with iOS or Android Apps when using FlutterFlow. App development and search design ...

Chuck Meyer

Sr. Developer Relations Engineer

Algolia's search propels 1,000s of retailers to Black Friday success
e-commerce

Algolia's search propels 1,000s of retailers to Black Friday success

In the midst of the Black Friday shopping frenzy, Algolia soared to new heights, setting new records and delivering an ...

Bernadette Nixon

Chief Executive Officer and Board Member at Algolia

Generative AI’s impact on the ecommerce industry
ai

Generative AI’s impact on the ecommerce industry

When was your last online shopping trip, and how did it go? For consumers, it’s becoming arguably tougher to ...

Vincent Caruana

Senior Digital Marketing Manager, SEO

What’s the average ecommerce conversion rate and how does yours compare?
e-commerce

What’s the average ecommerce conversion rate and how does yours compare?

Have you put your blood, sweat, and tears into perfecting your online store, only to see your conversion rates stuck ...

Vincent Caruana

Senior Digital Marketing Manager, SEO

What are AI chatbots, how do they work, and how have they impacted ecommerce?
ai

What are AI chatbots, how do they work, and how have they impacted ecommerce?

“Hello, how can I help you today?”  This has to be the most tired, but nevertheless tried-and-true ...

Catherine Dee

Search and Discovery writer

Algolia named a leader in IDC MarketScape
algolia

Algolia named a leader in IDC MarketScape

We are proud to announce that Algolia was named a leader in the IDC Marketscape in the Worldwide General-Purpose ...

John Stewart

VP Corporate Marketing

Mastering the channel shift: How leading distributors provide excellent online buying experiences
e-commerce

Mastering the channel shift: How leading distributors provide excellent online buying experiences

Twice a year, B2B Online brings together America’s leading manufacturers and distributors to uncover learnings and industry trends. This ...

Jack Moberger

Director, Sales Enablement & B2B Practice Leader

Large language models (LLMs) vs generative AI: what’s the difference?
ai

Large language models (LLMs) vs generative AI: what’s the difference?

Generative AI and large language models (LLMs). These two cutting-edge AI technologies sound like totally different, incomparable things. One ...

Catherine Dee

Search and Discovery writer

What is generative AI and how does it work?
ai

What is generative AI and how does it work?

ChatGPT, Bing, Bard, YouChat, DALL-E, Jasper…chances are good you’re leveraging some version of generative artificial intelligence on ...

Catherine Dee

Search and Discovery writer

Feature Spotlight: Query Suggestions
product

Feature Spotlight: Query Suggestions

Your users are spoiled. They’re used to Google’s refined and convenient search interface, so they have high expectations ...

Jaden Baptista

Technical Writer

What does it take to build and train a large language model? An introduction
ai

What does it take to build and train a large language model? An introduction

Imagine if, as your final exam for a computer science class, you had to create a real-world large language ...

Vincent Caruana

Sr. SEO Web Digital Marketing Manager

The pros and cons of AI language models
ai

The pros and cons of AI language models

What do you think of the OpenAI ChatGPT app and AI language models? There’s lots going on: GPT-3 ...

Catherine Dee

Search and Discovery writer

How AI is transforming merchandising from reactive to proactive
e-commerce

How AI is transforming merchandising from reactive to proactive

In the fast-paced and dynamic realm of digital merchandising, being reactive to customer trends has been the norm. In ...

Lorna Rivera

Staff User Researcher

Top examples of some of the best large language models out there
ai

Top examples of some of the best large language models out there

You’re at a dinner party when the conversation takes a computer-science-y turn. Have you tried ChatGPT? What ...

Vincent Caruana

Sr. SEO Web Digital Marketing Manager

What are large language models?
ai

What are large language models?

It’s the era of Big Data, and super-sized language models are the latest stars. When it comes to ...

Catherine Dee

Search and Discovery writer

Looking for something?

facebookfacebooklinkedinlinkedintwittertwittermailmail

A product-based JavaScript API client should be able to run in the browser, with direct front-end DOM access, as well as in a node environment, to access back-end servers and services.

Additionally, a product-based API client should provide exhaustive and easy access to all features of the application it serves. And it should keep up-to-date with every new feature.

Finally, an API client should add extra value to the application, by adding such functionality as:

  • Retry logic, to sidestep network or any other momentary glitch or timeout
  • Rate-limits and throttling strategies, to reduce server load and usage costs 
  • Batch processing, where the API performs a set of actions to accomplish a single common task
  • And other helper functionality 
  • Friendly view of underlying Rest API

What is a product-based API client?

An API (application programming interface) is not just a wrapper; it’s a separate, light-weight application that enables developers to interact with a full-featured software platform.

A product-based API is an API that a company sells as a product. Google sells the Google Maps API, Stripe sells a financial API, and we sell a Search API. 

A product-based API client is an API that comes in different programming languages, frameworks, and JavaScript flavors. Our clients sit on top of different REST API endpoints. 

By offering an API client in a developer’s own language, they get the benefit of:

  • Faster onboarding to implement the basic and advanced features of an application
  • Simpler integration into their own codebases
  • Large amounts of code already written for them, including retries, throttling, and batching

The best API design also tries to limit the amount of boilerplate code needed to instantiate, use, or parameterize an API method.

We can name a few other defining characteristics of a product-based API client:

  • Small code size
  • Low or no dependencies
  • Flexible customization with smart parameters 
  • Intuitive DX in the naming and usage of requests and responses (improvement over Rest API)
  • Thorough API documentation and tutorials
  • Non-breaking versioning
  • Authentication with API keys or tokens
  • Simple and universal data exchanges with JSON
  • Keeping up to date with changes and best practices in the underlying programming languages and technologies

How to improve an API product from version to version

First a word about process: We have over 10,000 customers using our API clients. With that kind of usage, we are in a good position to fine-tune our APIs based on customer support tickets, chats, and usage statistics in our logs. 

However, an even greater source of truth is our own engineers. Our APIs are not just used by our customers. Our Dashboard uses our JavaScript, PHP, Ruby, and other API clients; we have inhouse use cases that implement our API clients; our client-facing tech support teams create demos, prototypes, and solutions using our API clients. With all that API testing and internal usage, we know first-hand the pain points and positive aspects of our API clients. 

With all that feedback, every release includes:

  • Refactoring the interface and the code behind (non-breaking) to keep up with the changing standards and evolutions of the underlying technology. For example, our newest version of our JavaScript client supports ES6 and TypeScript. 
  • Improving the DX for all kinds of developers – experienced, beginners, domain experts.
  • Targeting more use cases. New or existing methods to better address certain use cases, sometimes even adopting the jargon of an industry.  
  • Generating a common interface across all API languages. Many customers switch between different languages. Having a common interface helps with that. Using JSON also helps.

Some upgrades we’ve made to our JavaScript API client

For SaaS companies like ours, a JavaScript API client is critical, because of its ability to request services directly from our cloud servers without requiring customers to go though their own back-end servers. Among other things, client-side API requests improve the response time of the new API and simplify the front-end code on the front end. Because of these benefits, our JavaScript API is our most used client.

With that in mind, JavaScript APIs have to manage the challenges of client-side application development, as well as the particularities of the JavaScript language and its flavors like React, Vue, and Angular. 

Here are some improvements we’ve made recently:

Support for both require and import, and default and lite versions

// For the default version
const algoliasearch = require('algoliasearch');
 
// For the default version
import algoliasearch from 'algoliasearch';
 
// For the search only version
import algoliasearch from 'algoliasearch/lite';

Parameterized instantiation

We started with a simple instantiation – client application id and the API key:

const algoliasearch = algoliasearch('YourApplicationID', 'YourAdminAPIKey');

Then we added a third parameter, allowing the developer to customize a number of additional features:

const algoliasearch = algoliasearch(
   'YourApplicationID',
   'YourSearchOnlyAPIKey',
{
   timeouts: {
       connect: 1,
       read: 2,
       write: 30,
   },
   requester: createBrowserXhrRequester(),
   logger: createConsoleLogger(LogLevelEnum.Error),
   responsesCache: createInMemoryCache(),
   requestsCache: createInMemoryCache({ serializable: false }),
   hostsCache: createFallbackableCache({
       caches: [
           createBrowserLocalStorageCache({ key: `${version}-${appId}` }),
           createInMemoryCache(),
       ],
   }),
});

As you can see, the third parameter allows developers to define:

  • Unique timeouts
  • The behavior of requesters
  • Customizations for node requests or a browser environment
  • Log callbacks
    • Logging enables us to follow the lifecycle of a client, to record and then analyze API activity.
    • Recording API activity helps us improve the usage of an API in future versions. It also enables us to reduce pricing by removing certain common usages from the costs.
    • Also, by allowing developers to send us their own logging methods, we can store the information they think is important, thus improving the quality of our own logs.
  • Response caching
    • Developers can manage their own throttling, for example.
    • They can disable our response caching, as well.
    • They can manage local storage, preserving the state of search even after a browser refreshes.
  • Request caching
    • Allows promise sharing, for example.

Reduced size of the JavaScript

Make the client tree shakeable:

// Tree shakable ( 1 kb, dead code elimination )
// list the methods you use and don’t include the code of any other method  
const client = createSearchClient({
   // ..
   methods: { search }
}); 

Customized requests 

Experts sometimes require a non-opinionated, open request to handle unexpected use cases. For example, developers can pass read/write requests to cover what is not in the API:

client.transporter.read ({
   path: '',
   verb: 'GET'
});

Note on logging: when we log these customized requests, we can take that information to create new methods in the future.

Reducing dependencies to zero

You can achieve zero-dependency simply by following JavaScript standards and using Typescript.

Batching common, multi-tasked operations

Instead of a single Save() method, we added more robust methods like replaceAllObjects(), reindex(), copyIndex(). This helps ensure best practices in such data-sensitive methods. Additionally, we’ve written all the code that manages retries and zero-downtime logic.

Typescript support

javascript typescript

Managing the release schedule

Last but not least, a product-based API client must follow the best strategies for testing and release practices. We’ll leave testing to another blog, but here’s the overall strategy we use for our release cycle:

  • Release a beta version for internal use cases, applications, and demos
  • Work with the Docs team to standardize and document the DX
  • Help upgrade products that rely on our API clients
  • Release a final beta to a handful of customers
  • Release the stable version, along with the updated Docs
  • Promote and encourage migration via Support calls, blog posts, and social media
About the author
Peter Villani

Sr. Tech & Business Writer

linkedinmediumtwitter

Recommended Articles

Powered byAlgolia Algolia Recommend

What is an API?
product

Catherine Dee

Search and Discovery writer

Ruby Client v2 is out!
engineering

Chloé Liban

Software Egineer

Search 101: What is an API key? How does it provide API security?
engineering

Peter Villani

Sr. Tech & Business Writer