. * * window.aa needs to exist and be usable by ANY module's script, * however early it runs - main-nav's script, for one, runs near * the top of

91̽»¨

, well before the real search-insights.js * so the download * begins as early as before. Repeat calls share the same downloads, a * failed load is retried on the next call, and the versions / SRI * hashes live only here. * * Algolia Insights is unaffected: window.aa above is still created in * on every page and queues events until search-insights loads. * * window.loadAlgoliaLibs({ priority: 'high' }) (Oct 2026): used by the * /search page, where the first results wait on these libraries. Chrome * gives async scripts low priority, behind images and fonts; this asks * for high instead (fetchpriority). Only the first call for a library * sets its priority - later calls share that download. */ (function (win, doc) { var LIBS = [ { ready: function () { return !!win['algoliasearch/lite']; }, src: 'https://cdn.jsdelivr.net/npm/algoliasearch@5.52.1/dist/lite/builds/browser.umd.js', integrity: 'sha256-I2oYUIvhx1g6l4lTP+yoERbzLIHKzw4AKaBRQPwIeDY=' }, { ready: function () { return !!win.instantsearch; }, src: 'https://cdn.jsdelivr.net/npm/instantsearch.js@4.98.0/dist/instantsearch.production.min.js', integrity: 'sha256-ngmqZk4WBxUw257aMYZayyNBd983INngagv0jI6Ecfs=' } ]; function loadOne(lib, options) { if (lib.ready()) return Promise.resolve(); // One download per library, shared by every caller; reset on // failure so the next call retries just the library that failed. if (lib.pending) return lib.pending; lib.pending = new Promise(function (resolve, reject) { var script = doc.createElement('script'); script.src = lib.src; script.integrity = lib.integrity; script.crossOrigin = 'anonymous'; script.async = true; if (options && options.priority === 'high') script.setAttribute('fetchpriority', 'high'); script.onload = function () { lib.ready() ? resolve() : reject(new Error('Loaded but not available: ' + lib.src)); }; script.onerror = function () { script.remove(); reject(new Error('Could not load ' + lib.src)); }; doc.head.appendChild(script); }); lib.pending.catch(function () { lib.pending = null; }); return lib.pending; } win.loadAlgoliaLibs = function (options) { return Promise.all(LIBS.map(function (lib) { return loadOne(lib, options); })); }; })(window, document); . */ window.hsConversationsSettings = window.hsConversationsSettings || {}; window.hsConversationsSettings.loadImmediately = false; (function (win) { var EVENTS = ['pointerdown', 'keydown', 'touchstart', 'scroll', 'mousemove', 'wheel']; var done = false; /* 19 Oct 2026 - chat widget layout shift (field CLS). Phones fail Core Web Vitals on CLS (p75 ~0.2 site-wide in CrUX for months). Biggest cause found: HubSpot's chat container is fixed to the bottom-right corner and changes size - 100x96 launcher to 282x253 when the welcome message pops up (~5 s after load), and to full screen when a visitor opens the chat. Its top-left corner moves, so Chrome scores it as a layout shift: 0.088 per page view at 360x640 (0.044 at 412x850), on every page. Taps happen inside the chat iframe, so the parent page never sees the input and the open/close shifts count too. Fix: whenever the container's size changes it is made transparent for 400 ms (Chrome doesn't score shifts of invisible elements), then shown again at its new size. Tested on live io1001 at 360x640 in a cookie-less frame: the 0.088 shift no longer appears. The chat itself is unchanged - it just appears 0.4 s later at each resize. Relies on HubSpot's container id; if that changes this does nothing (no error). */ function cloakChatResizes() { var ID = 'hubspot-messages-iframe-container'; function watch(c) { if (c.getAttribute('data-bb-cloak')) return; c.setAttribute('data-bb-cloak', '1'); var last = c.offsetWidth + 'x' + c.offsetHeight, timer = null; new MutationObserver(function () { var size = c.offsetWidth + 'x' + c.offsetHeight; if (size === last) return; last = size; c.style.setProperty('opacity', '0', 'important'); clearTimeout(timer); timer = setTimeout(function () { c.style.removeProperty('opacity'); }, 400); }).observe(c, { attributes: true, attributeFilter: ['style', 'class'], subtree: true, childList: true }); } var found = document.getElementById(ID); if (found) { watch(found); return; } if (!document.body || !('MutationObserver' in win)) return; var mo = new MutationObserver(function () { var c = document.getElementById(ID); if (c) { mo.disconnect(); watch(c); } }); mo.observe(document.body, { childList: true }); setTimeout(function () { mo.disconnect(); }, 30000); } function loadWidget() { var api = win.HubSpotConversations; if (api && api.widget && api.widget.status && api.widget.status().loaded) return; try { cloakChatResizes(); } catch (e) {} if (api && api.widget) api.widget.load(); } function onFirstInteraction() { if (done) return; done = true; EVENTS.forEach(function (type) { win.removeEventListener(type, onFirstInteraction, { passive: true }); }); var start = function () { if (win.HubSpotConversations) loadWidget(); else (win.hsConversationsOnReady = win.hsConversationsOnReady || []).push(loadWidget); }; if ('requestIdleCallback' in win) win.requestIdleCallback(start, { timeout: 1500 }); else setTimeout(start, 200); } EVENTS.forEach(function (type) { win.addEventListener(type, onFirstInteraction, { passive: true }); }); })(window);

91̽»¨

Skip to main content
ioTracker Cells

Discover

ioTracker Cells

opti-ox powered human iPSC-derived cells with built-in fluorescence 

Easily visualise, track, and isolate human cells in your assays

  • No additional labelling
  • No engineering of reporter iPSC lines
  • No complex iPSC differentiation protocols 

ioCells are for research use only.

How ioTracker Cells can benefit your workflows

Co-culture-grey_circle

Track cell behaviour in multi-cell cultures

Assess cell distribution and morphology in co- and 3D cultures to gain insights into complex intercellular interactions.

Quick-grey_circle

Save valuable time at the lab bench

Receive cryopreserved cells expressing a fluorescent protein, ready for experiments.

Functional-grey_circle

Switch to antibody-free cell sorting

Simplify sorting workflows, preserve cell health, and reduce variability.

ioTracker Cells allow you to

Conduct live-cell imaging in multi-cell cultures  
Leverage marker expression to track cellular interactions dynamically, offering real-time data critical for understanding cellular behavior in complex systems.

Simplify cell sorting without antibody staining  
Isolate ioTracker Cells from multi-cell cultures, eliminating the need for antibody-based sorting. 

Gain deeper insights through high-throughput imaging
Obtain detailed cellular morphology data using high-content imaging platforms, streamlining drug development and disease modelling.

Explore cell type distribution in 3D in vitro models
Visualise successful integration into organoids, assembloids, and 3D spheroids without the need for fixation or staining.

Visualise transplanted hiPSCs in vivo
Assess cell type integration and maturity post-in vivo transplant without antibody staining.

tracker-cells

Unlock live-cell imaging to assess cell type co-culture integration in real-time

 

gfp-microglia-live-cell-imaging-overlay NO ZOOM

Track co-cultures in real time with ioTracker Cells. GFP ioMicroglia (io1094) assimilate with neurons in co-culture, as seen with live-cell imaging.

Get started with co-culturing GFP ioMicroglia and ioGlutamatergic Neurons

 

ioGlutamatergic-Neurons-and-GFP-ioMicroglia-co-culture-diagram-26Nov25

GFP ioMicroglia can be co-cultured with ioGlutamatergic Neurons to provide an neuroinflammatory component to in vitro models and support neuronal interactions.

Why did we develop this product?

An image of Sejla Salic-Hainzl

Sejla Salic-Hainzl

Vice President of R&D | 91̽»¨

"Our ioTracker Cells combine the power of ioCells with fluorescent protein expression to enable tracking of cellular behaviour in complex experiments. These cells highly benefit scientists by streamlining experimental workflows while reducing both time and costs. This portfolio marks the beginning of a new generation of tools designed to advance drug discovery research".

All ioCells are powered by opti-ox 

Our deterministic cell programming technology opti-ox overcomes limitations of current cell generation technologies. With transcription factors precisely switched on in every stem cell, entire cultures consistently and rapidly convert into a defined cell type.

Consistent
Our platform ensures consistency between every lot of cells, overcoming the challenge of data reproducibility.

Defined
Every ioCell has its identity characterised by ICC, RT-qPCR and RNA-Seq at minimum.

Scalable
We can make billions of consistently programmed cells, surpassing the demands of industrial workflows.

optiox-mobile-gif-100colours-6mb

Don’t see what you’re looking for? 

Access our platform to generate custom ioTracker Cells in any ioWild Type Cell background to precisely answer your drug discovery or disease research questions. 

custom-cells-half

ioCells catalogue

Human iPSC-derived cells

powered by opti-ox

Consistent. Defined. Scalable.

bitbio-cell_catalogue_header-with-tracker-Desktop-2500x1664

Related pages

Our platform Discover the cell coding platform behind our cells
Product catalogue See the range of human iPSC-derived cells for research and drug discovery
Resources Explore our latest scientific insights, webinars, blogs and video